2012-03-01 14 views
3

注:この質問はgit-svn branching質問とNOTで重複しています。私たちのsvnレポをチェックアウトしたときに、特別何もせずに.git/configにブランチを追加するにはどうすればいいですか?

I以下.git/configにファイルだ:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    autocrlf = false 
[svn-remote "svn"] 
    url = svn+ssh://my_server/opt/subversion/main/trunk 
    fetch = :refs/remotes/git-svn 
[color] 
    ui = true 

私はメッセージを取得のgitのsvnブランチを使用しよう:

Unknown branch destination 

この理由は、枝が.git/configにに欠落していることです。私はトランクに平行してディレクトリに行くために枝を欲しがっています。だから、例えばfooのという名前のブランチは、このパスで発見されなければならない:

svn+ssh://my_server/opt/subversion/main/branches/foo 

私はGitのチェックアウト-b fooのでのgitの内部で作られた別の支店で働いていた場合、私はその後、作成したいですSubversionではブランチ:

git svn branch foo 

どのように私はこの作業を取得するために.git/configにを更新していますか?私は、次ののgitからのsvnブランチfooののようなメッセージを期待されるだろう:

Copying svn+ssh://my_server/opt/subversion/main/trunk at r8507 to svn+ssh://my_server/opt/subversion/main/branches/foo... 

編集:私はsvn-remoteセクションを更新した場合はどう :

[svn-remote "svn"] 
    url = svn+ssh://my_server/opt/subversion/main 
    fetch = trunk:refs/remotes/git-svn 
    branches = branches/*:refs/remotes/branches/* 

それはそのように見えます私がやろうとしたときにうまくやっているようだ。git svn rebasegit svnブランチ。私がこの新しいの設定でしばらく働いていれば、これは実用的な解決法ですか、それとも私は大混乱でしょうか?

+0

'-s'スイッチを使って最初のgit-svnクローンを作成する必要があると思います。 – knittl

+0

私はクローンが時間の経過とともにどのように行われたかという正確な記憶はありません。しかし、リポジトリは膨大で、.git/configを "正しい"状態にするために新しいクローンを作成する必要はありません。 – UlfR

答えて

3

svn-remote.svn.urlがリポジトリのルートではなく、複数のブランチをフェッチするために問題があります。あなたはそれを変更してフェッチを実行することができますが、git-svnがそのような場合に既に持っているデータを使用できるかどうかはわかりません。いずれにしても、再クローニングよりも悪くはありません。

設定は次のようになっています。クローン作成するときは、-t trunkオプションを使用して取得します。

[svn-remote "svn"] 
    url = svn+ssh://my_server/opt/subversion/main 
    fetch = trunk:refs/remotes/trunk 

デフォルトでは、トランクはリモコンに直接移動しますが、あなたはまた、他のリモコンを持っている場合クリーンである間にいくつかの名前を挿入することができます。私は通常refs/remotes/svn/trunkです。

あなたが-bオプションを提供する場合は、

branches = branches/*:refs/remotes/branches/* 

を持っていますが、あなたはしなかった場合、あなたはいつでも手動で追加することができます。これは、ブランチをインポートしてブランチを作成できるようにするために必要なものです。

最終-Tオプションでは、再びいつでも後から追加することができます

tags = tags/*:refs/remotes/tags/* 

を追加します。ただし、svnタグはgitタグとして動作しません。ブランチとして動作します。

-sクローン化のオプションは、-t trunk -b branches -T tagsの省略形です。

関連する問題