6

ローカルの Mercurial リポジトリからプッシュできる発信チェンジセットが 5 つあり、現時点ではそのうちの 1 つだけをプッシュしたいと考えています。この 1 つの変更セットは、利用可能なすべての変更セットの中間にあります。

たとえば、次のリビジョンがあります。

  • 6639
  • 6546
  • 6545
  • 6544
  • 6543

これを行う簡単な方法はありますか?

4

3 に答える 3

15

変更セットの連続したリストは、必要な数までしかプッシュできません。

そう

hg push -r 6545

押し6543..6545ます。

6545また、前の変更セットがないとその変更が意味をなさないという理由だけでプッシュすることはできません。

于 2012-10-25T21:32:42.073 に答える
2

Mercurial Queues拡張機能を使用してこれを行うことができます。リンクされたページで詳しく説明されている mq 拡張機能を有効にする必要がある場合があります。

すべてのリビジョンをキューにインポートし、それらをすべてスタックからポップしてから、プッシュしてから残りを適用する前に、必要なものを適用します。このようなもの:

> hg qimport --rev 6639
> hg qimport --rev 6543:6546
> hg qpop --all
> hg qpush --move 6545.diff

Here you might have to resolve conflicts

> hg qfinish --applied
> hg push
> hg qpush --all

Again, might need to resolve conflicts here.

これにより、リビジョン6545が適用されてプッシュされた (ただし、現在は別のリビジョン番号になっている) リポジトリが残り、残りの変更は適用され、プッシュされていません。

于 2012-10-26T10:02:37.740 に答える
1

あなたが望むことは不可能です。リビジョンはリポジトリを明確な状態にする必要がありますが、6545をプッシュしてリモートリポジトリをそれに更新できる場合、以前の(プッシュされていない)リビジョンセットからの変更は含まれません。これは、水銀のコアデザインに反します。あなたができることは次のとおりです。

a)rev 6545と同じ変更を含むdiff(パッチ)を配布します。これは、hg diffまたは他の方法で行うことができますが、パッチの適用は、本質的にrev6545に接続されていません。同じ変更を加えます。運が良ければ、将来問題なくマージできます。または

b)履歴を一時的に(mq拡張機能を使用して)または永続的に(ヘルプrebaseまたは他の拡張機能を使用して)書き換えて、6545がすでにコミットされたリビジョンの直後に配置されるようにします。その後、祖先がすでにプッシュされている他のリビジョンと同じようにプッシュできます。

于 2012-10-31T22:56:24.903 に答える