我最近使用了git svn
并非常喜欢它。现在我要在一个不同的客户处启动一个新项目,该客户选择的SCM是ClearCase。我还没有找到与git svn
相对应的ClearCase工具。是否有人尝试过使用一些技巧、配置或脚本将git作为ClearCase的本地前端,并取得了一定的成功?如果有,能否请您解释一下所使用的方法?
我最近使用了git svn
并非常喜欢它。现在我要在一个不同的客户处启动一个新项目,该客户选择的SCM是ClearCase。我还没有找到与git svn
相对应的ClearCase工具。是否有人尝试过使用一些技巧、配置或脚本将git作为ClearCase的本地前端,并取得了一定的成功?如果有,能否请您解释一下所使用的方法?
% git checkout master % git pull % git checkout feature % git rebase master % git checkout master % git merge feature % git branch -d feature % git diff --name-status origin/master
通过检出/创建元素/删除元素,准备ClearCase视图中的任何更改/新文件/已删除文件,基于git diff --name-status
的输出。我们使用手动脚本来完成此操作。不要忘记检出添加/删除文件的目录:
然后将git内容推回,并使用ClearCase进行签入:
% git push % cd /path/to/repo % git reset --hard % cleartool ci `cleartool lsco -r -short -me`
这似乎是很多命令,但这包括设置,您的日常工作流程并不使用很多命令。您可以轻松地围绕将内容推回ClearCase步骤构建脚本,并逐渐向团队展示所有酷炫的额外git内容,让每个人都习惯基本工作流程。
这个系统真正的美妙之处是,经过一段时间,当每个人都能够熟练掌握git时,您可以轻松地放弃ClearCase和所有相关的个人工作和费用。也许可以给公司的ClearCase专员一个非常需要的假期和一些节约成本的再培训。(不幸的是,在我的公司中,git内容都是由个人完成的,并且我们已经转向Subversion-从ClearCase向前,但从git向后!)
我强烈建议您使用全局ClearCase,本地Git的pristine
脚本,它在ClearCase快照视图中运行,并确保它与git同步。我们将其设置为每天两次运行的cron作业,并在准备推回git时手动运行它。
不幸的是,博客文章的链接已经失效。但是该脚本仍可在Github上找到。虽然这个方法不是没有缺陷的(你已经被警告了),但我想提一下,我写了一个桥接程序。
http://github.com/charleso/git-cc
在两个系统之间进行桥接并不容易,我希望我的解决方案像git-svn一样好。一个很大的限制是你只能镜像一个流; git-cc不能克隆所有Clearcase分支(尽管这将是非常方便的)。然而,考虑到大多数替代脚本都围绕单个Clearcase视图解决,你不会更糟(在我看来)。
就个人而言,我认为历史记录非常重要,其他解决方案缺少的是将历史记录导入Git。有时候能够运行git-blame命令并查看文件的实际作者非常有用。
如果没有其他更好的方法,git-cc可以处理Matt上面解决方案中提到的'git log --name-status'步骤。
我肯定很想听听VonC和Matt(以及其他人)对此的看法,因为我同意任何与Clearcase之间的桥梁都充满了困难,可能会带来更多麻烦。
cleartool move src/file dst/renamedFile
”,然后检入src
和dst
目录。 - VonC