Предотвращение устаревания рабочей копии при использовании отслеживания слияний SVN - PullRequest
2 голосов
/ 12 июня 2009

При использовании функции отслеживания слияния в Subversion 1.5 SVN обновляет свойство mergeinfo родительской папки для отслеживания сливаемых ревизий. У нас есть большое количество разработчиков (> 500), работающих над нашим репозиторием, и это не редкость в установленные сроки, когда большое количество разработчиков пытаются сделать коммит в одно и то же время. Если какой-либо другой разработчик зафиксировал эту папку с момента вашего последнего обновления, вы должны выполнить обновление перед фиксацией из-за изменения в mergeinfo. Итак, как предотвратить ситуацию, когда разработчик вынужден многократно обновлять свою рабочую копию, потому что каждый раз, когда они обновляются, кто-то другой фиксирует эту папку раньше, чем они? Или это достаточно редкая ситуация, когда люди просто мирились с этим?

Ответы [ 4 ]

3 голосов
/ 12 июня 2009

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

1 голос
/ 12 июня 2009

@ CtrlAltDel, я звоню BS, чтобы предположить, что DVCS любого типа - это серебряная пуля для этой проблемы. В этом случае все, что вам удастся сделать, - это перенести бремя слияния со времени фиксации на время интеграции, что, возможно, является гораздо большей головной болью. Теперь вместо того, чтобы сталкиваться с конфликтами в реальном времени в централизованном репозитории, у вас есть разработчики, работающие над все более и более расходящимися базами кода в своих собственных распределенных репозиториях. Объединить их в один связный (и работающий) продукт нетривиально.

Я думаю, что решение уведомления разработчиков о коммитах в репозитории имеет реальную ценность. Если вы не Windows (и не можете использовать SVN Notifier, как предлагает Марк), я рекомендую обновлять RSS-канал каждый раз, когда происходит фиксация. Вы можете сделать это через хэнд репозитория после фиксации - примеров в изобилии онлайн.

Однако уведомление о том, что что-то меняется в любом месте в хранилище, может быстро отвлечь. Для более тонких RSS я использую WebSVN (необходимо включить RSS). По сути, вы можете запросить канал RSS для любого пути к репозиторию (файл или каталог), и он будет динамически создан / обновлен для вас. Вы также можете обновлять RSS так часто, как вам нравится - последняя версия кэшируется до тех пор, пока не будет зафиксирована новая ревизия. На всех платформах есть несколько программ для чтения RSS, которые могут предупредить разработчика об изменениях.

1 голос
/ 12 июня 2009

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

Сотни разработчиков, работающих в одной папке, кажутся кошмаром для менеджмента, и не только из-за этих проблем с SVN.

0 голосов
/ 12 июня 2009

Нет решения этой проблемы, кроме:

  • Переключиться на GIT :) (или hg)
  • мириться с этим, как вы предложили.
...