【发布时间】:2008-11-26 23:11:22
【问题描述】:
无论我使用什么源代码控制系统(Visual SourceSafe、CVS、ClearCase 等),这总是很痛苦。合并 Visual Basic 表单时,二进制 .frx 文件总是会导致问题。
我知道...我知道...您为什么要使用 Visual Basic...因为仍有许多遗留应用程序使用它编写,虽然我不想承认,但我实际上喜欢使用它(鸭西红柿)。
【问题讨论】:
标签: version-control vb6 frm
无论我使用什么源代码控制系统(Visual SourceSafe、CVS、ClearCase 等),这总是很痛苦。合并 Visual Basic 表单时,二进制 .frx 文件总是会导致问题。
我知道...我知道...您为什么要使用 Visual Basic...因为仍有许多遗留应用程序使用它编写,虽然我不想承认,但我实际上喜欢使用它(鸭西红柿)。
【问题讨论】:
标签: version-control vb6 frm
您只需要硬着头皮将它们包含在版本控制系统中。不幸的是,它们确实包含源中其他任何地方都不可用的信息。 (例如,添加到 ImageList 控件的位图。)如果丢失了这些文件,则无法正确重建应用程序。
【讨论】:
Frx 合并是一大难题。如果您的版本控制系统允许锁定,我为什么建议您在 frx 文件上使用它以避免合并。例如,Subversion 支持锁定以避免编辑位图和其他二进制文件时出现问题。
话虽如此,我和我的公司已经在 Visual Basic 6.0 CAD/CAM 项目上使用 Subversion 五年多了,但在 frx 合并时只遇到过几次问题。
在所有情况下,解决问题都很简单。主要是由一个人备份他的表格并通过剪切和粘贴手动解决问题。如果有人在其中一个包含大量位图的表单上进行主要工作,那么我们会确保将其锁定并尽快完成项目的这一部分。
附:不要为 Visual Basic 的 FRX 奇怪之处道歉。任何时候两个人编辑同一个位图、WAV 或软件所依赖的任何其他类型的二进制文件,其他软件包都会出现同样的问题。
【讨论】:
我在 ClearCase 上工作并偶然发现了完全相同的问题,而 Google 查询让我最终来到了这里。由于这里的答案并没有真正提供有关如何在 ClearCase 上处理这些文件的技术细节,因此请允许我添加我今天所做的以解决我的问题。
问题:
.frx 文件是在 ClearCase 中使用“compressed_files”类型创建的,它不支持合并,并且可能会产生冲突,让不知情的用户感到困惑(并让您在 CM 团队中致电支持)。
解决方案:
IBM technote 中描述了我们将遵循的整体脚本
这两个新类型的参考可以在这个另一个IBM technote中找到
我个人为 .frx 文件选择 COPY 类型
您需要使用 ClearCase 类型资源管理器创建新类型。
我建议您首先在某处的测试 VOB 上创建新类型。一旦您对测试感到满意,请在您的管理 VOB 中创建新类型。 如果你在 UCM 上工作,那将是你的 PVOB(s) 级别。 无论哪种情况,请确保将新类型声明为 Global。 如果您不在 UCM 上工作,并且没有管理员 VOB,则必须在要使用它的所有单个 VOB 中创建新类型。
只需按照上述技术说明中的说明进行操作即可。
注意,重要提示:如果您在测试 VOB 中创建新类型,然后在管理 VOB 中创建它们(假设您的测试 VOB 是在管理 VOB 下)。删除元素类型会删除此类型的所有实例,因此不要创建此新类型来测试真实文件,因为从较低级别的 VOB 中删除类型将删除与其关联的所有文件!
小心不要丢失任何重要数据!
为此,您需要更改“魔术文件”。将更改集中到魔术文件是一个好主意(而不是必须在每个单独的客户端上进行更改)。您想在服务器(例如您的 VOBs 服务器)上更改一次,并让人们使用名为“MAGIC_PATH”的环境变量来指向它。
看到这个IBM Technote
复制并重命名 MAGIC_PATH 位置中的 default.magic 文件后,您需要更改 .frx 文件的定义。
在默认的魔法文件中实际上有两个条目:
(...)
# Match non-printable files by name
(...)
vb_form_compiled vb_derived compressed_file : !-printable & -name "*.[fF][rR][xX]" ;
(...)
# assumed to be binary
(...)
vb_form_compiled vb_derived compressed_file : -name "*.[fF][rR][xX]" ;
我对它们都进行了注释,并在魔术文件的最后一个条目之前添加了以下行:
# New COPY type:
frx_visual_basic vb_derived COPY : -name "*.[fF][rR][xX]" ;
# catch-all, if nothing else matches
compressed_file : -name "*" ;
#EOF
每个定义了 MAGIC_PATH 环境变量的客户端现在都应该正确地选择它,因此任何使用 .frx 后缀创建的新文件都将具有“COPY”元素类型。
cleartool find . -all -name "*.frx" -exec "cleartool chtype COPY %CLEARCASE_XPN%"
这会将所有 *.frx 文件的元素类型更改为新的 COPY 类型
您需要为所有 VOB 执行此操作。
注意:此答案顶部的第一个技术说明指出“Rational ClearCase Remote Client 不支持这种类型的合并(即 COPY)。”从 ClearCase 7.0.1 开始,从我今天所做的测试来看,现在已支持此功能。
【讨论】: