1

タスク/問題は次のとおりです。SVN を使用して適切な開発方法論に従いたいと考えています。プロジェクトは、PHP、Apache サーバー、および Linux OS になります。プロセスは次のようになります

  1. 開発者は、ローカル コピー (ローカル マシン) でコードの作業を行います。ローカル コピーは SVN リポジトリ (独自の svn リポジトリ) にリンクされています。
  2. 完了したタスクごとに、SVN コミットがあります。
  3. 同じSVNリポジトリからのコードを持つ中間層サーバーがあります。このレイヤーは、リポジトリから SVN の更新を取得し、更新されたファイルをテスト サーバーに転送するためにのみ使用されます。

注: 複数のプロジェクト用に複数のテスト サーバーがあります。中間層はすべてのプロジェクトで共通です。更新されたファイルの転送先のテスト サーバーは、ここで決定されます。

ステップ 3 のヘルプが必要です。

さまざまなプロジェクトの更新されたすべてのファイルのリストを取得/維持する方法。次に、ソース ディレクトリ (中間層) と宛先ディレクトリ (テスト サーバー) を選択するシェル スクリプトを実行し、テスト サーバー上の更新されたすべてのファイルを rsync します。すべてのサーバーは同じネットワーク上にあります。

4

1 に答える 1

0

H2CO3 さんのコメントには同意せざるを得ません。そうは言っても、あなたが必要とするものを達成することsvn可能です:

svn merge -r BASE:HEAD --dry-run .

前回以降に更新されたすべてのファイルのリストが表示されますsvn updatesedawk、またはの助けを借りて、perlこれを で消費するのに適したインクルード リストに簡単に変更できますrsync。役に立つかもしれないが、はるかに冗長で解析が難しい別の同様のコマンドを次に示します。

svn log -r BASE:HEAD -v

rsyncただし、ここでの仕事に適したツールであるかどうかは疑問です。svnテストサーバーで直接使用しないのはなぜですか? なぜ真ん中にサーバーが必要なのですか?すべてのサーバーが同じネットワーク上にあると既におっしゃいましたが、記載していない追加の要件があるのではないでしょうか?

最後に、 をご覧になることを強くお勧めしますgit-svn。これを支援するため優れた紹介記事がオンラインにたくさん あります。私は 1 年以上、ほとんど .NET に行き詰まっていたチームとのコラボレーションに喜んで使用しました。(私も最終的にそれらをに変換しましたが、それは別の話です:-) gitgit-svnsvngit

于 2012-08-31T01:01:08.677 に答える