[英]Mercurial: Merging from unknown divergant 'branch'
我正在嘗試在名為NS-3的項目上做一些工作,但是我的問題不是特定於項目的,因此我想在這里詢問相關的郵件列表。
基本上,制作了當時當前項目代碼的副本,並使用該代碼制作了新的存儲庫。 “分叉”版本和主干都完成了工作。
因此克隆了分叉的源,cd in和hg pull <latest-dev>
, hg merge
,雖然它不是完美的合並,但不可合並的更改都與一個庫更改有關,因此很容易修復(理論上)。 自然,這種樂觀嘗試沒有建立。
現在我不確定要從哪里去,我是DCVS的新手,所以請; 針對5歲兒童的想法!
我如何找出分叉版本的哪個變更集最后與dev-trunk合並,因為它們是分開的但又相關的回購協議?
從副本而不是克隆開始的情況:
如果發生這種情況:
hg init
在每個單獨的副本中運行,創建兩個不相關的存儲庫 然后要合並它們,您要在兩個不相關的存儲庫中進行最新操作:
hg update 0
,它使存儲庫跳回到最早的點,即它最后一次看起來與另一個相同的點 hg commit
,創建一個新的頭部 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.