14

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

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

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

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

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

svn log -r <revision> ...

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

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

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

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

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

4

5 に答える 5

10

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

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

于 2009-10-27T21:11:21.217 に答える
4

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

詳細はhttp://svnbook.red-bean.com/en/1.1/re49.htmlにあります。

于 2009-10-27T21:13:50.247 に答える
4

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

以下がとても参考になると思いました。

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

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

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

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

于 2015-04-07T09:31:56.927 に答える
2

をご覧になることをお勧めします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/

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

于 2009-10-27T21:08:08.167 に答える
1
svn log url -l limitNumber - r fromReversion:toReversion

たとえば、次の古い(小さい)復帰( version )を見つけたい場合

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

U が次に新しい (大きい) reversion( version ) を見つけたい場合は、toReversion より大きい fromReversion

  svn log url -l 4 -r someVersion:head
or   
  svn log url -l 4 -r 3:99
   fromReversion lower than toReversion
于 2013-05-13T03:51:42.033 に答える