Svnリポジトリを追跡するgitリポジトリがあります。 --stdlayout
を使用してクローンを作成しました。
git checkout -b foobar
経由で新しいローカルブランチを作成しました
今、このブランチをsvnリポジトリの…/branches/foobar
に配置したいです。
それについてどうすればいいですか?
(多くの調査テキストを抜粋。気になったら質問履歴を参照)
git v1.6.1以降、git svn branch
利用可能です。
Gitドキュメントから:
branch SVNリポジトリにブランチを作成します。 -m、--message コミットメッセージを指定できます。 -t、--tag git svn init。 で指定されたbranches_subdir の代わりにtags_subdirを使用してタグを作成します。
Gitの以前のバージョンは、svnブランチを作成する方法を提供していません。
この質問は少し前に回答されましたが、それを読んだ後、特定の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 にコミットしています...
@kch私はちょうど(2008年12月7日)gitのv1.6.1-rc1タグをコンパイルしましたが、これにはgit svn branchコマンドとそのドキュメントが含まれています。したがって、gitのv1.6.1リリースには(できれば)このコマンドが含まれている必要があります。