web-dev-qa-db-ja.com

git-svn:git経由で新しいsvnブランチを作成するにはどうすればよいですか?

Svnリポジトリを追跡するgitリポジトリがあります。 --stdlayoutを使用してクローンを作成しました。

git checkout -b foobar経由で新しいローカルブランチを作成しました

今、このブランチをsvnリポジトリの…/branches/foobarに配置したいです。

それについてどうすればいいですか?

(多くの調査テキストを抜粋。気になったら質問履歴を参照)

194
kch

git v1.6.1以降、git svn branch 利用可能です。

Gitドキュメントから:

 branch 
 SVNリポジトリにブランチを作成します。
 
 -m、--message 
コミットメッセージを指定できます。
 
 -t、--tag 
 git svn init。
で指定されたbranches_subdir 
の代わりにtags_subdirを使用してタグを作成します。

Gitの以前のバージョンは、svnブランチを作成する方法を提供していません。

64
kch

この質問は少し前に回答されましたが、それを読んだ後、特定のgit svn branchコマンドの例を追加し、典型的なワークフローに関連付けるのに役立つかもしれません。

Kchが答えたように、git svn branchを使用します。完全な例を次に示します(テストするための予行演習の-nに注意してください):

git svn branch -n  -m "Branch for authentication bug" auth_bug

これがうまくいけば、サーバーは次のような答えを返します:

https://scm-server.com/svn/portal/trunk をr8914で https://scm-server.com/svn/portal/branches/auth_bug にコピーしています...

そして、-nスイッチなしで、サーバーはおそらく次のようなものを追加します:

可能な分岐点が見つかりました: https://scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug =、8914

ブランチの親が見つかりました:(refs/remotes/auth_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

Do_switchで親をフォローする

正常にフォローされた親r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

(refs/remotes/auth_bug)

その最良の部分は、次のようにリモートブランチに基づいてローカルブランチを作成できるようになりました。

git checkout -b local/auth_bug auth_bug

つまり、「auth_bugという名前のローカルブランチをチェックアウトして作成し、リモートブランチ(最後のパラメーター)auth_bug

--dry-run-n)でdcommitを使用して、ローカルブランチがそのリモートブランチで動作することをテストします。

git svn dcommit -n

また、SVNサーバーは新しいブランチ名で応答する必要があります。

https://scm-server.com/svn/portal/branches/auth_bug にコミットしています...

280

@kch私はちょうど(2008年12月7日)gitのv1.6.1-rc1タグをコンパイルしましたが、これにはgit svn branchコマンドとそのドキュメントが含まれています。したがって、gitのv1.6.1リリースには(できれば)このコマンドが含まれている必要があります。

4
Bryan J Swift