327

問題

Subversion リポジトリから git-svn を使用して浅いコピーを作成するにはどうすればよいですか? たとえば、最後の 3 つのリビジョンだけをプルするにはどうすればよいですか?

オプションを使用すると、このgit cloneコマンドは Git リポジトリから最後の n リビジョンを取得できます--depth。つまり、リポジトリの浅いコピーを取得します。例:

git clone --depth 3 git://some/repo myshallowcopyrepo

git-svn に同様のオプションはありますか?

これまでの私の発見

これまでのところ、プルするリビジョンが-rNどこにあるかというオプションしか見つかりませんでした。N例:

git svn clone -rN svn://some/repo

ドキュメントによると、 を使用する可能性があります-r$REVNUMBER:HEAD。エラーメッセージを返した最後の3つのリビジョンを取得するために、次のことを試しました。

$ git svn clone --prefix=svn/ -s -rHEAD~3:HEAD http://some/svn/repo .
revision argument: HEAD~3:HEAD not understood by git-svn

そのため、3 番目で最後のリビジョン 534 の実際の番号に置き換えHEAD~3ました。これは機能しましたが、最初に 3 番目で最後のコミットのリビジョン番号を把握する必要があります。

$ git svn clone --prefix=svn/ -s -r534:HEAD http://some/svn/repo .

ドキュメンテーション

gitクローン

git-svn

4

3 に答える 3

95

巨大なサブバージョン ツリーから限られた数のリビジョンを取得するために、以下を頻繁に使用していることに気づきました (まもなく svn リビジョン 35000 に達します)。

# checkout a specific revision
git svn clone -r N svn://some/repo/branch/some-branch
# enter it and get all commits since revision 'N'
cd some-branch
git svn rebase

ブランチの開始場所を見つける良い方法は、svn logit を実行して、ブランチの最初のブランチ (実行時に最後にリストされたもの) を見つけることです。

svn log --stop-on-copy svn://some/repo/branch/some-branch

これまでのところ、すべてのブランチを追跡するのに苦労する価値があるとは思っていません。クローンを作成するのに時間がかかりすぎて、svn と git がうまく連携できません。私はパッチ ファイルを作成し、別の svn ブランチの git clone に適用する傾向があります。

于 2010-02-27T19:17:32.553 に答える