【发布时间】:2011-12-04 13:45:14
【问题描述】:
简而言之:
Mercurial 包的文件格式是什么? 如何提取提交日期信息?
整个故事:
我已经开始使用HgSubversion。 这个 Mercurial 扩展允许您处理 Mercurial 存储库并从 Subversion 推送和拉取。
昨天我将价值两个月的更改推回了 Subversion。 两个惊喜:
-
hg push大约需要两个小时来完成 200 次提交。 - 原来的
hg commit日期丢失并被hg push日期取代。
我找到了explanation for the push slowness on the mailing list。
好的,我可以很容易地适应:早点推送,经常推送。
你只需要知道你必须这样做。
我对丢失原始提交日期感到失望。 我可以看到 HgSubversion 制定的日期替换对于大多数情况都是有意义的。 但是,这对我的场景没有意义。
幸运的是,原始提交日期包含在 strip-backup 文件中。
这些文件位于.hg/strip-backup/;似乎它们被称为 bundles。
(它们是在推送到 Subversion 时创建的,
子树被反复从树上剥离
在hg push 创建的 SVN 提交被拉回 Mercurial 后重新附加。
请参阅上面的“缓慢”链接并在页面上搜索 Patrick Mézards cmets。)
我可以从捆绑包中提取日期,然后提取reset the svn:date in Subversion。
但我如何才能访问捆绑包中包含的信息? 它似乎不是一种已知的压缩格式。
$ mkdir bundle
$ cd bundle
$ cp ~/RepoHgSvn/.hg/strip-backup/ecbe9ff1cf0b-backup.hg .
$ file ecbe9ff1cf0b-backup.hg
ecbe9ff1cf0b-backup.hg: Mercurial changeset bundle (bzip2 compressed)
# Okay then ...
$ bzip2 -d ecbe9ff1cf0b-backup.hg
bzip2: Can't guess original name for ecbe9ff1cf0b-backup.hg
-- using ecbe9ff1cf0b-backup.hg.out
bzip2: ecbe9ff1cf0b-backup.hg is not a bzip2 file.
# Okay, the file utility often goes wrong ...
$ mv ecbe9ff1cf0b-backup.hg ecb.bz2
$ bzip2 -d ecb.bz2
bzip2: ecb.bz2 is not a bzip2 file.
$ mv ecb.bz2 ecb.gz
$ gzip -d ecb.gz
gzip: ecb.gz: not in gzip format
$ mv ecb.gz ecb.zip
$ unzip ecb.zip
Archive: ecb.zip
End-of-central-directory signature not found.
$ 7z l ecb.zip
Error: ecb.zip: is not supported archive
捆绑包是什么文件格式,如何提取提交日期信息?
【问题讨论】:
标签: svn mercurial hgsubversion