如何处理VB6 .vbp文件引用的变化

时间:2009-10-02 19:11:16

标签: vb6

我们的VB6人是最后一次RIF(减少力量)的一部分。他所做的工作在我和另一位开发人员之间分道扬..我们经常都在同时对项目进行更改。这不是CVS的问题,因为我们在不同的领域工作。但是,VB6似乎修改了Reference部分,并在每次触摸项目时更改路径。由于我们没有为源树提供完全相同的路径设置,因此我们始终在vbp文件上遇到合并冲突。

除了改变我们设置的明显方法之外,还有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:5)

我建议两件事:

  1. 除非您向项目添加文件,否则不要提交.vbp。
  2. 将.vbp标记为只读,然后将其签入您的仓库。当用户检出它时,它应该仍然是只读的,这将防止保存参考路径(以及看似随机的文件重新排序)的更改。当您必须对项目进行更改时 - 将文件设置为读写,保存更改,然后在提交之前将其设置为只读。

答案 1 :(得分:3)

根据您的版本控制系统,可以自动解决此问题。 Subversion和Mercurial都支持钩子 - 由某些事件触发的脚本,例如签出,更新或提交。我们编写了一个在提交时触发的相当简单的脚本:它查看提交包中是否有.vbp,如果有,则运行“规范化”例程

  1. 将所有.cls / .bas / .frm文件按字母顺序放在.vbp的顶部
  2. 将参考部分按字母顺序排列
  3. 低引用参考路径
  4. 文件的其余部分是独立的,因为它只是VB看起来令人高兴的前三个部分。

    因此,大多数情况下,当您提交并且未对.vbp进行任何实质性更改时,钩子脚本会将.vbp文件还原为规范的,有序的状态(如恢复),其中包含从提交中删除它的效果,因为它不再被更改。

    如果您确实为项目添加了新文件或引用,VBP行的字母顺序排序意味着避免了合并冲突,因为您的VC合并算法可以轻松,正确地检测到更改。

    我们在Javascript中编写脚本并使用Windows Script Host执行它,因为至少对于Windows框,这会消除对Perl / Python等解释器的依赖。

    将此脚本连接到新的VB项目是一个30秒的工作。与其他手动方法相比,优势在于您无需有意识地处理VBP文件。只需将其与其他所有内容一起提交,脚本就可以完成剩下的工作。