Как заставить Delphi 7 работать с системой управления версиями?

Здравствуйте, мне недавно приходилось работать над проектом Delphi 7, и одна вещь, которая меня постоянно беспокоит, - это файлы * .dfm. Каждый раз, когда я открываю форму, она меняет файл .dfm.

Например, это различие было сделано просто путем открытия проекта и просмотра файла и формы (обратите внимание, я ничего не менял в самой форме)

@@ -1,6 +1,6 @@
 object FormPartnerInfo: TFormPartnerInfo
-  Left = 85
-  Top = 454
+  Left = 554
+  Top = 322
   BorderIcons = [biSystemMenu]
   BorderStyle = bsToolWindow

Есть ли способ заставить Delphi 7 не обновлять эту бессмысленную информацию во время разработки? Я бы предпочел, чтобы он хорошо работал в SVN, чтобы мне не приходилось возвращать файлы перед фиксацией.


person Earlz    schedule 12.09.2011    source источник
comment
Держите их только для чтения. Это предотвратит различия, хотя и создаст все проблемы с сохранением ... (предупреждения о невозможности сохранения в файлы только для чтения) и сохранить все - это то, что я использую каждые пару минут - это укоренилось в моей мышечной памяти. Новые версии Delphi лучше меняются, но ненамного. Возможно, из-за встроенного дизайнера, что означает, что положение форм не меняется ...   -  person Marjan Venema    schedule 12.09.2011
comment
Я также иногда получаю случайные изменения ширины, не касаясь вещей. Delphi 7 очень не хватает как IDE по сравнению с Visual Studio :(   -  person Earlz    schedule 12.09.2011
comment
Ах да, но было бы не совсем справедливо сравнивать Visual Studio с почти старинной версией Delphi IDE ...   -  person Marjan Venema    schedule 12.09.2011
comment
Честное сравнение было бы с MSVC6. Delphi 7 древний! Древний!   -  person David Heffernan    schedule 12.09.2011
comment
По-видимому, эта ошибка все еще присутствует в Delphi 2007 в соответствии с некоторыми другими вопросами, касающимися управления версиями и Delphi.   -  person Earlz    schedule 12.09.2011
comment
Delphi 2007 - это древний! Древний! слишком :)   -  person mjn    schedule 12.09.2011
comment
@Earlz: Это не ОШИБКА. Если форма перемещается каким-либо образом, она изменяется вверх и влево, и это изменение приводит к изменению в DFM. Чего еще вы ожидали? FWIW, я все время открываю и закрываю формы, чтобы работать над кодом в IDE, и я никогда не получаю изменений в DFM, если я не добавляю новые компоненты или не изменяю свойства существующих. (Использование D2007, DXE и DXE2 со встроенным конструктором - вероятно, поэтому у меня нет проблемы. Я предполагаю, что эти вопросы были от людей, использующих плавающий конструктор вместо этого. Используйте антикварную функциональность, и вы должны ожидать старинных результатов .)   -  person Ken White    schedule 12.09.2011
comment
Думаю, вы перетаскиваете форму. Вот почему меняются значения Left / Top. Они не являются свойствами времени разработки, если у вас Position = poDesigned. И BorderIcons / BorderStyle определенно не являются бессмысленной информацией во время разработки. Стример форм иногда делает странные вещи, но я не думаю, что ваш пример показывает какую-либо ошибку.   -  person David Heffernan    schedule 12.09.2011
comment
@David: BorderIcons и BorderStyle не изменились в показанном различии.   -  person Ken White    schedule 12.09.2011
comment
@ Кен Хорошо, это просто контекст?   -  person David Heffernan    schedule 12.09.2011
comment
@ Дэвид: Да. - и + обозначают разные строки; строки, перед которыми ничего нет, являются контекстными.   -  person Ken White    schedule 12.09.2011
comment
Я голосую за закрытие. Это просто поведение, как задумано.   -  person David Heffernan    schedule 12.09.2011
comment
Что заставляет вас думать, что информация о позиции в форме бессмысленна? Вы ‹strike› моргнули ‹/strike› переместили форму, и дизайнер запоминает для вас новую позицию. @ Дэвид Хеффернан, не торопитесь с ответом, посмотрите внимательнее на результат diff, предложение object и BorderIcons обозначает контекст измененных строк. Или лучше получить Win32 порт diffutils, он довольно мощный.   -  person Premature Optimization    schedule 13.09.2011
comment
@Ken - это одна из главных причин, почему мне нравится встроенный дизайнер. Особенно с установками с несколькими мониторами.   -  person Gerry Coll    schedule 13.09.2011
comment
@Gerry: Мне нравится встроенный дизайнер, и я бы не вернулся, если бы вы мне заплатили. (У меня все еще есть пара проектов, над которыми я работаю в D7, и я ненавижу каждый раз, когда мне приходится над ними работать. Надеюсь, вскоре я смогу хотя бы перенести их на D2007 и навсегда избавиться от последних плавающих дизайнерских вещей.   -  person Ken White    schedule 13.09.2011
comment
Марьян Венема: Версии BDS (включая XE) страдают от этого еще больше. По крайней мере, с настройками по умолчанию.   -  person Marco van de Voort    schedule 13.09.2011
comment
Эрлз, это хуже, чем ты описываешь. Намного хуже. Списки изображений изменяются случайным образом при каждом сохранении. Объедините это с разработчиками, которые проверяют все только потому, что они к этому привыкли, и вы получите бесконечное безумие от конфликтов DFM. Поскольку инструменты работают так, как они работают, разработчикам было бы разумно найти рабочие процессы, которые не являются сумасшедшими, включая просмотр изменений DFM и их откат, когда они не являются преднамеренными.   -  person Warren P    schedule 13.09.2011


Ответы (1)


Не Delphi доставляет вам неудобства диалогом фиксации, который загружается с каждым измененным файлом, проверенным по умолчанию (вместо того, чтобы требовать явной проверки файлов, которые вы хотите зафиксировать). Это недостаток дизайна в Tortoise, который приводит вас к привычке возвращать dfms (потому что вы, вероятно, просто хотите, чтобы ваша рабочая копия была чистой, насколько это возможно - как и все).

Ответ - изменить свою точку зрения. Вам не нужно возвращать dfms перед фиксацией! Я тоже так делал. Это просто привычка, которую вы можете изменить.

Правило: не проверяйте ничего непреднамеренно. Если вы не собирались менять форму, снимите флажок dfm в диалоге фиксации. Еще лучше, снимите все флажки, а затем намеренно проверяйте файлы, которые вы хотите зафиксировать (возможно, после того, как вы проверили различия). Или вы можете зафиксировать отдельные файлы, щелкнув правой кнопкой мыши фиксацию на самом файле (а не щелкнув правой кнопкой мыши фиксацию в папке). Вы даже можете зайти так далеко, что выберите несколько файлов (используйте Shift или Ctrl) в проводнике перед тем, как щелкнуть правой кнопкой мыши фиксацию.

Вам нужно привыкнуть к осознанию того, что ваша рабочая копия может быть грязной, если вы не допускаете, чтобы грязный материал был возвращен (и если вы вернете эти dfms, они, вероятно, снова изменятся в следующий раз, когда вы все равно откроете эту форму ).

person Sam    schedule 13.09.2011