我几天前问how to commit an arbitrary directory tree in ClearCase,我收到的答案是使用clearfsimport
工具。到目前为止,这已经完美无缺,可以进口"进入ClearCase(进入动态视图)任意目录树(来自某些外部文件系统目录):
clearfsimport -recu -nset /some/external/directory/foo .
我的工作流程是我在外部目录(foo
)中完成所有工作和测试,当我很高兴时,我使用上面描述的clearfsimport
工具将我的源提交到ClearCase。到目前为止,这在初始提交中已经起作用,但现在我发现自己想要导入修改后的源代码。实际上,我需要在现有foo
目录的位置导入一个新的目录树。这些更改可能很普遍:添加,删除或重命名的文件/目录,文件更改为目录或符号链接(反之亦然)。实际上,我们可能会讨论两个非常不同的目录树,其中包含非常详细的diff -r
输出。
我打算使用以下工作流程:
ct co .
ct rm foo // remove existing dir from view
ct ci .
clearfsimport -recu -nset /some/external/directory/foo . // import the new dir version
您是否认为上述方法在历史方面存在任何问题?
为了完全披露我使用git维护我的项目(在/some/external/directory
中),因此我创建了一个" clean"在运行clearfsimport
之前复制我的项目(删除特定于git的文件,如.git
,.gitignore
等)。我通常在git中有更详细的历史记录,但我只对维持特定值得注意的历史记录"里程碑"在ClearCase中,可能希望查看我的代码及其随时间演变的其他团队成员。话虽这么说,我不希望(暂时至少)使用任何工具将git桥接到ClearCase并且更喜欢保持简单。
我澄清说我正在尝试建立的工作流程只有一种方式(ClearCase的外部目录)以及我要导入到动态视图中。
查看clearfsimport
的手册页,我看到类似“两次通行证”的内容。被提及的和-rmname
之类的选项让我觉得可以只运行clearfsimport
目标是现有的目录结构(即无需ct rm
它首先)。但我不确定使用哪种咒语,以及这是否会处理给定名称以各种方式发生变化的情况(例如从文件到目录或从目录到符号链接或从符号链接到文件)或者如何处理重命名历史。
答案 0 :(得分:1)
您是否认为上述方法在历史方面存在任何问题?
是的:使用rm
时,您不应该clearfsimport
任何事情
只需导入到相同的视图/目标文件夹,ClearCase将检测到新的/修改/删除的文件,将相应地检出,更新或删除这些文件。
将-rmname
option添加到clearfsimport
,ClearCase将确保"镜像"您的导入,即源文件夹中已删除的文件将也在目标文件夹中删除。
使用的"咒语"与以前相同,只需添加-rmname
参数。
答案 1 :(得分:0)
您是否考虑过使用快照视图并直接在ClearCase中工作,这只是您的方法