日付を保存しないであろうmercurialへのgitへのボールト
-
27-10-2019 - |
質問
使用 https://github.com/andreynikiforov/vault2git Vault RepoをGitに変換してからMercurialの使用を使用できました hg convert
HGリポジトリを取得します。唯一の問題は、実行後の問題です hg convert
Change Setのコミットメント日付の日付は間違っています。
日付は、変更セットがコミット日ではなく、GotからMercurialに変換された時間を示しています。
日付を維持するために私がする必要があることはありますか?
解決
コミッター情報をチェックするコードを削除することで、これを機能させました hg convert
git
ファイル内の拡張子 https://www.mercurial-scm.org/repo/hg-table/file/09b200396384/hgext/convert/git.py 線 125
に 130
:
if n == "committer":
p = v.split()
tm, tz = p[-2:]
committer = " ".join(p[:-2])
if committer[0] == "<": committer = committer[1:-1]
committer = self.recode(committer)
これを削除したら、 hg convert
日付の著者情報を使用します。コンバート拡張機能をリポジトリリンクからコピーし、変更してからTortoisehgに追加する必要があります。
これを行う必要がある理由:
コミットするとき git
, 、Changesetメタデータには2つのレコードがあります。 committer
と author
.
著者はコードの責任者です。
コミッターは、実際にリポジトリの変更を犯した人です。
この区別は、コードを作成した人が必ずしもリポジトリにコミットする人ではないオープンソースプロジェクトで重要です。通常、貢献者からのプル要求を受け入れるプロジェクトのメンテナー(コミットター)があります(著者)リポジトリにコミットします。
Vault2Git
Git Changeset著者情報として、Vault Checkin Info(コミッターとコミットの日付)を使用します。 Git Committer情報は、Gitユーザーの情報とコミットの実際の日付(リポジトリのデフォルトユーザー)を使用します。この違いを見ることができます git cat-file <rev hash>
その変更について Vault2Git
します。
これはgitで正常に機能しますが、実行するとき hg convert
, 、Mercurialはを使用します author
名前と committer
Mercruial Changesetメタデータを作成する日付。
他のヒント
試してみることができます hg-git コンバートエクステンションではなく。それは、ロスレスになることを意図した2つの間の双方向の橋です。それには日付を含める必要があります。そうしないと、ハッシュが引っ張るたびに変更されます。