Mercurialのヘルプテキストには、 "stripコマンドは指定されたチェンジセットとそのすべての子孫を削除します"と表示します。これは、私に履歴を書き換えるのと非常によく似ています。誰かが突然削除されたチェンジセットの1つに自分の仕事を基づいていれば、問題を引き起こすはずです。しかし、ヘルプテキストには、このコマンドは「履歴書き換え操作ではなく、公開フェーズのチェンジセットで使用できる」とも書かれています。私は、ヘルプテキストを書いた人が彼が何をしているかをよく知っていたと確信しています。だから私はこれを理解するために何が欠けていますか?Mercurialのstripコマンドで履歴が書き換えられないのはなぜですか?
答えて
私はそれを確実に言うことはできませんが、私の推測では、それは "祖父がいる"ということです。 hg strip
は、mq
の一部として開始し、フェーズの少なくとも3年の追加に先立って開始しています。
多分、より良い言い回しは、次のようになります。
が*履歴書き換え動作*考えられないし、相が膨大な量を添加すると、パブリック相
にチェンジセットで使用することができます誰も既存のワークフローを壊さないよう注意が払われました。コミットはの段階から開始し、公開が一度押されると開始します。位相認識コマンドは、コミットのフェーズを実行した後にpublicであり、プッシュが非パブリッシングリポジトリへのものでない限り、変更を許可しないことを知っています。
しかし、すでにstrip
を手動で使用していて、プッシュされたチェンジセットを削除するスクリプトで、アップグレード後にstrip
が突然「こんにちは、あなたは公開できない」と言った人がいました。それらの人々は後方互換性の約束を崩してしまいます。
位相はゆっくりとかなり驚くほど大きくなります。evolveシステムは、ほぼすべてのケースでmqよりはるかに優れた選択肢になりますが、私はまだMattがmqとストリップを取り除くことに疑いを持ちます。 Python 2.4と互換性のあるコードベースで、それは9歳です!
Tl; Dr:strip
は常に無効になっていますが、あまりにも多くの人がそれを使用してフェーズの到来とともに動作を変更しています。
重要なポイントは、パブリックチェンジセットを削除した後、別の場所から再度プルすると問題が発生していないことです。元のチェンジセットを元に戻すだけです。
2つの公開チェンジセットをまとめて折りたたんで、元の場所から元の場所に戻すと、2つのブランチが作成されます。元の2つのチェンジセットを持つものと、変更されたチェンジセットを持つものですが、どちらも同じ変更を行います。その地点で地獄はゆるやかな子供の食べるモンスターを破壊し、地球を歩き回ります。
したがって、「履歴の書き換え」は「履歴の取り消し」と同じではありません。
davidmc24彼は基本的に同じこと
私は子供が怪物を食べるのが大好きです。 –
- 1. コンソールアプリケーションにコマンド履歴があるのはなぜですか?
- 2. gitの変更を元に戻す(書き換え履歴ではない)
- 3. NGINXでこれが書き換えられないのはなぜですか?
- 4. このURLが書き換えられないのはなぜですか?
- 5. ロールバックのためのGitコマンドは履歴を書き換えます
- 6. gitで履歴を書き換える方法は?
- 7. Git:履歴の書き換えを元に戻しますか?
- 8. 端末の履歴からコマンドを検索して置き換えます。
- 9. ハイブ履歴コマンドが動作しない
- 10. ウィンドウが閉じられたときにBashコマンドの履歴が書き込まれない
- 11. なぜAJAX履歴マネージャーですか?
- 12. git履歴の書き換えを再開するにはどうしたらいいですか?
- 13. Mercurialのファイルにコミット履歴を書き込む
- 14. 変数で値が置き換えられないのはなぜですか?
- 15. 履歴API - URLを複数のスラッシュで書き換えますか?
- 16. なぜこの書き換えは使えないのですか?
- 17. 「メモリ履歴」コマンドとは何ですか?
- 18. パラメータ値が置き換えられないのはなぜですか?
- 19. 書き換えルールが機能しないのはなぜですか?
- 20. .htaccess書き換えルールが機能しないのはなぜですか?
- 21. URLが終端スラッシュで書き換えられないのはなぜですか?
- 22. gitの履歴からファイルを削除できない
- 23. 有効なコマンドのiPython履歴
- 24. GUIのコマンド履歴
- 25. gitは早送りから早送りまでの履歴を書き換えます
- 26. Ruby on Railsコンソールでコマンド履歴を覚えてもらえますか?
- 27. TFSの履歴をMercurial(hg)にインポート
- 28. サブモジュールのgit履歴が書き換えられた後、親リポジトリ内のサブモジュールへの参照を更新する
- 29. 大学生が自分の履歴書に書かなければならないプログラミング言語
- 30. JSで履歴の状態をローカルで変更できないのはなぜですか?
おかげRy4anを言うているマット・マッコール(Mercurialの父親)によってthis postを指摘しました。私は訂正と説明を感謝します。 –
これは、 'strip'がチェンジセットを削除しないで、それらを隠すことを意味しますか?私は出版前に開発から100%_remove_マイナーコミットする方法を模索していました。これは安全で非常に重要な機能です。開発者はローカルコミットを頻繁に行う必要があります(これはDVCSの利点の1つです)。そして、 "機能ごとに1つのコミット"チェンジセットをマスターにマージしますブランチ(これは、すべてのマスターブランチがどのように見えるかです(例えば、Python、Sphinxなどのもの)。 Mercurialで "Phases"を使って明確な方法で達成できる方法はありますか? – Iodnas
ストリップ**は**それらを削除します。私の主張は、それが3年前にそれを前にしていたので、それがフェーズシステムの範囲外にあることでした。 –