197

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

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

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

どうすればいいですか?

(多くの調査テキストを切り取りました。気になる場合は質問履歴を参照してください)

4

3 に答える 3

285

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

kch が答えたように、 を使用しますgit svn branch。完全な例を次に示します (ドライランで-nテストすることに注意してください)。

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

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

r8914 のhttps://scm-server.com/svn/portal/trunkを 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

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

git svn dcommit -n

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

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

于 2009-12-15T23:00:22.247 に答える
65

git v1.6.1 の時点git svn branchで利用可能です。

git ドキュメントから:

    ブランチ
        SVN リポジトリにブランチを作成します。

        -m, --メッセージ
            コミット メッセージを指定できます。

        -t, --tag
            branch_subdir の代わりに tags_subdir を使用してタグを作成する
            git svn init 中に指定されます。

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

于 2008-11-05T20:36:59.710 に答える
4

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

于 2008-12-08T01:05:34.347 に答える