Как вы работаете с Visual Basic 6 FRM и FRX файлов в системе контроля версий? - PullRequest
20 голосов
/ 27 ноября 2008

Это всегда неприятно, независимо от того, какую систему контроля версий я использовал (source safe, cvs, clearcase ...), двоичные файлы .frx всегда вызывают проблемы при объединении визуальных базовых форм.

Я знаю ... я знаю ... почему вы используете Visual Basic ... потому что есть много старых приложений, все еще написанных с использованием его, и хотя я не хочу признавать это, мне действительно нравится его использовать ( утки) помидоры )

Ответы [ 3 ]

15 голосов
/ 27 ноября 2008

Вам нужно просто откусить пулю и включить их в систему контроля версий. К сожалению, они do содержат информацию, которой больше нет в источнике. (Например, растровые изображения добавляются в элементы управления ImageList.) Если вы потеряете эти файлы, вы не сможете правильно перестроить приложение.

8 голосов
/ 27 ноября 2008

Frx слияния являются основной болью. Именно поэтому я рекомендую, если ваша система контроля версий разрешает блокировку, убедитесь, что вы используете ее для файлов frx, чтобы избежать слияний. Например, Subversion поддерживает блокировку, чтобы избежать проблем с редактированием растровых изображений и других двоичных файлов.

С учетом вышесказанного моя компания и я уже более 5 лет используем Subversion в проекте CAD / CAM VB6 и столкнулись только с проблемой слияния frx с небольшим количеством времени. Во всех случаях это было просто решить. В основном один человек делает резервную копию своей формы и решает проблему вручную посредством вырезания и вставки. Если кто-то выполняет основную работу над одной из форм с большим количеством растровых изображений, тогда мы обязательно заблокируем ее и выполним эту часть проекта как можно быстрее.

P.S. Не извиняйтесь за странность FRX в VB, так как другие пакеты имеют одинаковую проблему каждый раз, когда два человека редактируют один и тот же растровый файл, WAV или любой другой тип двоичного файла, от которого будет зависеть программное обеспечение.

4 голосов
/ 27 мая 2009

Я работаю над ClearCase и сталкиваюсь с точно такой же проблемой, и запрос Google заставляет меня оказаться здесь. Поскольку ответы, приведенные здесь, на самом деле не дают технических подробностей о том, как обращаться с этими файлами в ClearCase, позвольте мне добавить то, что я сделал сегодня, чтобы решить мою проблему.

Проблема:

Файлы .frx были созданы с типом «сжатые_файлы» в ClearCase, который не поддерживает слияния, и может привести к конфликтам, которые озадачят неосведомленного пользователя (и вызовут вас в службу поддержки команды CM).

Решение:

Общий сценарий, которому мы будем следовать, описан в этом IBM technote

  1. Прежде всего, вам необходимо понять, какой тип обработки вы хотите для своих двоичных файлов: NEVER_MERGE или COPY.

    Ссылку на эти два новых типа можно найти в этом другом IBM technote

    Я лично выбираю тип КОПИИ для файлов .frx

    Вам необходимо создать новые типы с помощью ClearCase Type Explorer.

    Я предлагаю вам сначала создать новые типы в тестовом VOB. И когда вы будете довольны своим тестированием, создайте новые типы в VOB администратора. Если вы работаете над UCM, это будет на вашем уровне PVOB. В любом случае убедитесь, что вы объявили новый тип как Global. Если вы не работаете с UCM и не имеете VOB администратора, вам придется создавать новые типы во всех отдельных VOB, которые вы хотите использовать.

    Просто следуйте инструкциям на вышеуказанном technote.

    ПРИМЕЧАНИЕ, ВАЖНО: Вам нужно будет удалить новые типы из «нижнего» VOB, если вы создали их в тестовом VOB, прежде чем создавать их в VOB администратора (при условии, что ваш тестовый VOB был ниже Админ VOB). При удалении типа элемента удаляются все экземпляры этого типа, поэтому НЕ создавайте эти новые типы для тестирования на реальных файлах, так как удаление типов из VOB более низкого уровня приведет к удалению всех файлов, связанных с ним!

    Будьте осторожны, чтобы не потерять важные данные!

  2. Необходимо убедиться, что любые новые файлы .frx будут созданы с соответствующим новым типом.

    Для этого вам нужно изменить «Волшебный файл». Хорошая идея - централизовать изменения в магических файлах (а не менять их на каждом отдельном клиенте). Вы хотите изменить его один раз на сервере (например, на своем VOB-сервере) и заставить людей использовать переменную среды с именем "MAGIC_PATH", чтобы указывать на нее.

    Смотрите это IBM Technote

    После того, как вы скопировали и переименовали файл default.magic в вашей папке MAGIC_PATH, вам нужно изменить определение файлов .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. Если у вас уже есть файлы .frx в вашем VOB, вы хотите изменить их на новый тип:

    • Блокировка VOB

    • используйте следующую команду в Windows из командной строки DOS (из верхней части вашего VOB):
      cleartool find . -all -name "*.frx" -exec "cleartool chtype COPY %CLEARCASE_XPN%"
      

      Это изменит тип элемента для всех файлов * .frx на новый тип COPY

    • Разблокировать VOB

      Вы должны сделать это для всех ваших VOB.

Примечание. Первая техническая заметка вверху этого ответа гласит: «Этот тип слияния (т. Е. COPY) не поддерживается удаленным клиентом Rational ClearCase». начиная с ClearCase 7.0.1 и из теста, который я провел сегодня, теперь это поддерживается.

Приветствия,

Thomas

...