Есть ли какой-нибудь простой автоматический способ обнаружения всех исходных файлов, связанных с проектом Delphi?

Мне нравится делать резервную копию исходного кода, установленного для проекта, когда я выпускаю версию. Я использую резервные копии проектов GExperts, которые, кажется, собирают все файлы в менеджере проектов в ZIP-файл. Вы также можете добавить произвольные файлы в этот набор файлов, но я всегда осознаю тот факт, что я не обязательно получил все файлы. До тех пор, пока я специально не уйду к пунктам использования и не добавлю все модули, для которых у меня есть источники, в проект, я никогда не буду уверен в сохранении всех файлов, необходимых для воссоздания устанавливаемого / исполняемого файла.

Я думал о том, чтобы развернуть приложение для обхода проекта, проследить за всеми используемыми модулями, просмотреть все пути поиска и посмотреть, есть ли исходный файл для этого модуля, и создать список файлов для резервного копирования таким образом, но эй - может быть, кто-то уже сделал работу?

4 ответа

Решение

Вы должны (очень рекомендую) заглянуть в систему контроля версий.

например SVN (Подрывной), CVS

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

Это сэкономит вам $%# один день.

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

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

Одна полезная утилита, которую я иногда запускаю, - это программа, которая создает DirList для всех файлов в моей выходной папке dcu. Изменение расширений с.dcu на.pas дает мне список всех файлов исходного кода.

Конечно, он пропускает файлы.inc и другие файлы, не относящиеся к.pas, но, возможно, эта мысль будет вам полезна?

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

Вы можете интерпретировать свой вопрос двумя способами:

  1. Как я могу убедиться, что у меня есть резервные копии по крайней мере достаточно файлов, чтобы я мог построить проект
  2. Как я могу убедиться, что я делаю резервную копию не слишком много файлов, чтобы я все еще мог построить проект

Первый - убедиться, что вы вообще можете собрать систему, а второй - очистить неиспользуемые файлы.

Для обеих систем - система контроля версий, включающая отдельную систему сборки.

Затем вы - для каждого нового набора изменений - можете использовать эти шаги, чтобы убедиться, что оба условия выполняются:

  1. В вашей повседневной системе разработки проверьте новую версию исходного кода в вашей системе контроля версий.
  2. В вашей отдельной системе сборки получите последнюю версию вашей системы контроля версий.
  3. Сборка проекта по системе сборки; если это не удается, перейдите к шагу 1 и добавьте отсутствующие файлы в систему управления версиями из системы разработки.
  4. Начните удалять (один за другим) файлы из проекта, которые, по вашему мнению, не нужны, затем перестраивайте до тех пор, пока не произойдет сбой.
  5. Если сборка не удалась, восстановите этот конкретный файл из системы управления версиями, затем перейдите к шагу 3 со следующим кандидатом
  6. После успешной сборки у вас будет минимальный набор файлов.
  7. Теперь сделайте обзор файлов в вашей системе контроля версий и машине сборки.
  8. Пометьте файлы, которые находятся в вашей системе контроля версий, но не на вашем компьютере сборки, как устаревшие или удаленные.

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

Причина, по которой вам нужна отдельная система сборки (или две отдельные системы разработки), заключается в том, что вы хотите, чтобы они были независимыми: вы используете одну для разработки, а другую для проверки, все ли в порядке со сборкой.

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

--jeroen

Другие вопросы по тегам