git fast-import --export-marks标志

时间:2011-03-27 19:11:18

标签: git git-fast-import

git fast-import --export-marks能够导出一个文件,将文件与它创建的提交哈希相关联。

到目前为止,我已经看到标记不是输入中提供的标记,而是一些与输入无关的“内部标记”。

对于导入/导出互操作,如果保留原始标记会不会更好?

1 个答案:

答案 0 :(得分:2)

fast-import标记导出的目的是列出提交和blob以供后续验证和同步。 fast-import标记导入的目的是跳过增量导出导入方案中的提交。

╔════════════════╦══════════════════════════════════╗
║                ║        git fast-export           ║
╠════════════════╬══════════════════════════════════╣
║ --import-marks ║ 1) commits to skip during export ║
║ --export-marks ║ 2) exported commits              ║
╚════════════════╩══════════════════════════════════╝
╔════════════════╦══════════════════════════════════════╗
║                ║          git fast-import             ║
╠════════════════╬══════════════════════════════════════╣
║ --import-marks ║ 3) commits to skip during import     ║
║ --export-marks ║ 4) a) blobs                          ║
║                ║    b) imported commits, same as (2)  ║
╚════════════════╩══════════════════════════════════════╝

您可以从上表中看到如何在repos逐步同步的场景中组合标志。可以导出一个仓库,将其导入其他地方,然后通过跳过以前导出的提交来创建增量导出文件,或者通过跳过已知的提交来创建完整导出和增量导入。

这是一个简短的例子来澄清。

$ 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

仅导出了一个标记,单个提交的标记已添加到仓库中。

$ 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已保留它的标记和来自原始导出回购的散列。