Во всех учебных руководствах я вижу использования SVN или Мерзавца, они всегда показывают им обновляющий отдельные файлы. Я могу работать над 100 файлами через 1 день, действительно ли нормально работать над многими файлами и в конце дня, всего 1 фиксируют для всех файлов вместо того, чтобы делать каждый файл индивидуально, что я изменяю?
Вы обычно хотите группировать, совершившие логически связанные изменения, все с одним сообщением Commit.
Вы всегда должны совершать операционный код; Не совершайте что-то, что это наполовину сделано и нарушает сборку, которая также может сломать кого-то, кто пытается выяснить, какие фиксации представили ошибку путем тестирования старых версий. Каждый коммит должен содержать небольшой набор изменений, которые все связаны друг с другом.
Я бы не рекомендовал доить все ваши изменения в течение дня в один коммит. Если вам нужно просмотреть историю позже, будет трудно найти необходимое изменение, если целая рабочая работа вполнена вместе в один коммит. Если вам нужно вернуть изменение, лучше всего, если вы можете вернуть целую коммит, вместо того, чтобы выборочно вернуть файл одновременно.
Конечно, в некоторые дни у вас будет сложное изменение, которое требует целого дня для создания; В этом случае, если это все одно логическое изменение, то делают один коммит в конце дня. Будьте разумны, здесь нет абсолютных правил.
Я обычно разбиваю его в единицы работы. При изменении всех 100 файлов выполнены один блок работы, проверяйте ее все вместе в конце дня. Но скорее всего, вы затронули 5 или 10 файлов для одной задачи, затем 20 файлов для другого и т. Д. И т. Д. Я бы порекомендовал выполнить регистрацию для каждого из них. Если никакой другой причины, ваш чек в заметки будет более точным и полезным.
Это нормально, но иногда Меньшие коммиты лучше, чем совершать только в конце дня. Если вы работаете с большой командой, и вы совершаете только в конце дня, у вас, вероятно, будут конфликты, когда вы обновите (до фиксации).
Меньшие коммиты лучше, когда вы и ваша команда тоже проверяют код. Итак, вы делаете только 5, 10 файлов, и рецензент просмотруют код более легко. Если вы совершаете 100 файлов, рецензент будет иметь гораздо больше работы.
Мне не нравится 1 совершить день. Это больше похоже на резервную копию, чем контроль источника.
Я рекомендую совершать файлы вместе, которые были изменены как часть одной и той же задачи / Begfix / функции, в противном случае они должны быть раздельными коммитами.
Если все ваши файлы для определенного дня являются частью одной и той же функции, то это нормально. Если, однако, модифицированные файлы предназначены для нескольких неравновешенных задач, то это заставляет Roversts и объединения более сложных позже.
Как упомянул другие, лучше всего совершать небольшие партии, где каждая пакет содержит самостоятельное изменение.
Но это не просто для того, чтобы сделать вашу историю управления версией более полезной. Это также улучшает качество вашей работы, особенно если вы сочетаете его с подробными коммитарами.
Вы обнаружите, что перед каждым коммит, вам нужно предпринять запас того, что вы сделали, чтобы написать полезный комментарий. Это приведет вас к тому, что вы думаете о последствиях ваших изменений, и вы, вероятно, вспомните некоторые побочные эффекты, которые вы не тестируете, или что вам нужно исправить.
Кроме того, он будет сосредоточиться на одной задаче одновременно. Если вы одновременно удерживайте десятки изменений в голове, вы закончите что-то забыть. После совершения изменений индивидуально вы сможете сосредоточиться на качестве каждого изменения.
$ 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.
Это действительно делает историю хранилища более значимого, если данная редакция соответствует одной функции, ошибкам исправить или рефакторинг (и т. Д.). Есть две вещи, чтобы избежать:
Я знаю, что трудно не забыть сделать это для всех изменений, и я был виновен в том, что он совершил кучу не связанных со счетом с сообщением «Backup Misc меняется» или что-то одинаково полезное. Это пробелы, а один или два не болят. Но действительно приятно видеть историю, которая говорит: «Редакция 1, реализует X (изменить a и добавить b). Rev 2, исправить ошибку y (изменить c). Rev 3, Refactor Z (изменить d и e и переименовать f до g). etc. "
Лучшая практика состоит в том, чтобы сделать атомные коммиты , то есть коммиты, которые реализуют Одна полная модификация (в идеале, позволяющая вашему исходному дереву компилировать). Это часто включает в себя прикосновение много файлов в одном коммитке.
Это нормально. Просто убедитесь, что код компилируется перед комминтом. Техника называется «атомные коммиты», AFAIR. Он имеет много преимуществ:
Обратите внимание, что таким образом, что VCS реализуются, мало влияет на потребление пространства из-за большого количества коммитов.
, если все файлы вы редактируете, не являются частью одной и той же функции или ошибки, вы можете рассмотреть разветвление для каждой ошибки / функции. Соблюдайте файлы вместе как группу (атомное) каждому из этих ветвей, пока они не сделают достаточно, чтобы быть объединены в багажник. Это позволяет избежать классического конфликта файлов, имеющих модификации для двух функций и необходимости отпустить только один из них прямо сейчас.
SVN / Git Сделайте этот стиль ветвления проще, чем некоторые другие инструменты управления версией.