您如何处理源代码管理中的 Visual Basic 6.0 frm 和 frx 文件?

Posted

技术标签:

【中文标题】您如何处理源代码管理中的 Visual Basic 6.0 frm 和 frx 文件?【英文标题】:How do you deal with Visual Basic 6.0 frm and frx files in source control? 【发布时间】:2008-11-26 23:11:22 【问题描述】:

无论我使用什么源代码控制系统(Visual SourceSafe、CVS、ClearCase 等),这总是很痛苦。合并 Visual Basic 表单时,二进制 .frx 文件总是会导致问题。

我知道...我知道...您为什么要使用 Visual Basic...因为仍有许多遗留应用程序使用它编写,虽然我不想承认,但我实际上喜欢使用它(鸭西红柿)。

【问题讨论】:

【参考方案1】:

您只需要硬着头皮将它们包含在版本控制系统中。不幸的是,它们确实包含源中其他任何地方都不可用的信息。 (例如,添加到 ImageList 控件的位图。)如果丢失了这些文件,则无法正确重建应用程序。

【讨论】:

子弹被咬了。很高兴知道我不是唯一一个!【参考方案2】:

Frx 合并是一大难题。如果您的版本控制系统允许锁定,我为什么建议您在 frx 文件上使用它以避免合并。例如,Subversion 支持锁定以避免编辑位图和其他二进制文件时出现问题。

话虽如此,我和我的公司已经在 Visual Basic 6.0 CAD/CAM 项目上使用 Subversion 五年多了,但在 frx 合并时只遇到过几次问题。

在所有情况下,解决问题都很简单。主要是由一个人备份他的表格并通过剪切和粘贴手动解决问题。如果有人在其中一个包含大量位图的表单上进行主要工作,那么我们会确保将其锁定并尽快完成项目的这一部分。

附:不要为 Visual Basic 的 FRX 奇怪之处道歉。任何时候两个人编辑同一个位图、WAV 或软件所依赖的任何其他类型的二进制文件,其他软件包都会出现同样的问题。

【讨论】:

感谢锁定建议。我很确定 ClearCase(我们使用的版本控制系统)会允许这样做。【参考方案3】:

我在 ClearCase 上工作并偶然发现了完全相同的问题,而 Google 查询让我最终来到了这里。由于这里的答案并没有真正提供有关如何在 ClearCase 上处理这些文件的技术细节,因此请允许我添加我今天所做的以解决我的问题。

问题:

.frx 文件是在 ClearCase 中使用“compressed_files”类型创建的,它不支持合并,并且可能会产生冲突,让不知情的用户感到困惑(并让您在 CM 团队中致电支持)。

解决方案:

IBM technote 中描述了我们将遵循的整体脚本

    首先,您需要了解您希望对二进制文件进行哪种类型的处理:NEVER_MERGE 或 COPY。

    这两个新类型的参考可以在这个另一个IBM technote中找到

    我个人为 .frx 文件选择 COPY 类型

    您需要使用 ClearCase 类型资源管理器创建新类型。

    我建议您首先在某处的测试 VOB 上创建新类型。一旦您对测试感到满意,请在您的管理 VOB 中创建新类型。 如果你在 UCM 上工作,那将是你的 PVOB(s) 级别。 无论哪种情况,请确保将新类型声明为 Global。 如果您不在 UCM 上工作,并且没有管理员 VOB,则必须在要使用它的所有单个 VOB 中创建新类型。

    只需按照上述技术说明中的说明进行操作即可。

    注意,重要提示:如果您在测试 VOB 中创建新类型,然后在管理 VOB 中创建它们(假设您的测试 VOB 是在管理 VOB 下)。删除元素类型会删除此类型的所有实例,因此不要创建此新类型来测试真实文件,因为从较低级别的 VOB 中删除类型将删除与其关联的所有文件!

    小心不要丢失任何重要数据!

    您需要确保将使用正确的新类型创建任何新的 .frx 文件。

    为此,您需要更改“魔术文件”。将更改集中到魔术文件是一个好主意(而不是必须在每个单独的客户端上进行更改)。您想在服务器(例如您的 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”元素类型。

    如果您的 VOB 中已有 .frx 文件,您希望将它们更改为新类型: 锁定 VOB 从 DOS 提示符(从您的 VOB 顶部)在 Windows 上使用以下命令:
    cleartool find . -all -name "*.frx" -exec "cleartool chtype COPY %CLEARCASE_XPN%"
    

    这会将所有 *.frx 文件的元素类型更改为新的 COPY 类型

    解锁 VOB

    您需要为所有 VOB 执行此操作。

注意:此答案顶部的第一个技术说明指出“Rational ClearCase Remote Client 不支持这种类型的合并(即 COPY)。”从 ClearCase 7.0.1 开始,从我今天所做的测试来看,现在已支持此功能。

【讨论】:

以上是关于您如何处理源代码管理中的 Visual Basic 6.0 frm 和 frx 文件?的主要内容,如果未能解决你的问题,请参考以下文章

您如何处理模型类中的外键关系

您如何处理深度链接插件中的简历场景?

您如何处理 Apache Pig 中的空输入文件或丢失的输入文件?

您如何处理 Flash AS3 中的实时视频流?

您如何处理 REST API 服务器中的高吞吐量函数?

如何在 tkinter GUI 位于同一文件中的情况下运行 python 脚本?您如何处理用户条目?