2009-06-10 19 views
4

私は次のような状況の解決策を探しています。リビジョン付きSVNエクスポート "Mark"

私たちはSubversionを使用していますが、チェックアウトを使用する開発環境の他に、できるだけ本番環境に近いテスト環境があります。

したがって、SVNエクスポートを使用して環境を更新するように設定しました。しかし、最新のリビジョンだけが必要なので、どのリビジョンがエクスポートされたのか分かりません。

エクスポートされたリビジョンを示す、生成されたファイルを追加するなど、このエクスポートを「マークする」方法はありますか?

答えて

3

あなたができることは、既知のリビジョンからエクスポートしていることを確認し、そのリビジョン番号を次の場所に書き込んでください(タグをエクスポートする必要はありません)。エクスポートのテキストファイル。 svnversionコマンドは、作業ディレクトリのリビジョン番号を通知します。そのため、svn updateを最新のバージョンにしてからsvn exportを配備先に、次にsvnversionをエクスポートと同じ場所にあるテキストファイルにリダイレクトします。それ以来誰かが新しいコードをコミットしたとしても、リビジョン番号は更新時点のリビジョンになります。

もちろん、上記のプロセスをシェルスクリプトなどで自動化したいと思うでしょう。

+1

感謝を。しかし、私の問題は本当に解決されません。状況は、外部の開発者がチェックアウトからコミットすることです、私はエクスポートを実行する更新スクリプトを実行します。私はsvn exportコマンドの出力をキャプチャしようとすることができることを理解しました。最後に「Exported revision ...」と表示されます。 –

1

エクスポートの直前(または後)にsvn info /path/to/repositoryを実行できますが、変更していないことを確認するためにロックする必要があります。

代わりに、同様に、シェルスクリプトを通して、あなたのコメントや配管に記載された技術を使用して:

svn export /path/to/repository | grep ^Exported > revision.txt 

または

svn export /path/to/repository | tail -l > revision.txt 
+0

前または後に行うと、それらは異なるリビジョンになる可能性があります –

0

代わりに、あなたはその地元からsvn update、その後svn exportを行うことができますコピー。これの利点は、Subversionは "rsync"(またはそれが使用するアルゴリズム)を使用して、変更されたファイルのみを更新することです。そして、ローカルコピーからエクスポートし、帯域幅を節約し、ローカルチェックアウトですべてのリポジトリ情報を保持します。

二つのディレクトリ、チェックアウトのための1つを作成し、輸出のための1つ、2つのステップのプロセスをデプロイします。あなたの答えのための

svn update /path/to/repository checkout/project 
svn export checkout/project export/project 
関連する問題