2

そのために、GITを使用しようとしています。


gitリポジトリのすべての変更を自動コミットし、最後のものを除くすべての履歴リビジョンを削除する.shスクリプト(Linuxの下)を開発しようとしています。リポジトリは、最後のコミット データのみを保持し、以前の履歴をすべて消去する必要があります (すべてのデータが失われます)。

たとえば、次の 3 つのファイルをコミットします。

  • ファイル 1: 12 MB;
  • ファイル 2: 4 MB;
  • ファイル 3: 12 KB。

コミット後、私の .git フォルダーのサイズは約 25 MB です。

ここで、file1 と file2 を削除します。

次回のコミット後、私の作業コピーは 12 KB で、.git フォルダーは 25 MB です。

可能な限り最小の .git フォルダーを取得するために、リポジトリ内のすべてのデータをフラッシュ (データを失う) したいと考えています。

問題は、cron スクリプトを実行する必要があるため、ONE SINGLE NON-INTERACTIVE COMMAND LINE でそれを行う必要があることです。

何時間もフォーラムを閲覧していますが、この質問に対する解決策が見つかりません。


本当の問題は、双方向の高速ファイル同期をどのようにセットアップするかということです。同期するフォルダーが大きい (数千のファイルで 20 GB)。最初の同期は非常に遅くなりますが、問題はありませんが、2 回目の同期はより高速で、変更されたファイルのみを比較して 30 ~ 40 秒以内です...

助けてくれてありがとう。

4

3 に答える 3

1

双方向の高速ファイル同期を設定する方法は osync です。Osync は、rsync ベースの双方向ファイル同期であり、rsync 更新アルゴリズムを使用して、変更のみを伝達するために帯域幅を節約します。http://www.netpower.fr/osyncでチェックしてください。

于 2013-08-18T14:39:45.110 に答える
1

すばやく機能させる

AeroFSまたはunisonを使用します。

カスタム ソリューション

Linux ではinotifyを使用するか、他のプラットフォームでは同等の機能を使用して、ファイル システムへの変更の通知を受け取ります。次に、librsynclibsshなどを使用してファイルを転送します。

使い方によっては、実際には cron ジョブで rsync を実行しても問題が解決しない場合があります。rsync アルゴリズムは非常にスマートで、使用時に不必要なクラッドをほとんど送信しません。適切に設定すると、最終更新時刻のみが表示されます。

アドホック ソリューションをまとめる前に、aerofs または unison のいずれかを使用することをお勧めします。

于 2012-04-03T11:16:30.600 に答える