你如何处理源代码管理中的visual basic 6 frm和frx文件?

时间:2008-11-26 23:11:22

标签: version-control vb6 frm

无论我使用什么源代码控制系统(源代码安全,cvs,clearcase ......),这总是很痛苦二进制.frx文件在合并可视化基本表单时总是会出现问题。

我知道......我知道......你为什么使用Visual Basic ...因为有许多遗留应用程序仍然使用它编写,虽然我不愿意承认它我真的喜欢使用它( ducks番茄

3 个答案:

答案 0 :(得分:15)

你需要咬紧牙关并将它们包含在版本控制系统中。不幸的是,他们包含源中其他任何地方都无法获得的信息。 (例如,位图添加到ImageList控件。)如果丢失了这些文件,则无法正确重建应用程序。

答案 1 :(得分:8)

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

据说我的公司和我在VB6 CAD / CAM项目上使用Subversion超过5年,并且只遇到了frx合并一些时间的问题。在所有情况下,解决问题都很简单。主要由一个人备份他的表格并通过剪切和粘贴手工解决问题。如果有人在其中一个具有大量位图的表单上做了大量的工作,那么我们确保锁定它并尽可能快地完成项目的那部分。

P.S。不要为VB的FRX奇怪道歉,其他软件包在任何时候编辑相同的位图,wav或软件依赖的任何其他类型的二进制文件时都会遇到同样的问题。

答案 2 :(得分:4)

我在使用ClearCase并遇到完全相同的问题,谷歌查询让我最终到了这里。由于这里的答案并没有真正提供如何在ClearCase上处理这些文件的技术细节,请允许我添加我今天所做的工作以解决我的问题。

问题:

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

解决方案:

我们将遵循的整体脚本在此IBM technote

中有所描述

  1. 首先,您需要了解二进制文件所需的处理类型:NEVER_MERGE或COPY。

    可以在其他IBM technote

    中找到对这两种新类型的引用

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

    您需要使用ClearCase Type Explorer创建新类型。

    我建议你先在某个测试VOB上创建新类型。一旦您对测试感到满意,请在Admin VOB中创建新类型。 如果您正在使用UCM,那将是您的PVOB级别。 在任何一种情况下,请确保将新类型声明为Global。 如果您没有使用UCM,并且没有管理员VOB,则必须在要使用它的所有单个VOB中创建新类型。

    请按照上述技术说明中的说明操作。

    注意,重要事项:如果您已在测试VOB中创建新类型,则必须先从“较低”VOB中删除新类型,然后再在管理VOB中创建它们(假设您的测试VOB为在Admin VOB下)。删除元素类型会删除此类型的所有实例,因此不要创建这些新类型以便在真实文件上进行测试,因为从较低级别删除类型VOB将删除与其关联的所有文件!

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

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

    为此,您需要更改“Magic File”。将更改集中到魔术文件(而不是必须在每个客户端上进行更改)是个好主意。您希望在服务器(例如VOB服务器)上更改一次,并让人们使用名为“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”元素类型。

  3. 如果您的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开始,从今天的测试开始,现在支持这个。

干杯,

托马斯