私は大規模なJava Webアプリケーションを一元管理されたバージョン管理下に置いて作業していますが、ソースファイルを使用して実際のサーバーを構築および実行し、作業するすべてのファイルをコピーします実行中にランダムな一時ディレクトリに移動します。
私の問題は、ファイルへの変更を確認するためにこの巨大なアプリケーションを再構築するか、すべての変更を追跡し、変更したファイルをソースの場所にコピーしてからソース管理に戻す必要があることです。
私の質問は、ソースフォルダーの変更を監視し、変更されたファイルを一時フォルダーXに自動的にコピーする、実行可能なコマンドラインスクリプトはありますか?
このアイデアは、2つの場所の問題を手動で軽減する必要があるという人為的な障害点を取り除くことです。
FreeFileSync をお勧めします。これは、数秒ごとに2つのフォルダーを自動的に同期するスクリプトを作成する機能を持っているようです。個人的には使ったことはありませんが、有望に見えます。
RoboCopyの使用を検討しましたか? http://ss64.com/nt/robocopy.html
RoboCopyは、設定された時間が経過した後、および/またはデータセットにいくつかの変更が発生した後にデータをコピーするように設定できます。
/ MON:n:モニターソース; nを超える変更が見られたときに再度実行します。
/MOT:m:MOnitorソース。変更された場合、m分後に再度実行します。
また、(年齢)DeltaCopyクライアントとサーバーを確認することもできます。基本的に、これはWindowsのLinuxに似たrsync実装であり、スクリプト化可能(必要に応じてWindowsスケジューラを使用)であり、その主な利点は変更されたファイル(はい、ファイル!)の変更された部分のみが送信されます。これにより、大きなプロジェクトで多くのトラフィックを節約できます。もちろん欠点は、以前にファイルリストを作成して送信する必要があることです。
また、いくつかの(小さな)警告があります。
まあ、それはまた利点があります(それが私がまだそれを毎日使用している理由です):
まあ、あなた次第です。楽しんで! (そしてFreeFileSyncについて知らせてください!)
便利なコマンドはxcopy /m src\* dest
です。これにより、すべてのファイルがsrcからdestにコピーされ、clearsすべてのsrcファイルのアーカイブビットがコピーされます。 srcファイルに触れると、Windowsは自動的にアーカイブビットを設定します。次回xcopy /m
を実行すると、変更されたファイルのみがコピーされます。
継続的に実行したい場合は、次のような小さなスクリプトを記述します。
@echo off
echo Watching for changes to %1 ...
:top
xcopy /m /y %1\* %2 | find /v "File(s) copied"
timeout /t 2 >nul
goto :top