clearcase快照劫持文件:如何签出/签入更改的文件

时间:2014-05-22 18:08:26

标签: git performance clearcase

Clearcase糟透了。看来我不能快速保存对项目的修改。我的意思是不到1秒。

我找到的解决方案是使用组合clearcase + git。我使用快照视图是因为我可以轻松地劫持我的文件而无需每次想要进行重构时都检查项目中的所有文件。

问题是,当我使用git并在新旧版本之间导航时,clearcase认为所有文件都被劫持。然后我需要做以下事情。

  1. cleartool update
  2. cleartool ls -recurse | grep"被劫持" | xargs cleartool diff -prev [...]>改变
  3. 猫改变了xargs cleartool co -nc
  4. 猫改变了xargs cleartool ci -c'有些话......'
  5. rm ** / *。保持
  6. git checkout。
  7. 该操作包括" clearcase push"使用git大约需要2秒钟将持续至少10分钟。我只看到关于这个问题的两个解释:

    1. 我真的不知道如何使用clearcase
    2. Clearcase非常糟糕!
    3. 有人知道如何快速结账,然后使用Clearcase而不是UCM版本签入修改过的劫持文件吗?

      修改:

      根据Vonc的建议,我制作了一个使用clearfsimport的脚本:

      #!/bin/bash/
      OUT="$(mktemp -d)"
      DST=/vob/project_root/
      echo -e "\nCreating temporary folder..."
      echo $OUT
      
      echo -e "\nCopying relevant elements..."
      find . | grep -E '.*?\.(c|h|inc|asm|mac|def|ldf|rst)$' | xargs -I % cp --parents % $OUT
      DOUT=$(cygpath -d $OUT/*)
      DDST=$(cygpath -d $DST)
      echo -e "\nImporting new elements to cleacase..."
      clearfsimport -rec -unco -nset $DOUT $DDST
      
      echo -e "\nRemoving temporary files..."
      rm -rf $OUT   
      

      我需要复制我的存储库的原因是clearfsimport无法直接排除文件或目录,并且通配符选项不适用于此工具。它按原样采用目录树。另外,我不想从我的工作目录中删除所有未经文档的文件,例如目标文件甚至.git。

      我认为通过使用git识别自上次执行脚本以来发生更改的所有文件,我可以使这个脚本更好。可能有点棘手...

      我也可以使用.gitignore

      设置匹配的文件模式

      也许其他人已经制作了这样的剧本......

1 个答案:

答案 0 :(得分:1)

从git工作树更新ClearCase文件的顺序几乎是“最优”的,这意味着它不会更快。

using ClearCase and Git clearfsimport ,并且有2个ClearCase视图时,我一直在玩一个替代方案。

  • 一个快照视图用于更新一组文件然后被劫持(供git工作树使用)
  • 将一个快照(或实际动态)视图作为收件人,即在第一个工作树中完成更改的目标。

clearfsimport允许您使用任何工作树(由ClearCase管理或不管理,它不关心),并在ClearCase视图中导入它(顺便说一下it can be a dynamic view),并且:

  • 仅结帐修改后的文件
  • 单独保留相同的文件
  • 删除/添加ClearCase视图中的文件,这些文件已在工作树中删除/创建

这是一个比传播所有内容更有效的过程,它应该更多更快。
这并不意味着 毕竟,它仍然是 ClearCase