Ответ 1
Зафиксируйте раннее и часто. Он минимизирует шаги по разрешению конфликтов при работе в команде. Но не делайте ничего, что нарушает вашу сборку. В идеале, непрерывная интеграция уведомляет команду о разрыве сборки.
Каково общее правило? Когда вы совершаете?
Зафиксируйте раннее и часто. Он минимизирует шаги по разрешению конфликтов при работе в команде. Но не делайте ничего, что нарушает вашу сборку. В идеале, непрерывная интеграция уведомляет команду о разрыве сборки.
Я пытаюсь зафиксировать всякий раз, когда я завершаю "кусок" работы - если код компилируется, конечно.
Это рассматривается (и хорошо освещено) в более ранней публикации о лучших практиках.
лучшие практики SVN - работа в команде
Я рекомендую проверить этот пост, потому что он охватывает много хороших идей, а не только, как часто совершать.
Если я работаю на туловище, я фиксирую всякий раз, когда попадаю в веху, которая не повлияет на моих товарищей по команде. Когда я работаю в частном филиале, я фиксирую всякий раз, когда я ударяю веху, которую я не хочу потерять (мне все равно, если она даже строит). Для личных проектов я использую mercurial и постоянно фиксирую. Все зависит от того, что работает для вас и вашей команды.
При использовании Test Driven Development я проверяю каждый раз, когда я написал новый unit test и получил его, чтобы пройти.
Это действительно зависит от ситуации.
Обычно, когда я работаю в своей ветке, я следую двум рекомендациям
Я фиксирую каждый раз, когда выполняю работу: исправлена ошибка, добавлена функция, улучшена эффективность и т.д. Но я стараюсь избегать длительных периодов молчания. Совет в Do not Go Dark стоит прочитать.
Зафиксируйте, когда у вас есть код, который вы не хотите потерять. Это не значит, что вы передаете сундук, если вы развиваетесь в команде, вам следует избегать нарушения вещей для других. Сколько кода вы хотите переработать, если ваш редактор уничтожает файл? Через час или два?
svn, требующий фиксации на удаленном сервере, затрудняет фиксацию так часто, как вам следует, поэтому я рекомендую попробовать mercurial или git, чтобы вы могли совершать локальные коммиты в любое время, а затем отправлять эти коммиты на svn (через git -svn или hg-svn) после выполнения вашей собственной очистки, если вы должны использовать централизованный репозиторий svn.
Сам факт, что вы спрашиваете, как часто совершать коммиты, подразумевает, что централизованный характер svn мешает вашему рабочему процессу в некоторой степени. Вы будете рады преимуществам локального репозитория машин после того, как пройдете кривую обучения.
Программисты, которые поступают из тонкого/распределенного VCS или использовали его раньше, будут совершать небольшие изменения или функции, потому что локальная фиксация очень дешевая. Затем они будут настаивать на центральном репо, когда им нужно будет синхронизировать. Но поскольку фиксация очень дорогая с помощью SVN, программисты, которые используют SVN (обычно), совершают ежедневно, что иногда набор изменений может быть в действительно большом фрагменте, и коммиты, возможно, должны быть связаны с функциями. Это плохая привычка.
Поэтому я стараюсь использовать эту лучшую практику и в использовании DVCS в SVN. Поэтому я бы передал SVN по функциям, поэтому мне было бы легче откат, если в изменениях возникнет проблема.
То, что я обычно делаю, если мне нужно добавить новую функцию или исправить ошибку, - это создать ветку из любой точки, где бы я ни нуждался, выполнять мою работу там, проверять ее код и затем объединять обратно. разбивайте папку своих веток для каждого пользователя (может не иметь смысла, если у вас много пользователей), что каждый разработчик сохранит их изменения.
Общее правило:
Атомное изменение: это "логическая единица", которую вы легко можете записать в комментарии коммита.
Имеет смысл: он включает в себя безопасное обновление - компилирует и не разбивает функции - это логическое изменение, которое вы не боитесь сказать в комментарии.
Когда я совершаю: Когда я сделал некоторые изменения, как указано в общем правиле, и я стараюсь делать это чаще.
Несколько других хороших практик можно найти здесь: http://ducquoc.wordpress.com/2011/06/09/svn-best-practices/