質問

現在、私は2つのリポジトリを持っています。 1つのリポジトリに名前が付けられています jstock, 、すべての安定したソースコードが含まれています。

別のリポジトリという名前 jstock-refactor-calendar-to-joda, 、クローン化されています jstock, 、そして、すべての不安定な実験機能コードが含まれています。

赤い長方形のすべての変更セットは、不安定な実験機能コードです。彼らはまだ終わっていません。したがって、私はそれを緑の長方形の変更セットと融合させるつもりはありません(緑の長方形はそれらが安定した変更セットであることを示します)

jstock-refactor-calendar-to-joda 引っ張ります jstock, 、ここにそれがどのように見えるかがあります。alt text

今、私は実験コードをに見えるようにしたいと思います jstock (しかし、不安定なため、デフォルトの行には入らない)

したがって、私がプッシュを実行するとき jstock-refactor-calendar-to-jodajstock, 、ここに私が得るものがあります。alt text

これで、すべての不安定なコードがデフォルト行に属します!

これは私が欲しいものではありません。の jstock, 、安定したコード(緑色の長方形)がデフォルト(左側)のままで、不安定なコード(赤い長方形)が右側に残ることを望みます。私はそれらをまだ統合したくないが、私は両方の開発ライン(安定して不安定な)を見ることを望んでいることに注意してください。

私が間違ったことをしたステップはありますか?

役に立ちましたか?

解決

この場合、複数のヘッドを作成したときに「力」を押す必要があります。 両方 これらのヘッドは「デフォルト」ブランチにあります。このような問題はありませんが、あなたが心配している問題は、あなたの新しいヘッド(不安定なコードを使用)がデフォルトのブランチの「チップ」であることです。

から 水銀のFAQ:

ヒントは常に頭です。リポジトリに複数のヘッドがある場合、そのうちの1つだけが先端です。リポジトリ内では、変更セットに連続して番号が付けられているため、チップのシーケンス番号が最も高くなります。 「TIP」という単語は、Tip Changesetを示す特別なタグとして機能し、Changeset IDまたはタグが有効な場所で使用できます。

これらの変更を指定されたブランチにプッシュした方がよかったでしょう、 ラッセが示唆するように, 、しかし、あなたはあなたがいる場所です。この場合、あなた(またはこのリポジトリを初めて引く人)は、デフォルトのブランチの安定した部分にあるように作業コピーを更新する必要があります。

hg update -r 12345

(12345は「通貨を制限する代わりに...」の改訂番号です...」

すでにこのリポジトリを持っている開発者の場合、不安定な変更を引くと、複数のヘッドが表示されますが、作業コピーは自動的に新しいブランチに更新されません。

他のヒント

これはMercurial Mailinglistにも投稿され、以下は 私の返事:

ログビューアの2つの(匿名)ブランチの位置は重要ではありません。左側または右側はありません。順序は、プルとプッシュを作成した順序によってのみ依存します。

必要なのは方法です ラベル 安定した不安定な枝からの変更セットで、どちらがどちらを追跡できるかを維持できます。これを行うには3つの主な方法があります。

  • 個別のクローン: これは、さまざまなブランチに個別のクローンを保持する場所で既に使用している些細な方法です。

    クローンを削除するだけで、チェンジセットを簡単に捨てることができるという利点があります。

    変更セットが隔離されて以来、何が起こっているのかについて、実際には完全な概要を理解していないという不利な点があります。

  • 名前付きブランチ: まだ行っていない場合はこちらのガイドをご覧ください。

    http://mercurial.aragost.com/kick-start/en/tasks/

    指定された枝の利点は、彼らがラベルを置くことです あなたが彼らがどこから来たのかを追跡できるように変更します。 「Refactor-Calendar-to-Joda」と呼ばれる名前のブランチがある場合、できる

    hg update refactor-calendar-to-joda
    

    作業コピーをそのブランチの先端に更新するため。ブランチで新しいコミットが行われると、ブランチの先端が並んで移動するため、「リファクタルカレンダーからジョダへのリファクタリング」をフローティングタグと考えることができます。

    デフォルトのブランチに戻るには、実行する

     hg update default
    

    これは、通常の開発が行われるべき場所です。

    名前の枝は、長い時間にわたって安定している枝や、数年後にも名前が意味がある枝に適しています。たとえば、バグトラッカーを使用する場合は、リファクタリングを追跡し、ブランチ「バグxx」を呼び出すバグを作成することをお勧めします。そうすれば、人々は将来的に適切なバグ番号を検索できます。

  • ブックマーク: ブックマークは変更セットに名前を付け、名前付きブランチと同様に、ブックマークに更新できます。

    hg update refactor-calendar-to-joda
    

    ただし、名前付きのブランチとは異なり、ブックマークはChangesetグラフの外側にライブです。それらは変更セット自体の一部ではないため、ブックマークを移動、削除、名前変更などが可能です。リポジトリ間でブックマークをプッシュおよびプルすることができます。

したがって、長期的な永続的な名前に名前が付けられたブランチを使用し、短命のブランチにブックマークを使用し、物事を分離したい場合は個別のリポジトリを使用します。

最後に、このトピックの詳細については、このガイドを参照してください。

http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/

あなたがしたことは完全に大丈夫です。同じ名前のブランチ「デフォルト」に2つの頭があります。これは完全に通常の作業方法です。これが何が起こっているかについてのかなりまともな説明です:

http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/#branching-anonymally

ニックが示唆するように、すでにクローンを持っている人は、引っ張ったときに新しい頭を獲得し、新しくクローンの人は両方を得るでしょう - それは大丈夫です。

人々が hg update default あるいは単に hg update 彼らは、最新のチェンジセットに移動しました default ブランチなので、「通貨小数を制限する代わりに...」でもう1つのコミットを行います...」

hg update REVSION
...edit
hg commit

また、クローン/更新時に必要な匿名のブランチに自動的に更新されます。

心に留めておくべきことは、枝が枝と名付けられていた前に長い間存在していたので、匿名の枝でできる名前の枝でできることはすべて存在していたことです。

そのリポジトリに2つの差別化されていないヘッドを持っていることを決めた場合、ブックマークを見てみてください。それらは、匿名のブランチのヒントを追跡する粘着性のラベルです - それらが永続的ではないという点で、名前が付けられたブランチよりも柔軟です。

http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/#branching-with-bookmarks

この場合、おそらくプッシュで待って、リポジトリ全体を利用できるようにする必要があります。

または、そのブランチを開始したとき、名前を付けておく必要があります。同じ名前のブランチに属する複数の名前のないブランチを持つことができます。

言い換えれば、あなたが見ているすべての変更セットはの一部です default ただし、ラベルはそのブランチの先端に対してのみ表示されます。新しい変更セットがヒントであるため、ラベルがUIに表示される場所です。

名前を付けていた場合、デフォルトはデフォルトのブランチのチップセットにまだ下がっています。

それを修正するには、これらの変更セットを1つずつ「再生」する必要があります。私はそれを行うための最良の方法を知りませんが、彼らが新しいハッシュを取得すると言うだけで十分であるため、それらのチェンジセットを引き出した人は、すでにデフォルトのブランチの一部としてそれらを押し戻すリスクがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top