1

昨夜遅く、本番ログインの詳細をリポジトリにチェックインしました。私は現在、これに取り組んでいる唯一の開発者なので、大したことではありませんが、将来、製品の詳細が公開されるのは素晴らしいことではありません.

私がやったことは、サーバーに行くことでした:

hg clone <old repo> <new repo> -r <revision>

不正なコミットの前のリビジョンまでのみクローンを作成し、

テストしましたが、問題ないようです。ここで確認したほうがいいと思いましたが、その悪いコミットの内容を公開するために、隠された歴史や隠された足跡が横たわっていないことを本当に確認しましたか?

どうもありがとう、

4

2 に答える 2

0

cloneコマンドは機能しますが、リポジトリに複数のブランチがある場合、そのクローンにはそれらが含まれません。したがって、それらを個別に慎重に取り込まない限り、意図した以上に失う可能性があります. おそらくこれはあなたが望むものではありません...

リビジョンを削除する最も簡単な方法は、 MQ 拡張機能stripのコマンドを使用することです。これをコマンド ( Rebase extension )と組み合わせて使用​​すると、保持したい子が既にある変更セットを削除できます。最初に子を親に、次に問題のあるチェンジセットに。rebaserebasestrip

ただし、これらは履歴の変更操作であることに注意してください。変更セットが既に他のユーザーと共有されている場合は、引き続きそのユーザーのリポジトリに残ります。彼らが引っ張った後でも。彼らはそれらを取り除くためにあなたの手順を繰り返す必要があります. 変更が誤ってメイン リポジトリに戻ってしまうことさえあります。(注:これはあなたの方法にも当てはまりますclone。)

したがって、これを行う必要がある場合は、すべてのユーザーに新しいクローンを作成するか、少なくとも変更を取り除き、変更セットが再導入されないようにフックを作成するように指示するのが最善です。すべてのユーザーに連絡したり、信頼したりできない場合 (たとえば、オープン ソースであるため) は、変更セットをそこに残して、本番の資格情報を変更することをお勧めします。とにかく、それはすでに野生に出ています。

将来的には、Mercurial 2.4 で予定されている「廃止」機能を使用して、変更セットを削除または変更するためのより良い方法が提供される予定です。これが完全に実装されると、ユーザーがリポジトリからプルすると、それに応じてリポジトリの履歴が自動的に更新されます。そのため、その機能に注目してください。

于 2012-08-07T09:00:31.363 に答える