用户在错误的分支上检查了新文件。我想以最有效的方式移动它们,其中有很多。我的第一个想法是从分支中删除元素并让用户重新检查正确分支上的文件。但我希望有一种方法可以改变指针?
/VOB/DIRECTORY/file@@/main/1.00/1 to /VOB/DIRECTORY/file@@/main/2.00/1
答案 0 :(得分:0)
每当有大量文件需要结帐和移动时, clearfsimport
是一个可行的选择。
只需将视图设置为目标分支,然后导入在源(和错误)视图中找到的文件 请参阅“How can I use ClearCase to “add to source control …” recursively?”
这将检查,添加,修改或删除目标视图中的文件以镜像来自源的文件(这里的源是ClearCase视图,但它实际上可以是任何文件夹,ClearCase视图与否,其中文件是)。
这将足以“重新检查正确分支上的文件”,但这不会从错误的分支中删除版本,我会建议使用{{1} 反对 }(即使I used that here) 也许是subtractive merge is better。
答案 1 :(得分:0)
如果您知道它们的位置以及您想要的位置,您可以: 1)合并目录和文件。 2)在目标分支的视图中使用cleartool ln链接文件,然后单独合并文件。
如果您使用clearfsimport,并且不清除添加在错误位置的文件,您可以设置自己为“邪恶双胞胎”引起的路上“乐趣”。
就个人而言,既然你知道添加的文件和目录,在哪里,何时以及由谁,你可以做这样的事情(命令行不是我的头脑:
获取要复制/合并的文件列表
cleartool find -type d -element "created_by(baduser) && created_since(25-Jul-2016) && !created_since(26-Jul-2016)" -print > dirlist.txt
cleartool find -type fl -element "created_by(baduser) && created_since(25-Jul-2016) && !created_since(26-Jul-2016)" -print > filelist.txt
通过使用目标路径在视图中进行CD /设置时合并父目录来拉出目录。不知道操作系统涉及到我不知道你需要解析这个方法。如果使用perl,则可以获取目录分隔符的最后一个实例的偏移量,并使用substr中的该偏移量来获取父目录路径。在Windows命令提示符下,您可以执行以下操作:
SET SRCDRIVE=D:
for /f "delims==" %x in (dirlist.txt) do cleartool co -nc %~px & cleartool merge -to %~px %SRCDRIVE%~px
for /f "delims==" %x in (dirlist.txt) do cleartool co -nc %~px & cleartool merge -to %~px\%~nx %SRCDRIVE%~px\%~nx
是的,您可以在一个脚本中执行所有操作,并执行更好的错误检查,而不是尝试40x来检查同一目录。
答案 2 :(得分:0)
您也可以将它们合并到2.0分支(使用选择2.0分支的视图)。要确定所涉及的元素,您可以运行一个' cleartool find'命令如下:
% cd /vobs/myvob
% cleartool find -all -version 'brtype(1.0) && created_by(user_x)' -print
' created_since(日期 - 时间)'查询在复合查询中也可能有用。
一旦您确信自己拥有正确的版本,就可以使用' -exec'取代' -print'实际执行合并。它可能看起来像这样:
% cleartool find -all -version 'brtype(1.0) && created_by(user_x) && created_since(29-Jun)' -exec 'cleartool merge -to $CLEARCASE_PN -version $CLEARCASE_ID_STR'
如果您对结果感到满意,请检查所有内容。然后,您只需要决定是否需要删除1.0分支上的版本(您可以使用另一个&chountool查找.. 。-exec ...'命令)。