2011-11-17 3 views
8

Mercurialリポジトリにいくつかの新しいツールを調整するために古いコミットメッセージを変更する必要があります。私はすでに、このハッキングがマスターリポジトリで行われなければならず、すべてのローカルリポジトリを再クローンする必要があることを理解しています。これは、後続のすべてのチェンジセットのチェックサムも変更されるためです。分岐後のMercurialコミットメッセージの編集方法は?

私は「How to edit incorrect commit messages in 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 
を捕まってしまいましたチェンジセット後にブランチが作成されていること。

パッチの内容を変更したいのであれば、どのように乱雑になるのか分かりますが、コミットメッセージを編集する際に逃した回避策がありますか?

+0

あなたは本当にこれを行う必要がありますか?どのようなツールの変更があなたにこれを強制するのかはかなり興味があります。 –

+1

AFAIKでは、分岐後にMQまたはHistEditを使用してコミットメッセージを編集することはできません。私はそれを実行できる他のツールを認識していません。@Sergeyあなたが質問を慎重に読んだら、あなたが提供したリンクが全く役に立たないことがわかるでしょう、OPはすでに解決策を提案しました;) – krtek

+0

@krtek私は注意深く読んでいます。特にエラーメッセージ。リポジトリがすでにユーザー間でクローン化されている場合は、すべてのユーザーにとって問題です。 –

答えて

4

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

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()) 

具体的には、あなたはからgetcommit方法を変更する必要があります。

desc=ctx.description() 

desc=adjust(ctx.description()) 

に変更して、ファイルの先頭に adjust機能を実装します。

def adjust(text): 
    return text.upper() 
2

--amendpush --forceを使用しているため、これらが偶発的/重複している場合は、まずそれらを取り除き、再度 'histedit'してからbitbucketの中央リポジトリを消去してください。私のために働いた、次の試してみてください。リポジトリのログを検査し、枝を探し

を、あなたが最初に有効にする必要がありますGraphlogExtensionを使用することができます。

# hg log -G | more 
... 
o changeset: 43:c2fcca731aa5 
| parent:  41:59669b9dfa4a 
| user:  Daniel Sokolowski (https://webdesign.danols.com) 
| date:  Tue Aug 27 20:14:38 2013 -0400 
| summary:  Progress snapshot: major content text and model instance .. 
... 
| o changeset: 42:c50724a6f1c6 
|/ user:  Daniel Sokolowski (https://webdesign.danols.com) 
| date:  Tue Aug 27 20:14:38 2013 -0400 
| summary:  Progress snapshot: major content text and model instance ... 
| 
o changeset: 41:59669b9dfa4a 
| user:  Daniel Sokolowski (https://webdesign.danols.com) 
... 

MqExtensionを有効にして、すべての枝を取り除きます。

# hg strip --no-backup 42:c50724a6f1c6 
# hg strip --no-backup 45:3420dja12jsa 
... 

必要な変更は、「ドラフト」(Phasesを参照)、再実行「HISTEDIT」にコミットし、すべては今良いことがあります。場合

# hg histedit 14:599dfa4a669b 
abort: cannot edit immutable changeset: b7cfa2f28bde 
# hg phase -f -d 14:599dfa4a669b 
# hg hsitedit 14:599dfa4a669ba 
関連する問題