git fast-import --export-marksは、マークを作成したコミットハッシュに関連付けるファイルをエクスポートできます。
これまでのところ、マークは入力で提供されたものではなく、入力に関連しないいくつかの「内部マーク」であることがわかりました。
インポート/エクスポートの相互運用性については、元のマークを保持していれば、はるかに優れているのではないでしょうか。
git fast-import --export-marksは、マークを作成したコミットハッシュに関連付けるファイルをエクスポートできます。
これまでのところ、マークは入力で提供されたものではなく、入力に関連しないいくつかの「内部マーク」であることがわかりました。
インポート/エクスポートの相互運用性については、元のマークを保持していれば、はるかに優れているのではないでしょうか。
によってエクスポートされたマークの目的は、fast-import
その後の検証と同期のためにコミットと BLOB をリストすることです。によってインポートされたマークの目的はfast-import
、増分エクスポート/インポート シナリオでコミットをスキップすることです。
╔════════════════╦════════════════════════════════ ══╗ ║ ║ git 高速エクスポート ║ ╠════════════════╬════════════════════════════════ ══╣ ║ --import-marks ║ 1) エクスポート中にスキップするコミット ║ ║ --export-marks ║ 2) エクスポートされたコミット ║ ╚════════════════╩════════════════════════════════ ══╝ ╔════════════════╦════════════════════════════════ ══════╗ ║ ║ git 高速インポート ║ ╠════════════════╬════════════════════════════════ ══════╣ ║ --import-marks ║ 3) インポート中にスキップするコミット ║ ║ --export-marks ║ 4) a) ブロブ ║ ║ ║ b) インポートされたコミット、(2) と同じ ║ ╚════════════════╩════════════════════════════════ ══════╝
上記の表から、リポジトリが増分的に同期されるシナリオでフラグがどのように組み合わされるかがわかります。リポジトリをエクスポートし、別の場所にインポートしてから、以前にエクスポートされたコミットをスキップして増分エクスポート ファイルを作成するか、完全なエクスポートを作成し、既知のコミットをスキップして増分インポートすることができます。
明確にするための短い例を次に示します。
$ cd /tmp && git init example && cd example && touch README && \
git add README && git commit -m "first commit"
$ git fast-export --all --export-marks=/tmp/example-repo.marks > /tmp/example-repo.export
--- /tmp/example-repo.export ---
blob
mark :1
...
reset refs/heads/master
commit refs/heads/master
mark :2
...
reset refs/heads/master
from :2
--- /tmp/example-repo.marks ---
:2 610432e74c554d783ff5f9edd1bb18548d68e533
1 つのマークのみがエクスポートされ、単一のコミットのマークがリポジトリに追加されました。
$ git show 610432e74c554d783ff5f9edd1bb18548d68e533
commit 610432e74c554d783ff5f9edd1bb18548d68e533
...
リポジトリの再作成に進むと、エクスポートされたマークにはコミットだけでなく、新しい BLOB もリストされます。これらの新しい BLOB は再作成されており、マークに表示されていることを確認してください。コミットは、すべてのインポート参照コミットと比較するために一覧表示されます。
$ cd /tmp && git init example-import && cd example-import && \
cat /tmp/example-repo.export | git fast-import --export-marks=/tmp/example-import-repo.marks
--- /tmp/example-import-repo.marks ---
:1 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
:2 610432e74c554d783ff5f9edd1bb18548d68e533
BLOB:1
が再作成され、マーク ファイルに新しくリストされます (たまたま最初に使用可能なマークを使用:1
) :2
。