1

SVNプロジェクトにrevision.txtファイルがあります。

基本的に、コミット後に作業コピーが持つリビジョン番号を使用してsvn ciを呼び出すと、このファイルが自動的に更新されるようにしたいと思います。

例えば:

  1. Revision.txtには「10」が含まれています
  2. 作業コピーに変更を加えます(revision.txtではなく他のファイル)
  3. svn ci
    • フックスクリプトを起動する
    • 次のリビジョン番号を読む
    • 更新revision.txt
    • 変更をコミットします(revision.txtも)
  4. 現在、revision.txtはリビジョン番号11ですでにコミットされています

私はフックスクリプトで成功せずに試しました。コミットする前に、次のリビジョン番号を取得してトランザクションを更新できません。

次に、「auto-props」を試してみてください。ただし、変更されたファイルでのみ機能します。望ましい解決策は、フックスクリプトのみを使用し、リビジョンと更新をチェックするラッパースクリプトを使用しないことです。

可能です ?例は大歓迎です

4

3 に答える 3

2

競合状態のため、コミットする前に次のリビジョン番号を推測することはできません - 事後まで、他の誰かがあなたの前に侵入していないことを保証することはできません。また、svn コミット フックでファイルを変更するのも非常に悪い形式です。作業コピーは、サーバーから「うまくいきました」または「失敗しました」のみを取得し、「うまくいきましたが、ファイルがこれらのコンテンツを持っている方法...」

これは何のために必要ですか?おそらく、達成しようとしているものを取得する別の方法があります。

「 svn info」を使用し、「 Revision: 」行をファイルにフィルタリングすることで、必要になる直前に rev.txt ファイルを自動生成できます。

于 2010-09-03T15:11:26.590 に答える
0

すでにsvn:keywordsに基づいて述べたように、変更されたファイルのみを変更することができます。しかし、必要なのは、そのような種類の情報を処理するビルドシステム(ビルドサーバー/継続的インテグレーションサーバーなど)だと思います。

于 2010-09-03T14:19:45.053 に答える
0

キーワード置換はあなたが望むものに最も近いものですが、それはプロジェクトではなくファイルの最後の変更を与えるため、実際には機能しません. この問題に関する Subversion FAQから:

必要な情報 (作業コピーのリビジョン) は、コマンドsvnversionから入手できます。パスを指定すると、作業コピーのリビジョン レベルに関する情報が得られます (詳細については、svnversion --help を参照してください)。

ソース自体に必要な情報を取得するために、ビルドまたはリリース プロセスに組み込むことができます。

于 2010-09-03T14:23:44.947 に答える