2

https://github.com/AndreyNikiforov/vault2gitを使用して、VaultリポジトリをGitに変換し、Mercurialを使用hg convertしてhgリポジトリを取得することができました。唯一の問題はhg convert、変更セットの日付を実行した後、コミット日が正しくないことです。

日付は、変更セットがコミット日ではなく、取得から水銀に変換された時刻を示します。

日付を保存するために他に何かする必要がありますか?

4

2 に答える 2

2

ファイルhttps://www.mercurial-scm.org/repo/hg-stable/file/09b200396384/hgext/convert/git.py行のhg convert git拡張子のコミッター情報をチェックするコードを削除することでこれを機能させました:125130

        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、チェンジセットメタデータには2つのレコードがあります:committerauthor

  • 作成者は、コードの責任者です。

  • コミッターは、リポジトリへの変更を実際にコミットした人です。

この区別は、コードを作成した人が必ずしもリポジトリにコミットした人ではないオープンソースプロジェクトでは重要です。通常、貢献者(作成者)からのプルリクエストを受け入れるプロジェクトのメンテナ(コミッター)がいます。そしてそれをリポジトリにコミットします。

Vault2GitVaultのチェックイン情報(コミッターとコミットの日付)をgitチェンジセットの作成者情報として使用します。gitコミッター情報は、gitユーザーの情報と実際のコミット日(リポジトリのデフォルトユーザー)を使用します。この違いgit cat-file <rev hash>は、変更セットで実行することで確認できますVault2Git

これはgitでは問題なく機能しますが、実行するhg convertと、Mercurialはauthor名前とcommitter日付を使用してMercruialチェンジセットメタデータを作成します。

于 2011-12-06T01:57:52.957 に答える
1

convert拡張機能ではなくhg-gitを試すことができます。これは、ロスレスであることが意図されている2つの間の双方向ブリッジです。これには日付が含まれている必要があります。そうでない場合、ハッシュはプルするたびに変更されます。

于 2011-12-04T10:38:20.280 に答える