В двух словах:
В каком формате находятся пакеты Mercurial?Как извлечь информацию о дате фиксации?
Вся история:
Я начал использовать HgSubversion .Это расширение Mercurial позволяет вам работать с репозиторием Mercurial и выдвигать и извлекать из Subversion.
Вчера я отодвинул за два месяца изменения в Subversion.Два сюрприза:
- Для
hg push
понадобилось около двух часов для 200 коммитов. - Исходная дата
hg commit
потеряна и заменена на дату hg push
.
Я нашел объяснение медлительности push
в списке рассылки .Хорошо, я могу легко адаптироваться к этому: давить рано, часто нажимать.Вам просто нужно знать , что вы должны сделать это.
Я разочарован потерянной первоначальной датой коммита.Я вижу, что замена даты, принятая HgSubversion, имеет смысл для большинства сценариев.Однако для моего сценария это не имеет смысла.
К счастью, исходная дата фиксации содержится в файлах резервного копирования .Эти файлы находятся в .hg/strip-backup/
;кажется, они называются связками .(Они создаются, когда при нажатии на Subversion поддеревья повторно удаляются из дерева для повторного присоединения после того, как коммит SVN, созданный hg push
, возвращается в Mercurial. См. Ссылку «медлительность» выше и найдите на странице Патрика.Комментарии Mézards.) Я мог бы извлечь дату из пакета, а затем сбросить svn:date
в 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
В каком формате находится пакет и как можно извлечь информацию о дате фиксации?