我正在尝试使用本地分布式版本控制系统 (Mercurial) 来镜像我的公司 Starteam CM 服务器。由于 Starteam 在结帐功能上的关键字扩展,我在看到许多变化时遇到了问题。例如,服务器设置为将 $History 扩展为每个签入评论和其他元数据的日志。当我尝试合并时,这些通常会导致烦人的冲突。
我可以手动“取消扩展”关键字,但代码库非常大,这将花费非常长的时间。
如果关键字看起来像 CVS/RCS 关键字($Id$
等等),那么与 Mercurial 捆绑的关键字扩展可能有助于解开这些关键字。但不幸的是它只支持简单的关键字,而且听起来会像CVS 关键字一样$History
递增扩展。$Log$
但也许您可以使用关键字扩展作为起点?
mercurial 方面的另一个选择是使用precommit
挂钩自动取消展开您的 starteam 结帐文件中的关键字。
您~/.hgrc
可能会遇到这样的事情:
[hooks]
precommit.unexpand_starteam = find . -name '*.cpp' -print0 | xargs -0 perl -pie 's/$History.*?\n\n//m' ; exit 0
这将在提交之前从每个文件的第一个空白行中删除 $History 中的所有内容。我没有使用过starteam,但必须有某种方法来识别历史块的结尾(空白行是猜测),并且改变了perl行以反映你应该很好去。