問題
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 .
ドキュメンテーション
ベストアンサー1
Git-SVN でシャロー クローンを指定する最も簡単な方法は、クローンを開始する SVN リビジョン番号を指定することです ( -r$REV:HEAD
)。
例えば:git svn clone -s -r1450:HEAD some/svn/repo
Git のデータ構造は、有向非巡回グラフ (DAG) 内のポインタに基づいているため、コミットをさかのぼって確認するのは簡単ですn
。ただし、SVN (つまり Git-SVN) では、リビジョン番号を自分で見つける必要があります。