8

Mercurial リポジトリに古いコミット メッセージがいくつかありますが、これを変更する必要があります (新しいツールに合わせて調整するため)。このハッキングはマスター リポジトリで行う必要があり、すべてのローカル リポジトリを再クローンする必要があることは既に理解しています。これは、後続のすべての変更セットのチェックサムも変更されるためです。

「 Mercurial で不正なコミット メッセージを編集する方法」のレシピに従ってみましたが、MQ 拡張機能を使用すると、エラー メッセージで行き詰まりました。

X:\project>hg qimport -r 2:tip
abort: revision 2 is the root of more than one branch

Histeditでも同様に

X:\project>hg histedit 2
abort: cannot edit history that would orphan nodes

問題は、変更セットの後に作成されたブランチがあったことです。

パッチの内容を変更したい場合、いかに面倒なことになるかはわかりますが、コミット メッセージを編集するために見逃した回避策があるのではないでしょうか?

4

3 に答える 3

4

これを行うには、変換拡張機能のハッキングされたバージョンを使用します。拡張機能はhg → hg変換を実行できるため、作成者名とブランチ名を変更できます。コミット メッセージの変更はまだサポートされていませんが、ハッキングすることはできます。

具体的には、getcommitメソッドを次のように変更する必要があります。

def getcommit(self, rev):
    ctx = self.changectx(rev)
    parents = [p.hex() for p in self.parents(ctx)]
    if self.saverev:
        crev = rev
    else:
        crev = None
    return commit(author=ctx.user(), date=util.datestr(ctx.date()),
                  desc=ctx.description(), rev=crev, parents=parents,
                  branch=ctx.branch(), extra=ctx.extra(),
                  sortkey=ctx.rev())

古いコミットの読み取りを担当します。変更

desc=ctx.description()

desc=adjust(ctx.description())

adjust次に、ファイルの先頭に関数を実装します。

def adjust(text):
    return text.upper()
于 2011-12-01T13:04:14.243 に答える