2017-07-21 12 views
2

複数のドラフトチェンジセットのコミット日付を変更する方法はありますか?特に、最後のものの前のチェンジセット。Mercurial:前のコミット日付を修正する

最後のコミットのコミット日付をhg ci --amend -d xxxで変更できますが、それ以前のコミットは変更できません。

チェンジセットの日付がチェンジセットハッシュへの入力の1つであることは明らかです(ここでは、これは正式に文書化されていますか?)ので、ここでの変更はすべてのチェンジセットの子孫。しかし、これはドラフトチェンジセットなので、これは問題ありません。

histeditを使用してこれを行うことはできないようです。

私はrebaseこの種のものを行うことができるかもしれないことを推測することができますが、対応するヘルプテキストは、それが、少なくともエキゾチックだことを示唆している任意のポインタを、与えるものではありません。

(私が扱おうとしている問題は、故意にネットワークに接続されておらず、頻繁にリブートされているマシン上でいくつかのコードが編集されコミットされているということです。間違っている、時には非常に間違っている - 1970年のように - 誰かが妥当な値で手作業でシステム日付を設定することを覚えていない限り、これはコミットグラフのトポロジーには関係ありませんが、それで、私は「プッシュ前のレビュー」の中でこれを修正したいと思っています。)

答えて

1

まあ、基本的にあなた自身が既に裏打ちしていますが、アクティベーションが必要ですevolve拡張の:1つのコミットの日付を設定し、すべての部分シーケンシングをリベースしますあなたがそれぞれの日付を設定するまで繰り返す。線形履歴を想定すると、各ステップで変更セットIDを1ずつ増やしてリピートし、繰り返します。履歴が線形でない場合は、リベースしたリビジョンと更新するリビジョンに注意する必要があります。

evolve拡張モジュールからevolveコマンドを使用していますが、それほど優れているわけではありません。それは少し簡単に上記の手順を作り、このプロセスに役立ちます:

hg update --rev OLDEST_UNCHANGED 
hg commit --amend --date DATE 
hg evolve --all 

そして増加changesetIDで再びこのプロセスを繰り返します。

はまだあなたがリフレッシュしたいものをコミットの最初に開始する必要があります各コミットがあなたが望む日付を持つまで。

(すべてはそれが進化コミットのために進化する使用してコミット日付をリフレッシュ/を設定するためのいくつかの方法があれば、私は学ぶことが幸せ - それは間違いなく、それ以外の機能要求である)

+0

おかげ - これは働いていました。 _However_、 'hg commit --amend'は、evolve拡張がインストールされている場合にのみ動作します。拡張を進めることなく、hgは子供とのチェンジセットの修正を拒否します。実際には、これらのソリューションの両方で、2つ目の拡張だけでなく拡張展開が必要です。私は今までにその拡張機能を使用していませんでしたが、むしろ暫定的な使用のためには十分安定しています。しかし、ここには龍がいる。 –

+0

そう、あなたは正しい...進化せずに子供たちとのコミットを修正することはできない。私は私の答えを訂正します。 – planetmaker

関連する問題