2013-12-18 97 views
2

因此,我將在兩個分支之間以明文形式創建差異日誌/補丁的典型方法是簡單地創建兩個視圖並執行典型的unix差異。但我必須假設有一個更明確的方法(也是一個'班輪')。clearcase在父分支和子分支之間創建差異

所以知道怎麼去修改過的上一個分支的所有文件的列表:

cleartool find . -type f -branch "brtype(<BRANCH_NAME>)" -print 

,並知道如何獲得差異格式化輸出爲兩個單獨的文件:

cleartool diff FILE [email protected]@/main/PARENT_BRANCH_PATH/LATEST 

所以沒有人看到以下任何問題,以獲得在分支中更改的所有文件的差異?

cleartool find . -type f -branch "brtype(CHILD_BRANCH)" -exec 'cleartool diff -ser $CLEARCASE_PN `echo $CLEARCASE_XPN | sed "s/CHILD_BRANCH/LATEST/"` ' > diff.log 

任何修改和意見是大大提前

感謝的歡迎!

更新:任何想法如何得到這也是unix統一差異也將不勝感激。

UPDATE2:所以我覺得我有我的解決方案,要感謝VonC送我在正確的方向:

cleartool find . -type f -branch "brtype(CHILD_BRANCH)" -exec 'cleartool get -to $CLEARCASE_PN.prev `echo $CLEARCASE_XPN | sed "s/CHILD_BRANCH/LATEST/"`; diff -u $CLEARCASE_PN.prev $CLEARCASE_PN; rm -f $CLEARCASE_PN.prev' > CHILD_BRANCH.diff 

輸出似乎工作,我可以通過kompare讀取文件無投訴。

+0

我已經編輯我的答案,解決您的問題的最後一部分。 – VonC

+0

看起來不錯。我在下面的答案中列出了您的解決方案,以提高可見性。 – VonC

回答

2

這個想法是健全的。

我只想確保$CLEARCASE_PN$CLEARCASE_XPN與他們周圍的雙引號中,要考慮到與文件路徑或文件名潛在空間(如「How do I list ClearCase versions without the Fully-qualified version?」所示)。

cleartool find . -type f -branch "brtype(CHILD_BRANCH)" -exec 'cleartool diff -ser "$CLEARCASE_PN" `echo "$CLEARCASE_XPN" | sed "s/CHILD_BRANCH/LATEST/"` ' > diff.log 

使用簡單的報價爲-exec指令是一個好主意,因爲在「CLEARCASE_XPN not parsed as variable in clearcase command」解釋。


然而,cleartool diff,甚至與-ser-serial)選項不產生正是Unix unified diff format(或Unified Format的簡稱)。

-diff_format)選項是最接近的,正如我提到的「How would you measure inserted/changed/removed code lines (LoC)?

-diff_format選項導致兩個頭和分歧在UNIX和Linux diff工具的風格進行報道,編寫必要的變更列表,將所比較的第一個文件轉換爲第二個文件。

一個想法是使用cleartool diff,而是直接使用diff,因爲它可以在動態視圖通過發現元素的extended pathname訪問正確的版本。


OP ckcinsolution接近那個什麼I suggested與cleartool得到:

cleartool find . -type f -branch "brtype(CHILD_BRANCH)" -exec 'cleartool get -to $CLEARCASE_PN.prev `echo $CLEARCASE_XPN | sed "s/CHILD_BRANCH/LATEST/"`; diff -u $CLEARCASE_PN.prev $CLEARCASE_PN; rm -f $CLEARCASE_PN.prev' > CHILD_BRANCH.diff 

輸出似乎工作,我可以通過kompare讀取文件無投訴。

在多線,爲便於閱讀:

cleartool find . -type f -branch "brtype(CHILD_BRANCH)" 
    -exec 'cleartool get -to $CLEARCASE_PN.prev 
      `echo $CLEARCASE_XPN | sed "s/CHILD_BRANCH/LATEST/"`; 
     diff -u $CLEARCASE_PN.prev $CLEARCASE_PN; 
     rm -f $CLEARCASE_PN.prev' > CHILD_BRANCH.diff 
+0

有沒有辦法直接使用diff與快照視圖? – ckcin

+0

@ckcin不容易,考慮到擴展路徑名不能直接從快照視圖讀取(請參閱http://stackoverflow.com/a/177350/6309,儘管您可以嘗試使用'cleartool get':請參閱http:// stackoverflow.com/a/18716494/6309)。我會堅持動態觀點。 – VonC