Контроль версий результатов

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

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

Он работает нормально, но у клиента контроля версий есть много функций, которые не имеют смысла для нас, и люди иногда путаются.

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

Обновить:

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

6 ответов

Я бы, наверное, взглянул на rsync.

Просто создайте.CMD-файл, который содержит вызов rsync со всеми правильными параметрами, и пусть люди это называют. rsync очень умен, решая, какую часть файлов необходимо перенести, поэтому он будет очень быстрым, даже если речь идет о больших файлах.

Что не делает rsync, так это разрешение конфликтов (или даже обнаружение), но в описанном вами сценарии это больше похоже на чтение из центрального места, которое rsync предназначено для обработки.

Другой вариант - унисон

Вы должны обратить внимание на непрерывную интеграцию и наличие какого-то централизованного процесса сборки. Я могу только представить, какого черта вы переживаете с вашим нынешним подходом.

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

Построение проекта должно быть централизованным процессом, чтобы обеспечить лучший контроль, и вскоре ваше решение окажется в тупике. В любом случае, вот что я сделаю.

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

Несмотря на то, что вы далеко не идеальны, вы сможете определять хорошо установленные протоколы. Проверьте свою последнюю DLL здесь, сгенерируйте "реальную" версию из последнего источника здесь.

Как насчет встраивания строки "что" в исполняемые файлы и библиотеки. Затем вы можете синхронизировать нужный список версий с манифестом.

Мы склонны использовать строки идентификатора CVS как часть строки what.

const char cvsid[] = "@(#)INETOPS_filter_ip_$Revision: 1.9 $";

Ввод команды

what filter_ip | grep INETOPS

возвращается

INETOPS_filter_ip_$Revision: 1.9 $

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

НТН.

веселит,

обкрадывать

Subversion действительно хорошо обрабатывает двоичные файлы, работает довольно быстро и поддерживает скрипты. VisualSVN и TortoiseSVN также упрощают работу с Subversion.

Вы можете создать папку, извлеченную из Subversion, со всеми вашими бинарными файлами (которую все разработчики могут загружать и обновлять), затем просто введите "svn update" в командной строке или используйте TortoiseSVN: щелкните правой кнопкой мыши папку, нажмите "SVN Update", и он обновит все файлы и сообщит вам, что изменилось.

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