1. ホーム
  2. ギット

[解決済み】Subversion リポジトリから最後の n リビジョンを git-svn でクローンする方法は?

2022-05-09 13:29:55

質問

問題点

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

そこで HEAD~3 を、3番目だが最後のリビジョンの実際の番号である534に変更しました。これはうまくいったのですが、そのためにはまず3番目で最後のコミットのリビジョン番号を知る必要があります。

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

ドキュメンテーション

git-clone(ギットクローン

git-svn

解決方法は?

Git-SVN でシャロークローンを指定する最もシンプルな方法は、クローンを開始する SVN リビジョン番号を指定することであることは既にご存知でしょう ( -r$REV:HEAD ).

例えば git svn clone -s -r1450:HEAD some/svn/repo

Gitのデータ構造は、有向無サイクル・グラフ(DAG)のポインタに基づいています。 n コミットすることができます。 しかし SVN (そして Git-SVN) では、リビジョン番号を自分で見つけなければなりません。