如何在任意目录树

时间:2017-02-22 16:09:05

标签: clearcase

我几天前问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它首先)。但我不确定使用哪种咒语,以及这是否会处理给定名称以各种方式发生变化的情况(例如从文件到目录或从目录到符号链接或从符号链接到文件)或者如何处理重命名历史。

2 个答案:

答案 0 :(得分:1)

  

您是否认为上述方法在历史方面存在任何问题?

是的:使用rm时,您不应该clearfsimport任何事情 只需导入到相同的视图/目标文件夹,ClearCase将检测到新的/修改/删除的文件,将相应地检出,更新或删除这些文件。

-rmname option添加到clearfsimport,ClearCase将确保"镜像"您的导入,即源文件夹中已删除的文件将在目标文件夹中删除。

使用的"咒语"与以前相同,只需添加-rmname参数。

答案 1 :(得分:0)

您是否考虑过使用快照视图并直接在ClearCase中工作,这只是您的方法