Добавить комментарий

VSS Synchronization

Сергей Тарасов, февраль 2004

Назначение

При использовании Microsoft Visual SourceSafe (VSS) в качестве основного средства управления версиями при распределенной разработке возникает проблема синхронизации между депо кода.

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

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

Для автоматизации такой операции была создана утилита VSSChanges, которая позволяет получать все изменения за один прием. Программа создана с использование Delphi 7 (для компиляции подойдет любая версия, даже бесплатная Personal), распространяется вместе с исходным кодом по лицензии GNU GPL.

Загрузить дистрибутив и исходники вы можете по ссылке в конце страницы.

Работа с программой

Запустите файл Changes.exe.


Рис.1. Основное окно VSSChanges

В поле "VSS database" введите или выберите путь к файлу scrsafe.ini, который находится в корневом каталоге депо VSS. Имя пользователя и пароль можно оставить пустыми, тогда будет использованы данные сетевого пользователя вашей текущей сессии.

В поле "VSS project" введите полный путь к проекту, из которого вы хотите получить изменения. Опция "Recursive", включенная по умолчанию, предписывает получить также изменения из всех нижележащих проектов.

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

  • Режим "By label" (по метке) означает, что будут получены все измененные файлы начиная с метки "From label" и до метки "To label". Последнюю можно оставить пустой, тогда будут получены измененные файлы до текущего момента.
  • Режим "By dates" работает аналогично, но только вместо меток задаются даты. По умолчанию, "To date" изначально установлена на текущее время и дату.

В поле "Save to" введите или выберите каталог, куда будут записаны все измененные файлы. Если каталог не существует, то он будет создан. Все файлы записываются с сохранением структуры рабочих каталогов (working folders), поэтому в вашем депо для всех проектов, с которых вы хотите получать изменения, они должны быть установлены. Перед выполнением каталог, заданный в "Save to" полностью очищается от всех файлов и каталогов.

Заполнив все необходимые поля нажимаем кнопку "Get". Для окончания работы закройте окно или нажмите кнопку "Exit". Все введенные вами данные будут сохранены, таким образом, при следующем запуске вам будет нужно только изменить начальные метки или даты. Список проектов также помнит до 7 названий.

Что дальше ?

Дальше вы берете полученные файлы и вносите их в депо, с которым происходит синхронизация (check out, копирование файла в рабочий каталог, check in). При этом вам, возможно, придется вручную анализировать изменения (show differences) и производить слияние, если файл в депо был кем-то за время вашего отсутствия изменен. Конечно, если вы на административном уровне выработаете правила ответственности разработчиков за определенные модули, то такая ситуация будет случаться редко и "тяжелая неказистая жизнь простого программиста" станет легче :)

Прикрепленный файлРазмер
Package icon VSSSync_full.zip300.76 KB