web-dev-qa-db-ja.com

SVN:指定されたパスのリビジョン番号のリストを取得することは可能ですか?

リポジトリに接続し、コミットのリストをダウンロードしてローカルに保存するPHPツールを作成しています。ただし、特定のリポジトリが巨大であり、ログを取得すると長時間待機する可能性があるためです。時間とタイムアウト/エラーの可能性があるため、非同期リクエストを使用して各コミットメッセージをダウンロードしたいと思います。

したがって、改訂履歴には開始点と終了点があり、次のようにすべてのログを取得できます。

svn log -r <from_revision>:<to_revision> <REPO_URL>

...そして、ダウンロードに時間がかかり、解析に長い時間と多くのリソースがかかり、保存に長い時間がかかるほど巨大なXMLファイルになってしまう可能性があります。

開始点と終了点がわかっている場合は、for()ループを作成して、リビジョンを1つずつ取得できます。

svn log -r <revision> ...

ただし、特定のパスにどの特定のリビジョンが存在するかわからないため、エラーが発生します。更新中にそのエラーを無視するようにアプリケーションを作成することはできますが、それは厄介なハックであり、とにかくリクエストを投稿して応答を待ちます-これはまったく良くありません。

だから、私はこのようなものが必要です:

  • 「このパスのリビジョン番号のリストを教えてください」、または:
  • 「このパスのリビジョン番号のリストを、との間で教えてください

そうすれば、リポジトリパスの有効なリビジョンの配列を作成し、それらを1つずつ取得できます。

事前に感謝し、すべての提案を歓迎します。

14

私はあなたの最善の策は次のことをすることだと思いますsvn log -l 100 0:{$newest} .\指定されたディレクトリまたはファイルの最初の100個のログを取得します。次に、返された最後のリビジョン番号を読み取り、次の100を要求しますsvn log -l 100 {$last_ret_log}:{$newest} .\

そうすれば、リクエストごとに99の新しいログエントリを取得できますが、すべてを取得することはできません。

10
Mike Valstar

私はちょうど同様の結果を得ようとしています。特定のブランチのすべてのリビジョン番号が必要です。

以下は非常に役立つと思いました。

svn log <svn_server_path> | grep "^r[0-9]\+ | " | cut -d' ' -f1 | cut -c2- > revisions.csv

これにより、すべてのリビジョン番号が別々の行にあるファイルが得られます。

うまくいけば、あなたや他の誰かがそれが役立つと思うでしょう。

私たちのリポジトリには25000以上のリビジョンがあり、このファイルを作成するのに数秒かかります。

4
Jayd

Subversionサーバーのリポジトリツリーにアクセスできる場合は、svnlook historyを使用してリビジョン番号のリストを取得できます。

詳細については、 http://svnbook.red-bean.com/en/1.1/re49.html を参照してください。

4
Trumpi

svn listを確認することをお勧めします。だからあなたの目的のために:


$ svn list --verbose file:///var/svn/repos
     16 sally         28361 Jan 16 23:18 README.txt
     27 sally             0 Jan 18 15:27 INSTALL
     24 harry               Jan 18 11:27 examples/

これは、ファイルの最後の(ヘッド)リビジョンを一覧表示します。

2
choudeshell
svn log url -l limitNumber - r fromReversion:toReversion

たとえば、次の古い(小さい)復帰(バージョン)を見つけたい場合

   svn log url -l 4 -r someVersion:1
 or
   svn log url -l 4 -r 99: 3

uが次のより新しい(より大きな)reversion(バージョン)を見つけたい場合は、toReversionよりも大きいfromReversion

  svn log url -l 4 -r someVersion:head
or   
  svn log url -l 4 -r 3:99
   fromReversion lower than toReversion
1
phil