Delphi 7 .dof и .cfg: нужно ли отслеживать их под контролем версий? - PullRequest
5 голосов
/ 27 января 2012

У меня есть в моем текущем проекте Delphi 7 (скажем, Project1.dpr) два файла (Project1.dof и Project1.cfg), которые моя команда и я не можем решить поставить под контроль версий (мы используем Mercurialbtw).

Дело в том, что в двух вышеуказанных файлах указаны некоторые библиотеки, компоненты и пути расширения, которые относятся к системе, в которой работает программист.

Моя команда состоит изнекоторые парни используют 32-битную Windows XP, а некоторые парни (включая меня) используют 64-битную Windows 7.

Так что возникает вопрос: поскольку в 64-битных расширениях Windows 7 Delphi компоненты и библиотеки расположены под c:\program files (x86)\... а на 32-битной XP они просто находятся под c:\program files\..., внесение изменений в эти файлы приведет к нарушению конфигурации проекта других коллег.

Есть ли у кого-нибудь какие-либо предложения для такой ситуации?

Ответы [ 4 ]

5 голосов
/ 27 января 2012

Прежде всего: я полностью согласен с предложениями Уоррена.

Если вы все еще хотите остаться с вашей текущей системой, вы можете использовать $(ProgramFiles) в качестве префикса для библиотечных путей.Это должно работать на обоих вариантах ОС.

2 голосов
/ 27 января 2012

Если вы пользуетесь Delphi 7 или даже не используете его, я предлагаю вам проверить свои файлы .DOF, но вы также не должны полагаться на них в своих окончательных сборках. Обновление: ОП решил не регистрировать файлы .DOF и использовать окончательный компоновщик.

Также легко попросить ваших 64-битных людей НЕ ПРОВЕРИТЬ В ИХ. ИЗМЕНЕНИЯ. Даже если они иногда забывают, что не должны совершать «локальные хаки», достаточно легко создать небольшую утилиту для чтения и исправления ваших файлов .DOF для вашего локального случая. Запускайте его каждый раз, когда вы извлекаете изменения из репозиториев других людей.

Вторая блестящая идея - это зайти в файл .dofdefault и попросить ваш файл Build.Bat скопировать project.dofdefault в project.def, если он не существует. Проблема решена.

Для окончательных сборок и для того, чтобы ваши "сборки не ломались по глупым причинам", я предлагаю вам взглянуть на Final Builder и проверить свои скрипты окончательного компоновщика в системе управления версиями и выпустить только те сборки, которые были заказаны пользователем. через Final Builder. Таким образом, вам не придется беспокоиться об отправке своим клиентам таинственных сборок, на которые вы не сможете рассчитывать.

Как, например, вы в настоящее время связываете точные версии ревизий Mercurial (шестнадцатеричные значения md5) с кодом, который его содержал, и опциями, используемыми для его создания?

Еще более разумной идеей было бы отказаться от Delphi 7, которому уже более 10 лет, и рассмотреть возможность перехода в 21-й век.

0 голосов
/ 31 января 2012

Вы можете использовать какое-то перенаправление пути, например, sub или hardlinks, чтобы объединить различные установки.После того, как эта проблема была решена, я предлагаю проверить в файлах dof и использовать например.Dof2cfg для генерации файлов cfg для сборок командной строки.

0 голосов
/ 28 января 2012

Я согласен с предложением Уоррена перейти на более новую версию Delphi. За последнее десятилетие появилось так много действительно полезных функций. Вы можете подумать, что вы прекрасно обходились без них, но как только вы начнете использовать их, вы начнете задумываться, почему вы так долго ждали.

При этом, если вы не можете обновить, я бы предложил скопировать сторонние компоненты из Program Files в подпапку дерева проекта. Я сделал это с проектом Delphi 6 и обнаружил, что не все используют одну и ту же версию компонентов.

Включить ли .dof и .cfg в систему управления версиями - это решающий вызов. Если вы полагаетесь на них в своих сборках релизов, то, вероятно, они должны быть под контролем версий. Они могут содержать настройки компилятора и условия, необходимые для правильной компиляции. Также полезно, чтобы все разработчики использовали правильные настройки при работе на своих машинах.

Если ваш процесс сборки устанавливает их из командной строки, тогда это не так уж важно.

Кстати, в более поздних версиях Delphi эта проблема решается путем замены двух файлов одним файлом, который может содержать несколько конфигураций. Они также представили функцию, называемую наборами опций, которая может быть связана с несколькими проектами, поэтому все ваши проекты используют одинаковые настройки.

...