2

次のような Subversion リポジトリがあるとします。

/original/0.1
/original/0.2
/variantA/trunk
/variantA/branches/who/branch_for_xxx
/variantA/branches/she/branch_for_yyy
/variantB/trunk
/variantB/branches/who/branch_for_zzz
(... 30 or 40 alike)

ここで、variantA と variantB は元のソフトウェアのフォークです。

このリポジトリを分散バージョン管理システムに移行する方法を探しています:

  • 必ずしも単一のコマンドではありません
  • よく知られている分散バージョン管理システムのいずれか
  • DVC にそれらのブランチを考えさせる: /official/{0​​.1,0.2} ツリー、/variantA/trunk ツリー、...
  • それらのツリーの継承関係を DVC に認識させる
4

4 に答える 4

3

Mercurial には、必要な処理を行う変換拡張機能が付属しています。Mercurial の Web サイトで変換拡張機能の詳細を参照してください。

于 2009-05-26T15:04:56.713 に答える
2

Git については、 http: //github.com/guides/import-from-subversionの手順を参照してください。

前回手動で行ったときは、以下のコマンドを使用しました。(これは、タグまたはブランチを使用しないプロジェクト用でした。タグまたはブランチがある場合、 svn2gitを使用すると、git-svn よりも良い結果が得られる可能性があります。)

cat "mysvnusername = Me Myself <me.myself@somewhere.com>" >> authors.txt

svnserve --daemon --foreground --root <SVN-REPO-PARENT-DIR>
git svn clone --stdlayout --authors-file=authors.txt --no-metadata svn://localhost/<SVN-REPO-NAME>

# push to a public repo and clone from there, to get push/pull working easily
cd <SVN-REPO-NAME>
git remote add origin git@github.com:mygithubusername/<GIT-REPO-NAME>.git
git push origin master
cd ..
rm -rf <SVN-REPO-NAME>

git clone git@github.com:mygithubusername/<GIT-REPO-NAME>.git

ただし、非標準の SVN リポジトリ レイアウトがあるため、 git svn cloneの --stdlayout の代わりに --trunk、--tags、および --branches パラメータを指定する必要があります。

リポジトリの継承履歴全体を表すには、非標準の階層の代わりに標準のフラット リポジトリ レイアウトになるように、リポジトリの順序を変更してみてください。

/branches/original-0.1
/branches/original-0.2
/branches/variantA-trunk
/branches/variantA-who-branch_for_xxx
/branches/variantA-she-branch_for_yyy
/branches/variantB-trunk
/branches/variantB-who-branch_for_zzz
...

これにより、インポート ツールがリポジトリを理解しやすくなります。それらがインポートされたら、新しいリポジトリ内でそれらをより適切に再編成できます。

また、Git 1.6.x はディープ クローニングをサポートしていると聞きました。これにより、ブランチの階層を深く調べるgit svn cloneなどのパラメーターを指定できます。使用例については、この投稿--branches=branches/*/*を参照してください。

于 2009-05-08T16:39:37.710 に答える
0

Gitを DVCS の候補として検討する場合、Ruby スクリプトsvn2gitが必要なことを実行します。

質問の詳細: Git-Svn を使用した非標準 Svn リポジトリのクローン作成

于 2009-05-08T16:35:59.060 に答える