1

有人可以指導我在正確的和最佳的方式來解決這個問題?我有兩個活動的開發分支,其中 - 在相同的代碼庫中進行修改,並在基本的清除環境中創建一個集成分支。但我想阻止從分支2到集成分支的代碼提升,並允許只從分支1到合併分支進行合併。請指教。基地ClearCase-防止從一個特定的分支合併

回答

0

如果有不同的用戶從開發流交付給集成流,你可以(使用cleartool lock -nusers ... stream:[email protected]\vobs\apvob):

  • devstream1對所有除dev1(這樣你肯定dev1只能devstream1工作),
  • devstream2所有除了dev2(這樣你肯定dev2只能devstream2工作),
  • intstream所有除了你和dev1(這種方式只dev1可以提供給intstream

如果我還是DEV1誤促進代碼devstream2到intstream

那麼你就需要一個preopdeliver_start觸發(帶mktrtype)。
該觸發器將控制觸發器中的流的OID,因爲它們是不可變的:cleartool describe -fmt %On <stream-name>
如果其中一個是devstream2的觸發器,則觸發器將錯誤退出,拒絕遞送。

+0

感謝您的答覆。我對你的迴應有一個問題,那正是我正在嘗試解決的問題。如果我或dev1錯誤地將代碼從devstream2推廣到intstream會怎麼樣? – user2705120

+0

@ user2705120我編輯瞭解答您的評論的答案。 – VonC

0

因爲它聽起來像你使用基本的ClearCase,您可以使用術前「籤」觸發。觸發器執行的腳本會查看檢入的版本是否有任何傳入的合併超鏈接。如果是這樣,腳本可以驗證超鏈接的「from」結尾是否來自branch1,如果是,則返回0。如果它來自任何其他分支,則腳本將打印一條描述性錯誤消息並以非零狀態退出(從而阻止簽入)。

在創建觸發器類型,你可以限制觸發集成分支(我將在下面的例子中所說的「my_int_branch」),它與性能幫助的範圍。命令行可能會是這個樣子:

% cleartool mktrtype -element -all -preop checkin -brtype my_int_branch -exec path_to_allow_branch1_merge_script allow_branch1_merge 

在腳本中,你可以連接到簽出的版本合併超鏈接(S)的東西,如:

cleartool describe -fmt '%[hlink:Merge]p\n' $CLEARCASE_PN 

如果有任何進入合併的超鏈接,你會得到每超級鏈接看起來應該這樣一行:

"[email protected]@/vobs/myvob" <- "/vobs/myvob/mydir/[email protected]@/main/branch1/3" 

腳本然後只是有來驗證「從」版本「BRANCH1」的外分支。

相關問題