0

で初期化されたローカルのgitリポジトリがあります

git svn init http://abc.xxx/svn/trunk/topic_A

次に、ローカル ブランチ topic_B を作成し、svn URL http://abc.xxx/svn/branches/topic_Bの下に配置します。svn ブランチは svn クライアントで作成されます。したがって、git で svn ブランチを作成する必要はありません。

これを追加するには、.git/config ファイルをどのように変更すればよいですか?

私は追加しようとしました:

[svn-remote "topic_B"]
url = https://abc.xxx/branches/topic_B/
fetch = :refs/remotes/topic_B

[branch "topic_B"]
remote = .
merge = refs/remotes/topic_B

ただし、コンソールから git を使用する場合git commitは、プッシュ先として常にトランク URL を選択しますか?</p>

また、sourcetree では、新しく追加されたリモート svn ブランチを GUI で取得するのが難しいようです。

また、Subversion のプッシュ先を変更する方法はないようです。

誰でも正しい方法を理解できますか?どうもありがとう!

4

2 に答える 2

1

の名前を別の名前に変更するだけ[svn-remote "topic_B"]で、衝突が発生しなくなります。

また、Subversion のプッシュ先を変更する方法はないようです。

別のオプションは、設定ファイルの代わりにコマンドライン経由で設定することです:

git config --add svn-remote.topic_B.url ...
git config --add svn-remote.topic_B.fetch :refs/remotes/topic_B

これにより、質問と同じ出力が生成されます。

于 2016-03-31T02:23:12.100 に答える
0

まあ、これが答えだと思いますが、それでも完全な解決策ではありません。そして、私が実際に何をすべきかを行う方法を見つけたと思います:

  1. @CodeWizardが言ったようにsvn-remoteをgit config;
  2. git svn fetch topic_B;
  3. git branch現在のブランチに新しいブランチを作成するために 使用します。
  4. 現在のブランチを topic_B にリベースします。
  5. git svn dcommit. 今回は、正しい svn URL にプッシュされます。

これはアイデアの簡単なデモンストレーションにすぎません。実際の問題は常にこれよりも複雑です。例えば、topic_B が空のディレクトリとして作成されていない場合、SVN のカスタムとして、branchs/topic_B ディレクトリにトランクをコピーすることによって行われることがよくあります。そして、リベースのプロセスは大変です。

これは、読み取りツリーまたはチェリーピッキング、またはパッチを適用することで解決できると思います。たとえば、サブディレクトリのみまたは少数のファイルのみを変更する必要がある場合です。ただし、私はこれらのコメントにあまり慣れていないため、誰かが既存のソリューションを参照できるといいでしょう

于 2016-04-01T01:10:28.003 に答える