2013-12-18 72 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