Предотвращение устаревания рабочей копии при использовании отслеживания слияний SVN
При использовании функции отслеживания слияния в Subversion 1.5 SVN обновляет свойство mergeinfo родительской папки для отслеживания сливаемых ревизий. У нас есть большое количество разработчиков (>500), работающих над нашим репозиторием, и это не редкость в установленные сроки, когда большое количество разработчиков пытаются зафиксировать в одно и то же время. Если какой-либо другой разработчик зафиксировал эту папку с момента вашего последнего обновления, вы должны выполнить обновление перед фиксацией из-за изменения в mergeinfo. Так как же предотвратить ситуацию, когда разработчик вынужден многократно обновлять свою рабочую копию, потому что каждый раз, когда они обновляются, кто-то другой фиксирует эту папку раньше, чем они? Или это достаточно редкая ситуация, когда люди просто мирились с этим?
4 ответа
@CtrlAltDel, я звоню в BS, чтобы предположить, что DVCS любого типа - это серебряная пуля для этой проблемы. В этом случае все, что вам удастся сделать, - это перенести бремя слияния со времени фиксации на время интеграции, что, возможно, является гораздо большей головной болью. Теперь вместо того, чтобы сталкиваться с конфликтами в реальном времени в централизованном репозитории, у вас есть разработчики, работающие над все более и более расходящимися базами кода в своих собственных распределенных репозиториях. Собрать их вместе в единый связный (и работающий) продукт нетривиально.
Я думаю, что решение уведомления разработчиков о репозиториях имеет реальную ценность. Если вы не Windows (и не можете использовать SVN Notifier, как предлагает Марк), я рекомендую обновлять RSS-канал каждый раз, когда происходит фиксация. Вы можете сделать это через зацепку репозитория пост-фиксации - примеров можно найти в Интернете.
Тем не менее, уведомление о том, что что-то меняется в хранилище, может быстро отвлечь внимание. Для более тонких RSS я использую WebSVN (вы должны включить RSS). По сути, вы можете запросить канал RSS для любого пути к репозиторию (файл или каталог), и он будет динамически создан / обновлен для вас. Вы также можете обновлять RSS так часто, как хотите - последняя версия кэшируется до тех пор, пока не будет зафиксирована новая ревизия. На всех платформах есть несколько программ для чтения RSS, которые могут предупредить разработчика об изменениях.
Мы используем SVN Notifier (только для Windows), который находится на вашей панели задач и предупреждает вас при каждом изменении отслеживаемого хранилища. Это лучший способ избежать кошмарных слияний - если вы обновляете, как только другой человек совершает коммит, слияния должны быть довольно легкими.
Работайте над декомпозицией вашего проекта. Разделите систему на подсистемы и компоненты и дайте каждому компоненту отдельную папку в исходном контроле.
Сотни разработчиков, работающих в одной и той же папке, кажутся кошмаром менеджмента, и не только из-за этих проблем с SVN.
Существует нет решения этой проблемы, кроме:
- Переключиться на GIT:) (или HG)
- Мириться с этим, как вы предложили.