Это то, как Вы обычно использовали бы SVN или МЕРЗАВЦА?

Во всех учебных руководствах я вижу использования SVN или Мерзавца, они всегда показывают им обновляющий отдельные файлы. Я могу работать над 100 файлами через 1 день, действительно ли нормально работать над многими файлами и в конце дня, всего 1 фиксируют для всех файлов вместо того, чтобы делать каждый файл индивидуально, что я изменяю?

5
задан Jon Seigel 2 April 2010 в 03:56
поделиться

9 ответов

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

Вы всегда должны совершать операционный код; Не совершайте что-то, что это наполовину сделано и нарушает сборку, которая также может сломать кого-то, кто пытается выяснить, какие фиксации представили ошибку путем тестирования старых версий. Каждый коммит должен содержать небольшой набор изменений, которые все связаны друг с другом.

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

Конечно, в некоторые дни у вас будет сложное изменение, которое требует целого дня для создания; В этом случае, если это все одно логическое изменение, то делают один коммит в конце дня. Будьте разумны, здесь нет абсолютных правил.

18
ответ дан 18 December 2019 в 05:23
поделиться

Я обычно разбиваю его в единицы работы. При изменении всех 100 файлов выполнены один блок работы, проверяйте ее все вместе в конце дня. Но скорее всего, вы затронули 5 или 10 файлов для одной задачи, затем 20 файлов для другого и т. Д. И т. Д. Я бы порекомендовал выполнить регистрацию для каждого из них. Если никакой другой причины, ваш чек в заметки будет более точным и полезным.

8
ответ дан 18 December 2019 в 05:23
поделиться

Это нормально, но иногда Меньшие коммиты лучше, чем совершать только в конце дня. Если вы работаете с большой командой, и вы совершаете только в конце дня, у вас, вероятно, будут конфликты, когда вы обновите (до фиксации).

Меньшие коммиты лучше, когда вы и ваша команда тоже проверяют код. Итак, вы делаете только 5, 10 файлов, и рецензент просмотруют код более легко. Если вы совершаете 100 файлов, рецензент будет иметь гораздо больше работы.

3
ответ дан 18 December 2019 в 05:23
поделиться

Мне не нравится 1 совершить день. Это больше похоже на резервную копию, чем контроль источника.

Я рекомендую совершать файлы вместе, которые были изменены как часть одной и той же задачи / Begfix / функции, в противном случае они должны быть раздельными коммитами.

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

3
ответ дан 18 December 2019 в 05:23
поделиться

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

Но это не просто для того, чтобы сделать вашу историю управления версией более полезной. Это также улучшает качество вашей работы, особенно если вы сочетаете его с подробными коммитарами.

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

Кроме того, он будет сосредоточиться на одной задаче одновременно. Если вы одновременно удерживайте десятки изменений в голове, вы закончите что-то забыть. После совершения изменений индивидуально вы сможете сосредоточиться на качестве каждого изменения.

2
ответ дан 18 December 2019 в 05:23
поделиться
$ cat foo
1
2
3
4
5
$ sed -e '2d;4d' foo
1
3
5
$ 
-121--603642-

(отвечая на Subversion.)

Ну, как правило, считается идеальным для совершения группы файлов как автономное «изменение». Например. Если вы работаете на сайте, и вы добавляете новое изображение на страницу, ваш коммит будет что-то вроде:

$ svn add header.png
A   header.png
$ svn commit index.html header.png -m "Add new header to main page."
A   header.png
M   index.html
Revision 123 committed.

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

  • имеющих более одного изменения в ревизии. Если вы измените свое мнение о одном из изменений, немного сложнее найти его и обратно, не затрагивая другие изменения, соединенные с ним.
  • (МЕНЬШЕ СЕРЬЕЗНЫЙ, МНОГО?) Имение распространения в нескольких изменениях. Приятно, если после каждой редакции содержимое находятся в работоспособном состоянии (что может означать коммутируемое и, как правило, правильно для программы или хорошо сформированного HTML для веб-сайта). Это также означает, что легко нацелить любые данные изменения для резервной копии или обзора.

Я знаю, что трудно не забыть сделать это для всех изменений, и я был виновен в том, что он совершил кучу не связанных со счетом с сообщением «Backup Misc меняется» или что-то одинаково полезное. Это пробелы, а один или два не болят. Но действительно приятно видеть историю, которая говорит: «Редакция 1, реализует X (изменить a и добавить b). Rev 2, исправить ошибку y (изменить c). Rev 3, Refactor Z (изменить d и e и переименовать f до g). etc. "

2
ответ дан 18 December 2019 в 05:23
поделиться

Лучшая практика состоит в том, чтобы сделать атомные коммиты , то есть коммиты, которые реализуют Одна полная модификация (в идеале, позволяющая вашему исходному дереву компилировать). Это часто включает в себя прикосновение много файлов в одном коммитке.

1
ответ дан 18 December 2019 в 05:23
поделиться

Это нормально. Просто убедитесь, что код компилируется перед комминтом. Техника называется «атомные коммиты», AFAIR. Он имеет много преимуществ:

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

Обратите внимание, что таким образом, что VCS реализуются, мало влияет на потребление пространства из-за большого количества коммитов.

1
ответ дан 18 December 2019 в 05:23
поделиться

Рассмотрим отдельные ветви для разных функций / ошибок

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

SVN / Git Сделайте этот стиль ветвления проще, чем некоторые другие инструменты управления версией.

0
ответ дан 18 December 2019 в 05:23
поделиться