代码之家  ›  专栏  ›  技术社区  ›  Kevin Gale

如何处理vb6.vbp文件引用更改

vb6
  •  6
  • Kevin Gale  · 技术社区  · 15 年前

    我们的vb6人是最后一个RIF(减少部队)的一部分。他所做的工作已经在我和另一个开发人员之间分开了。我们经常同时对项目进行更改。这对CVS来说不是问题,因为我们在不同的领域工作。但是,每当我们中的任何一个人接触到一个项目时,vb6似乎都会修改引用部分并更改路径。由于我们没有完全相同的源代码树路径设置,所以我们总是在vbp文件中遇到合并冲突。

    除了改变设置的明显方法之外,还有其他方法可以解决这个问题吗?这样我们就有了相同的目录结构。

    2 回复  |  直到 12 年前
        1
  •  5
  •   C-Pound Guru    15 年前

    我建议两件事:

    1. 除非向项目中添加文件,否则不要提交.vbp。
    2. 将.vbp标记为只读,并将其签入您的repo。当用户签出它时,它仍然应该是只读的,这将阻止保存对引用路径的更改(以及文件的似乎随机重新排序)。当您必须对项目进行更改时——使文件读写,保存更改,然后在提交之前再次将其设为只读。
        2
  •  3
  •   perlyking    12 年前

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

    1. 将所有.cls/.bas/.frm文件按字母顺序放在.vbp的顶部。
    2. 将参考资料部分按字母顺序排列
    3. 下套管参考路径

    文件的其余部分是单独留下的,因为它只是前三个部分,vb似乎很乐意弄乱。

    因此,大多数情况下,当您提交并且没有对.vbp进行任何实质性更改时,hook脚本会将.vbp文件还原为规范的、有序的状态(如revert),这会影响从提交中删除它,因为它不再被更改。

    如果确实向项目添加了新文件或引用,则vbp行的一致字母排序意味着可以避免合并冲突,因为vc合并算法可以轻松、正确地检测更改。

    我们用JavaScript编写脚本并使用Windows脚本宿主执行它,因为至少对于Windows框来说,这消除了对perl/python等解释器的依赖。

    将这个脚本连接到新的VB项目是一项30秒的工作。与其他手动方法相比,优势在于您没有任何自觉的努力来处理vbp文件。只需将它与其他一切一起提交,脚本就可以处理其余的部分。