手短に:
Mercurial バンドルのファイル形式は? コミット日付情報を抽出するにはどうすればよいですか?
全体の話:
HgSubversionを使い始めました。この Mercurial 拡張機能を使用すると、Mercurial リポジトリで作業し、Subversion からプッシュおよびプルできます。
昨日、2 か月分の変更を Subversion にプッシュしました。2 つの驚き:
- 200 件の
hg push
コミットに約 2 時間かかりました。 - 元の
hg commit
日付は失われ、日付に取って代わられhg push
ます。
メーリングリストで遅さの説明push
を見つけました。わかりました、私はそれに簡単に適応できます: 早めにプッシュし、頻繁にプッシュします。これをしなければならないことを知っておく必要があります。
元のコミット日が失われていることに失望しています。HgSubversion によって制定された日付の置換は、ほとんどのシナリオで理にかなっていることがわかります。ただし、私のシナリオでは意味がありません。
幸いなことに、元のコミット日はストリップ バックアップ ファイルに含まれています。これらのファイルは次の場所に.hg/strip-backup/
あります。それらはバンドルと呼ばれているようです。(これらは、Subversion へのプッシュ中に、によって作成された SVN コミットが Mercurial に引き戻された後、サブツリーがツリーから繰り返し剥がされて再接続されるときに作成されhg push
ます。上記の「速度低下」リンクを参照し、Patrick Mézards のコメントのページを検索してください。 ) バンドルから日付を抽出し、Subversion でリセットするsvn:date
ことができました。
しかし、バンドルに含まれる情報にアクセスするにはどうすればよいでしょうか? 既知の圧縮形式ではないようです。
$ 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
バンドルのファイル形式と、コミット日付情報を抽出する方法を教えてください。