2012-03-09 7 views
5

Mercurialを使って、別のリポジトリにあると知られていないチェンジセットをすべてにバンドルするには、秘密のチェンジセットを含めますか?Mercurial:バンドルに秘密のチェンジセットを含める?

私はbundleを知っています。--baseオプションには秘密のチェンジセットが含まれていますが、私は--baseの動作を望ましくありません。

をFYI、私は一般的に、すべてのバックアップを作成したい(そして、は常に--baseに含まれているが、それなしに含ま決してある。別のオプションは存在しないはず?秘密チェンジがされていることを非常に奇妙なようです)潜在的に危険な履歴の書き換えを試みる前に私の地元のレポだけにあるチェンジセット。

+0

ただ** **履歴を書き換えないでください。 –

+0

'hg help phases' - 秘密のチェンジセットはプッシュ、プル、クローンのいずれも実行されません –

答えて

5

hg bundleは通常、秘密のチェンジセットを除外します。これは、ちょうどhg outgoingに相当するものを実行していて、これらのチェンジセットをバンドルしているためです。

だから、いくつかの回避策:

  • あなたがあなたの秘密のチェンジセットの祖先のような少なくとも1つのドラフトまたは公衆送信チェンジセットを持っていることがわかっている場合は、

    $ hg bundle --base "parents(outgoing())" 
    

    を使用することができますあなたが望むものを得るために。 outgoing() revsetは欠落しているドラフトと公開チェンジセットを選択し、parents(outgoing()は適切なベースになります。 --baseを使用しているので、これらの拠点からすべての子孫(public、draft、およびsecret)を取得できます。

  • あなたは一時的に、あなたの秘密チェンジの草案を作成し、バンドルした後、再び彼らに秘密をマークできます。

    $ secret=$(hg log --template "{rev} " -r "secret()"); \ 
        hg phase -d $secret; \ 
        hg bundle out.hg; \ 
        hg phase -f -s $secret 
    

    (私はZshのを使用して、そこに私はZshのは行いませんので、${=secret}の代わり$secretを使用していました単語、デフォルトでパラメータ展開に分割)

    あなたは関係なく、hg bundle呼び出しで何が起こるかの位相をリセットしたいと思うので、それは;代わりの&&を持つコマンドチェーンに重要です - 。間違ったparameを渡しますhg bundleに変更しても、秘密チェンジセットに関するすべての情報が失われるわけではありません。秘密のチェンジセットには秘密の子孫しかないので、このテクニックでは情報の損失はありません。別名が呼び出される前に

    [alias] 
    bundle-all = !secret=$(hg log --template "{rev} " -r "secret()"); 
          hg phase -d $secret; 
          hg bundle [email protected]; 
          hg phase -f -s $secret 
    

    [email protected]はMercurialので展開され、これはあなたがhg bundleのために必要な引数を挿入することができます:

    あなたはシェルのエイリアスにこれを変えることができます。

位相情報をバンドルに格納することはできません。バンドルフォーマットは、バンドルフォーマットに対応するために変更されていないことに注意してください。公共チェンジがない場合は動作しません

hg bundle -r "not public()" --base public() 

OTOH、代わりにこれを使用する:

1

あなたが少なくとも一つのパブリックチェンジがあるとわかっている場合は、これを使用することができます

hg bundle -r "not public()" --base null 

Martinの答えの問題は、発信に依存し、プッシュレポへの直接接続に依存することです。あなたがいつもそのレポにインターネット接続しているとは限りませんが、これらの方法は私にとってはうまくいきます。フェーズダンスよりもやや簡単です。

hg log -r public() -l 1 --template "{rev}" 

とその長さ、又は[0-9]の存在をテストする:任意のパブリックチェンジがあるかどうかのために

つの試験は、出力を捕捉することです。

関連する問題