web-dev-qa-db-ja.com

svn repoを既存のgit repoに追加しますか?

Git svn initを使用してgitでsvn repoを追跡できることは知っていますが、これは新しいリポジトリを作成したい場合のためのものです。

私の状況は、現在既存のgitリポジトリがあり、現在のgitリポジトリのリモートブランチにして、svnリポジトリのトランクを追跡したいというものです。

助言がありますか?

43
rip747

昨夜検索したところ、ようやく答えが見つかりました。

http://i-nz.net/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/

既存のgitリポジトリにsvnブランチを追加するには、実際に.git/configファイルにアクセスして手動で編集する必要があるようです。したがって、これらの指示に従って、各ブランチのエントリを追加する必要があります。

23
rip747

1).git/configに新しいブランチを定義します。

[svn-remote "release-branch"]
        url = svn+ssh://[email protected]/source/branches/mono-2-2/mcs
        fetch = :refs/remotes/git-svn-release-branch

2)SVNブランチをインポートします。 SVN_BRANCHED_REVISIONは、SVNで分岐が発生したときのリビジョンです。

[~]$ git svn fetch release-branch -r SVN_BRANCHED_REVISION

3)ローカルGitブランチをリモートブランチに接続します。

[~]$ git branch --track release git-svn-release-branch

5)チェックアウトと更新

[~]$ git checkout release
[~]$ git svn rebase
11
Kun Ling

この質問の回答( https://stackoverflow.com/a/840411 および https://stackoverflow.com/a/7592152 )は、Git以降は機能しませんv1.8.3.2( https://stackoverflow.com/a/19833311 )。代わりにこれを行うことができます:

1).git/configに新しいブランチを定義します。

[svn-remote "release-branch"]
   url = svn+ssh://[email protected]/source/branches/mono-2-2/mcs
   fetch = :refs/remotes/git-svn-release-branch

2)SVNブランチをインポートします。 SVN_BRANCHED_REVISIONは、SVNで分岐が発生したときのリビジョンです。

$ git svn fetch release-branch -r SVN_BRANCHED_REVISION

3)ブランチを作成し、ローカルGitブランチをリモートブランチにフックします。

$ git checkout -b release refs/remotes/git-svn-release-branch

5)更新

$ git svn rebase
4
Elmer

SVN_BRANCHED_REVISIONを見つけるには、次のようにします。

$ svn log --stop-on-copy PATH_TO_BRANCH
3
Ian Mariano

これは実際にはgit svn initが行うことです-他のgit svnコマンドは単に物事をマージするなどしています。git svn initやgit svn cloneでクローンされたSVNリポジトリのレイアウトをコピーすることができます。ローカルブランチにプルしたり、フェッチしたりします。 git svnのmanページを少し時間をとってみてください。何かをまとめるのにそれほど問題はないはずです。もしそうなら、freenode上の#gitは良いリソースです。だから、これはあまり問題なくできるはずですが、私はそれをすべて行う方法を正確に知りません。

2
jeffcook2150