Как часто программист должен связываться с SVN?

Каково общее правило? Когда вы совершаете?

Ответ 1

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

Ответ 2

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

Ответ 3

Это рассматривается (и хорошо освещено) в более ранней публикации о лучших практиках.

лучшие практики SVN - работа в команде

Я рекомендую проверить этот пост, потому что он охватывает много хороших идей, а не только, как часто совершать.

Ответ 4

Если я работаю на туловище, я фиксирую всякий раз, когда попадаю в веху, которая не повлияет на моих товарищей по команде. Когда я работаю в частном филиале, я фиксирую всякий раз, когда я ударяю веху, которую я не хочу потерять (мне все равно, если она даже строит). Для личных проектов я использую mercurial и постоянно фиксирую. Все зависит от того, что работает для вас и вашей команды.

Ответ 5

При использовании Test Driven Development я проверяю каждый раз, когда я написал новый unit test и получил его, чтобы пройти.

  • Записать тест
  • Убедитесь, что тест не работает (в противном случае тест не эффективен или не нужен)
  • Введите новый код для этого теста
  • Подтвердите, что все автоматические тесты проходят
  • Проверить
  • Рефакторинг вашей работы, чтобы никакое дублирование, которое вы ввели, больше не существует
  • Подтвердите, что все автоматические тесты все еще проходят
  • Проверить
  • Перейдите на первый шаг.

Ответ 6

Это действительно зависит от ситуации.

  • Если вы работаете в своей ветке или используете git, отпустите
  • Если есть автоматизированный процесс сборки или непрерывная интеграция, вы захотите представить подробные улучшения.
  • Если вы работаете одновременно с другими в филиале, вы захотите отправить его, когда у вас есть серьезные улучшенные детали, но на большей части "вехи".

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

  • Зафиксируйте, если что-то "завершено". Это часто используется свободно - это может быть функция, класс, страница, то, что достаточно полно, чтобы она могла стоять на ней.
  • Зафиксируйте, если это "Это работает, но это уродливая" ситуация. Признание здесь выступает в качестве отступления, когда я возвращаюсь и пересматриваю свои уродливые исправления во что-то более элегантное. Хуже того, я возвращаюсь к рабочему решению, как бы уродливо.

Ответ 7

Я фиксирую каждый раз, когда выполняю работу: исправлена ​​ошибка, добавлена ​​функция, улучшена эффективность и т.д. Но я стараюсь избегать длительных периодов молчания. Совет в Do not Go Dark стоит прочитать.

Ответ 8

Зафиксируйте, когда у вас есть код, который вы не хотите потерять. Это не значит, что вы передаете сундук, если вы развиваетесь в команде, вам следует избегать нарушения вещей для других. Сколько кода вы хотите переработать, если ваш редактор уничтожает файл? Через час или два?

Ответ 9

svn, требующий фиксации на удаленном сервере, затрудняет фиксацию так часто, как вам следует, поэтому я рекомендую попробовать mercurial или git, чтобы вы могли совершать локальные коммиты в любое время, а затем отправлять эти коммиты на svn (через git -svn или hg-svn) после выполнения вашей собственной очистки, если вы должны использовать централизованный репозиторий svn.

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

Ответ 10

Программисты, которые поступают из тонкого/распределенного VCS или использовали его раньше, будут совершать небольшие изменения или функции, потому что локальная фиксация очень дешевая. Затем они будут настаивать на центральном репо, когда им нужно будет синхронизировать. Но поскольку фиксация очень дорогая с помощью SVN, программисты, которые используют SVN (обычно), совершают ежедневно, что иногда набор изменений может быть в действительно большом фрагменте, и коммиты, возможно, должны быть связаны с функциями. Это плохая привычка.

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

Ответ 11

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

Ответ 12

Общее правило:

  • после совершения атомного изменения, что имеет смысл.

Атомное изменение: это "логическая единица", которую вы легко можете записать в комментарии коммита.

Имеет смысл: он включает в себя безопасное обновление - компилирует и не разбивает функции - это логическое изменение, которое вы не боитесь сказать в комментарии.

Когда я совершаю: Когда я сделал некоторые изменения, как указано в общем правиле, и я стараюсь делать это чаще.

Несколько других хороших практик можно найти здесь: http://ducquoc.wordpress.com/2011/06/09/svn-best-practices/