1

私のアプリとその .git リポジトリのローカル コピーを持っている顧客がいます。彼女はそれを使用して、変更を元に戻したり、パッチをテストしたりします。しかし、ファイアウォールやその他のルールが原因で、最新の変更をリモートにプルする簡単な方法はありません。 . そこで、「圧縮された新しい完全な .git リポジトリをダウンロードさせてください」と考えました。しかし、リポジトリは快適に動き回る大きなママなので、増分変更 (オブジェクト、参照など) の圧縮された .git を彼女に送信して、ローカルの .git ディレクトリ内で解凍することをお勧めします。

ファイルのタイムスタンプに基づいて、次のワークフロー (ソフトウェア内から自動化) を試しました。

  1. 彼女の .git/objects ディレクトリで最新のタイムスタンプを取得する
  2. そのタイムスタンプで始まるファイルの .git ディレクトリから zip を作成します
  3. zipファイルをメールで送信
  4. お客様の .git 内の zip を解凍します (一部のファイルが上書きされても問題ありません)。
  5. git checkout -f master(または必要なブランチ/タグ)およびgit clean -d -f

彼女の作業ツリーと .git ディレクトリはローカルで変更されることはなく、1 つのブランチからタグなどにチェックアウトされるだけなので、問題なく動作します。しかし、ファイルのタイムスタンプは明らかに信頼できません...つまり、touchバックアップなどによってすべて取得される可能性があるため、何らかのコミットを使用してこの増分zipを作成するよりエレガントな方法を探しています。

では、顧客のローカル .git からの情報がある場合、.git ディレクトリの増分 zip ファイルをプログラムで作成するにはどうすればよいでしょうか? これは、リモートから段階的にプルするために git が内部的に行うことと非常によく似ていると思います。正しいファイルを選択するアルゴリズムは何ですか? インクリメンタル zip をビルドするために顧客のリポジトリからベースライン コミットを決定するにはどうすればよいですか?

4

1 に答える 1

2

git format-patchコマンドを使用しないのはなぜですか? またはgit バンドル? これを行う方法の例を次に示します。これにより、顧客は完全な zip.gitディレクトリを 1 回だけダウンロードする必要があり、後で増分パッチを使用できます。

于 2013-03-07T20:07:39.657 に答える