首先,在我工作的地方,我们被迫 使用CVS,没有任何其他 选择。我个人使用git。
有时我并不总是对模块执行cvs update
,但我会从生产服务器上下载实际文件,该文件保证是最新的(99%的情况)。
我最终做了一个cvs commit
,发现我没有更新,所以场景是这样的:
cvs commit file.xml
cvs commit: Up-to-date check failed for 'file.xml'
mv file.xml 2
cvs update file.xml
rm file.xml
cvs mv 2 file.xml
我正在考虑编写一个shell脚本,该脚本会自动cvs更新我正在提交的文件并提交它们......但是想知道是否有一些原生的方法。
除了不使用cvs之外的任何建议都表示赞赏!
PS - 我使用!!:n
,其中n
是数字。我只是没有在我的代码示例中使用它,因为它更加清晰。
答案 0 :(得分:1)
我怀疑文件的下载是优化步骤吗?在提交之前更新是必需步骤的原因是为了使文件的上下文与服务器上的内容保持一致。我可以想到手动方法的几个问题:
如果你的工作需要孤立,那就做一个分支并在那里工作。手动摇晃CVS是一条容易流泪的道路。
答案 1 :(得分:1)
您在该示例会话中所做的实际上是对最近修订的作者的粗暴行为,这些修订在此期间显然已经提交,因为您将有效地还原所有这些更改。这正是为什么CVS要求文件在允许提交之前基于提示修订(又名“是最新的”)的原因。
但是,如果恢复或替换这些中间更改正是您想要执行的操作,那么您引用的步骤确实是最快的方法。这种方法的缺点是没有跟踪恢复过程:至少在CVSNT上执行proper reversion会导致记录合并点,以便修订图表显示您恢复的版本。
在update
之前不移动文件至少会将远程更改与本地更改合并。但是,如果没有验证,这应该永远不会被提交,因此对这种情况采用完全脚本化的方法是没有任何意义的。
答案 2 :(得分:0)
按照预期使用CVS。换句话说,在cvs update
之前cvs commit
。 cvs update
修改CVS沙箱中的其他一些信息,只是复制文件不会。
你真的不应该直接访问存储库。这会带来许多潜在的问题。