簡體   English   中英

水星:從未知的分歧“分支”合並

[英]Mercurial: Merging from unknown divergant 'branch'

我正在嘗試在名為NS-3的項目上做一些工作,但是我的問題不是特定於項目的,因此我想在這里詢問相關的郵件列表。

基本上,制作了當時當前項目代碼的副本,並使用該代碼制作了新的存儲庫。 “分叉”版本和主干都完成了工作。

因此克隆了分叉的源,cd in和hg pull <latest-dev>hg merge ,雖然它不是完美的合並,但不可合並的更改都與一個庫更改有關,因此很容易修復(理論上)。 自然,這種樂觀嘗試沒有建立。

現在我不確定要從哪里去,我是DCVS的新手,所以請; 針對5歲兒童的想法!

我如何找出分叉版本的哪個變更集最后與dev-trunk合並,因為它們是分開的但又相關的回購協議?

從副本而不是克隆開始的情況:

如果發生這種情況:

  1. 項目存在
  2. 復制(非克隆)項目
  3. hg init在每個單獨的副本中運行,創建兩個不相關的存儲庫
  4. 兩份工作都完成了

然后要合並它們,您要在兩個不相關的存儲庫中進行最新操作:

  1. hg update 0 ,它使存儲庫跳回到最早的點,即它最后一次看起來與另一個相同的點
  2. 另一個存儲庫復制工作目錄的內容
  3. hg commit ,創建一個新的頭部
  4. hg merge ,它合並兩個頭,並且還提供了一個基本的修訂版本,該版本有助於合並過程。

關鍵是要盡可能地參與基礎修訂。 DVCS系統帶來的CVS和SVN無法做到的是,每次合並都是兩個頭和最近的共同祖先之間的三向合並。 通過從最后一個點創建新的頭部來偽造該共同祖先,這兩個存儲庫看上去相同(副本中的修訂版0)可模擬基本修訂版。

從克隆而不是副本開始的情況

這是經典的DVCS案例,不需要做太多事情。 只需進入其中一個克隆,將hg pull從另一個克隆中hg pull ,然后觸發hg merge 如果合並需要輸入,則將使用hg resolve提供它,並在完成后使用hg commit

如果此時您的代碼尚未構建/運行,則只需開始調試。 使用hg blame來查看正在編譯的代碼行附近正在做的事情,並嘗試懷疑正在做的事情以及如何進行處理。

合並過程是容易越頻繁,你做到這一點。 每天(而不是每月)進行上游更改。

您可以打開GraphLog擴展,並使用hg log -G命令查看兩行開發的分歧點,但最終合並開發,您只需要像對待非建築合並那樣進行任何其他軟件缺陷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM