0

私は基本的に、スクリプト化されたビルド プロセスの一部として SVN エクスポートを実行したいと考えていますが、毎回レポ全体をゼロから取得する必要はありません。これは遅く、帯域幅を消費します... 言うまでもなく、スクリプトをテストするのが面倒になります何かを微調整したり、スクリプトのタイプミスを見つけたりするたびにこれを行うと、裏側になります。

既存のディレクトリへのエクスポートを行う明白な方法はありますか?異なるファイルのみがフェッチされ、非リポジトリ ファイルは削除され、基本的にクリーンなエクスポートが行われますが、スマートな方法で行われますか?

Windows が推奨されますが、Cygwin も選択肢の 1 つだと思います。

4

4 に答える 4

3

これを行う唯一の方法は、作業コピーをチェックアウトし、それを更新して元に戻すことだと思います。WC を更新すると、変更のみが取得されます。

svn export は、どのファイルが変更されたかを認識していないため、ファイルを比較するには、最初にそれらすべてをフェッチする必要があります。また、「エクスポート」ディレクトリから削除または名前変更されたファイルを取得するのも困難です。

于 2010-10-06T07:54:02.513 に答える
2

作業コピーをチェックアウトしてから、作業コピーからエクスポートします。作業コピーでの SVN の更新は迅速でバンドウィッチ ライトになります。その後、元のエクスポートを削除し、作業コピーから再エクスポートできます。

帯域幅を大量に消費するすべての操作が最適化されます。手間のかかる削除と再作成は以前と同じですが、現在はすべてローカルであるため、はるかに高速になるはずです。

また、エクスポートされた作業コピーを変更することもできますが、svn の更新中に競合が発生した場合の影響を考慮して、慎重に行う必要があります。

于 2010-10-06T16:02:18.623 に答える
0

あなたの質問を正しく理解しているかどうかわかりません。言い換えると. レポのローカル コピーを定期的に更新する必要があると思います。ただし、結果のビルドがクリーンになるように、作業コピーを手付かずの状態にする必要があります。これがあなたの質問であることを考えると、以下が私が提案するものです。

私の知る限り、svn export はこれに最適なオプションではないかもしれません。svn エクスポートの目的は、バージョン管理されていない svn リポジトリの作業コピーを取得することです。バージョン管理されていないため、svn クライアントはどこから更新を開始する必要があるかを実際には知りません。

私が考えることができる最良のオプションはこれです。ある場所にあるリポジトリのコピー (ローカル コピー、LC) をチェックアウトします。この LC は、ビルド プロセス中に更新する必要があります。LC のコピーを別の場所に作成し、それを使用してビルドを実行します。以下は、必要なコマンドです

1. svn update <arbitrary path>(in the working copy)
2. copy <arbitrary path> <build path>
3. find <build path> -type 'd' -name '.svn' (if you would like to remove the .svn hidden files, but they are not going to really hurt the build process)

ビルド プロセス時間を考慮してコピー時間を排除するためのいくつかのオプション

  1. ビルド プロセス中にコピー時間を節約したい場合は、各ビルドの後にこのコピー操作を実行し、ビルドの直前に svn を更新することができます (.svn フォルダーが保持されていると仮定します)。

  2. Linux では、rsync を使用して 2 つのフォルダーの同期を保つことができます。ビルド コピーを作成して、元のコピーに更新を反映させることができます。

  3. Windows では、上記で提案した同期を実現するためのツールがいくつかあります。私はそれらを使用していませんが、自分で試すためのリンクを提供します.
    http://lifehacker.com/326199/synchronize-folders-with-synctoy-20 http://www.techsupportalert.com/best-free-folder-synchronization-utility.htm

于 2010-10-06T17:29:08.530 に答える
0

別のオプションは、チェックアウトと元に戻す/更新を使用することですが、SharpSvn ライブラリなどを使用して、ソース管理されていないファイルを削除するスクリプトを作成することもできます。このようにして、コンパイルされたコードなどのビルド アーティファクトが削除され、バージョン管理されたファイルが元に戻す/更新によって基本状態に戻されます。

多くのディレクトリとファイルがある場合、このスキャンは遅くなる可能性がありますが、どのディレクトリにビルド アーティファクトが含まれるかについて確信がある場合は、それらをスキャンするだけで済みます。

于 2010-10-13T19:24:15.070 に答える