Файлы Delphi RES и Git
У меня есть большой проект, написанный в Delphi, и я хочу управлять его источниками, используя Git. Я создал репозиторий Git, который включает в себя мои источники приложений и сторонние компоненты. Все это автоматически создается с помощью msbuild
.
Самая большая проблема - файлы RES. Некоторые из них обновляются каждый раз, когда я перестраиваю приложение, а некоторые - нет. У некоторых есть источники *.rc, некоторые - нет. Я не могу игнорировать все файлы res (.gitignore), потому что без ресурсов мой проект не сможет построить. Кроме того, я не могу включить файлы res - они меняются от сборки к сборке, я не хочу видеть их в diff.
Что вы делаете с файлами *.res в Git? Любые советы?
Ответы
Ответ 1
Я сохраняю файлы проекта RES в git (те, которые соответствуют имени dpr).
Я полагаю, что единственная причина, по которой файл RES RES проекта будет меняться каждый раз, когда вы строите, - это если у вас есть номер набора инкремента, который для меня означает, что вам нужно сохранить res в исходном элементе управления или вам не нужна конструкция чтобы отключить эту опцию.
У меня также есть файлы RES, которые я создаю из RC, которые меняют каждый компилятор, поэтому у меня есть gitignore для *.res, а затем добавляю git add -f project.res
для файлов RES RES проекта
Ответ 2
Добро пожаловать в клуб. Файл приложения .res в Delphi - это боль в нижней части спины для всех, кто использует контроль источника. Вы хотите использовать auto-inc-buildnumber, но это испортит ваш источник контроля.
Я сделал это
Инструмент, который я написал для создания файла версии .res, является свободным программным обеспечением доступным здесь, а также из SourceForge
Ответ 3
Настоятельно рекомендуется отключить "Auto increment build number" в настройках проекта, с любой системой управления версиями. Таким образом, "безопасно" добавлять файлы .res в репозиторий.
Я долго искал способ автоматического обновления номера сборки в информации о версии в файле проекта .res, но лучше всего обновить дополнительную .rc с информацией о версии. На практике, однако, я обычно обновляю номер сборки до текущего номера версии подвариантности только прямо перед окончательной сборкой для выпуска двоичных файлов.
Ответ 4
По определению, файлы RES являются скомпилированными RC файлами. Поэтому в идеале вы должны игнорировать все файлы RES и фиксировать только изменения RC. Если это так или иначе, что у вас нет источника RC для какого-либо конкретного файла RES, добавьте только этот "сиротский" файл RES на git - такие файлы не должны меняться от сборки к сборке (потому что нет файла RC для их генерации). Если по каким-то странным причинам (Delphi, huh) такие файлы RES могут измениться, то вы обречены.
Итог: файлы RES - это цели компиляции - ничем не отличаются от других двоичных файлов (obj, exe и т.д.)
Ответ 5
Я не знаю GIT, но под SVN я просто просто "SVN ADD" мало что имеет значение, а не автоматически сгенерированные. Так как неверсивные файлы исключаются из diffs, это также устраняет.
Ответ 6
Не могли бы вы:
- игнорировать все
.res
файлы
- сгенерировать файлы
.res
, которые могут быть сгенерированы (компиляция ресурсов script .rc
).
- добавьте только файлы
.res
без файлов .rc
, чтобы сгенерировать их: если вы указали в .gitignore
, что их следует игнорировать, то добавление их в порядке: они не будут отображаться в diff.