2011-11-23 43 views
1

我們正在使用ClearCase爲我們的團隊使用單個Dev流,沒有「鎖定」(未保留簽出)。ClearCase自動合併刪除團隊成員的代碼

ClearCase的客戶端版本:7.1.1 ClearCase的服務器版本:7.0.1.2

我們已經進行了同樣的測試,而無需使用 「圖形合併」。該選項按預期工作!也許這可以揭示ClearCase上過去的缺陷或解決方法。

這意味着,2個或更多的人可以進行編輯同一個文件一次,而無需等待該文件以進行檢查。

我們已經看到的怪異行爲,少數病例和試驗今天有點發現以下場景發生:

  1. File.txt由2名團隊成員簽出。
  2. 每個成員都在文件中進行更改(在文件的其他區域中)。
  3. 第一個開發人員在代碼中檢查ClearCase,這裏沒有問題。
  4. 第二個開發者簽入,獲得合併彈出通知。

當選擇「圖形合併」時,在這種情況下,ClearCase會通知所有合併都自動完成,並且不需要開發人員進行額外的輸入。

再看一點,第一次檢查是刪除(刪除),只保留後面的檢查更改。

這是怎麼發生的?這導致我們的團隊已經多次失去代碼。我們正在做一些不安全/錯誤的事情嗎?

編輯:這個問題的圖像,說明問題:

文件Manager.cs的版本爲27 兩個開發人員正在檢查出來。

其中一個發生了變化,簽入。 另一個簽入,獲取合併通知。

這是我在圖形合併看到:

注意,左邊是27版的,中間版本28(最新版本檢查),而右邊是一個正在下降的結果版本28的代碼更改!

這是爲什麼會自動發生?

Merge

圖片也可以在這裏看到:Image

+0

不正確的是不會放棄的代碼更改。右側是當前由dev2檢出的文件,其中有dev2更改。合併的結果位於該屏幕截圖的頂部,並刪除由dev2添加的行。奇怪的是,在3路合併中,ClearCase應該選擇保持base/dev2版本(不添加新行)而不是源版本(添加1行新行)。這是通過具有完整ClearCase客戶端的經典合併工具,還是通過外部差異/合併工具?或通過一些基於Web的CCRC接口實現的? – VonC

+0

http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m1/index.jsp?topic=/com.ibm.rational.clearcase.tutorial.doc/a_how_cc_merges.htm:「對於任何線已經改變之間基礎貢獻者和另一個貢獻者,Rational ClearCase通過接受貢獻者中的更改來執行微不足道的合併「。所以它應該保持dev1的變化(版本28) – VonC

+0

標準安裝,沒有自定義合併工具。使用clearcase explorer檢入並處理合並...這可以配置爲一個策略嗎? –

回答

1

注:如果您使用ClearCase而不「鎖」,這意味着你正在做限制檢出(而不是保留檢出)。

如果選擇「圖形合併」,即使沒有衝突,也應該看到一個Windows幫助您協調合並。

這種合併不應刪除任何先前簽入:它可能會取消以前的修改,僅當選擇了所有的新變化,但如果你有圖形化合並窗口打開,你可以控制的合併是如何應用。

對於你過去有問題的合併,你可以很容易地從版本樹從以前的版本DEV1的重新合併到最新版本,以重新應用這些取消的變化。


由於我最初的回答3天前,2個新的信息來了解:

  • ClearCase的客戶端版本:7.1.1 ClearCase的服務器版本:7.0.1.2。
    這從來都不是好事,有一個客戶端版本更近比服務器。

  • 我們已經進行了同樣的測試,而無需使用「圖形合併」。該選項按預期工作!
    這將與用於合併的GUI和純命令行之間已經出現的一些差異一致(如this other scenario)。
    當GUI失敗時,總是嘗試回到純CLI(命令行界面)。

+0

我的意思是毫無保留,這是一個錯誤。自動化的ClearCase合併窗口指定它能夠自動合併兩個版本。但是,在這種情況下,它會自動刪除上次檢入所做的更改。合併較大的文件使得檢測這些文件幾乎是不可能的,除非通過自動或手動的所有合併點(可能這應該是實踐?)這對我們來說完全違反直覺,並且導致我們許多問題。 –

+0

@liortal:但看着該合併文件的版本樹,你確認你沒有*丟失* dev1的變化(在該dev1簽入仍然存在)?然後問題是在這個微不足道的合併過程中完成了新的簽入,這似乎取消了dev1的更改,只留下了dev2的更改,對吧? – VonC

+0

對不起,如果我沒有表達自己的確切正確的術語。在版本樹中,我能夠看到兩個節點(版本):一個是較早的,其中包含dev1更改。第二個僅包含dev2更改。您可以將其稱爲取消或刪除dev1更改,無論術語是什麼,在較新版本中,dev1更改將從最新版本的文件中消失。在進行多次檢查後,稍後再進行查找,使得無法將更改重新應用到最新版本。爲什麼ClearCase像這樣行事?這是標準的行爲? –