7

Subgit を使用して Subversion リポジトリにアクセスしています。これはうまく機能しますが、特に通常の Subversion クライアントを使用してリポジトリにアクセスするユーザーと通信する場合、特定の変更セットがどの SVN リビジョンに対応するかを知りたいと思うことがあります。

gitSVN リビジョン番号をローカル リポジトリのどこかで検索できますか?

4

1 に答える 1

9

はい、簡単にできます。.git/configクローンされた Git リポジトリのファイルを変更して追加するだけです。

[remote "origin"]
...
fetch = +refs/svn/map:refs/notes/commits

SubGit bookgit fetchの「推奨されるクライアント側 Git 構成」セクションで説明されているように、オプションを選択してから実行します。その後、複製されたリポジトリでコマンドを実行すると、リビジョン番号が表示されます。git log

サーバー側でそれを行いたい場合 (およびプロジェクトで他の目的に Git ノートを使用しない場合) は、サーバー マシンで実行できます。

$ git update-ref refs/notes/commits refs/svn/map

1 回限りの Git ノート作成用、またはそのリポジトリで実行できます

$ cd refs
$ mkdir notes
$ echo "refs: refs/svn/map" > notes/commits

refs/notes/commits が SubGit によって更新され、最新のリビジョン <-> SHA-1 マッピングを格納する refs/svn/map に従うようにします。その後git log、サーバーにはリビジョン番号も表示されます。

スクリプトでリビジョンを SHA-1 ハッシュに変換する場合 (上記の方法で Git ノートを設定した後)、このコマンドを使用できます。

$ git log --format="%H %N" --all

行解析関数と組み合わせて。たとえば、まれなケース (例: "r$REV branch" という名前のブランチ名) をあまり気にしない場合、SHA-1 と変更されたブランチ名をリビジョン REV で取得するには、実行できます

$ git log --format="%H %N" --all | grep "r$REV "

同様に、ここで SHA-1 またはブランチ名を grep できます。

于 2015-01-19T11:20:44.157 に答える