在ClearCase中,由于几个开发人员的工作流程不同,我们最终得到了两个分支上的一些文件,即使它们是相同的;这会导致在rebase / merge期间出现不必要的麻烦。要从其中一个分支中删除它们,首先,我需要找到BRANCH_1和BRANCH_2上相同的元素(文件/目录)列表。有没有办法找到这个清单?
我知道如何使用Report Builder(和cleartool脚本)并找到两个标签之间的差异,但这似乎没有帮助。
任何帮助将不胜感激!
答案 0 :(得分:0)
在您的情况下,我们讨论的是同一个文件,在不同的分支上有两个相同的版本。
检测这些快照的最简单方法是通过2个快照视图(快照因为读取访问速度比动态视图更快),并使用简单的差异工具(例如kdiff3)
对于检测到的每个相同文件,您可以在两个不同分支的两个版本之间绘制合并箭头。请参阅“Merge arrow in clear case”。
在下一次常规ClearCase合并期间,该合并箭头足以让ClearCase 不考虑(即忽略)这些相同的文件。
OP注意到:
两个视图在
branch1
上都有一些公共文件显示为相同,因为快照对每个视图都有相同的副本。
我需要的只是存在于不同分支但内容相同的文件。
同样,cleartool descr -fmt
方法很有用:它允许您使用完整的扩展路径描述元素(使用%n
:/main/x/branch1/y
):这样,对于一个文件存在于两个视图中并且已被diff工具发现“相同”,您可以检查是否找到了2个不同的扩展路径名,或者使用相同的路径名(在这种情况下,您不必对该文件执行任何操作) )
原始答案:不同分支上的两个相同文件“在rebase / merge期间引起不必要的麻烦”通常是邪恶的双胞胎。
official IBM documentation about Evil Twin确实建议使用简单的cleartool find(您还有old 2010 video on it)。
结合fmt_ccase,您可以使用descr -fmt "%En %On\n"
启动2次搜索:
branch1
branch2
这将显示找到的元素的全名,以及它们的oid(对象id):具有相同名称但不同oid的2个文件将是一个邪恶的双胞胎。
您会在“What's the easiest way to detect “evil twins” in Rational ClearCase?”
中找到类似的方法