Как ветвление в Git более эффективно для разработчиков, чем регулярные циклы фиксации / push / pull? - PullRequest
1 голос
/ 28 ноября 2011

Я использую git уже некоторое время, и мне это нравится, однако я обычно использую его в стиле cvs / svn (я не использую ветку / ветку, если у меня нет доступа к голове).

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

Итак, мой вопрос: как я могу начать осознавать, какую дополнительную ценность дают рабочие процессы разработки git "branch" по сравнению со стилем cvs, циклами централизованной фиксации / извлечения / push? В целом, видим ли мы рост производительности при внедрении таких основных методов разработки в стиле git?

Ответы [ 3 ]

5 голосов
/ 28 ноября 2011

В модели с одной ветвью есть только две возможности для больших изменений:

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

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

Единственное жизнеспособное решение - это ветвление и слияние.

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

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

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

1 голос
/ 28 ноября 2011

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

Другой пример может быть, что вы достигли точки, когда вы хотите выпустить свое программное обеспечение, и вам нужно подвергнуть его тщательному тестированию./ отладки.Тем временем ваш коллега уже начал работать над следующей версией.Разветвление здесь помогает вам сохранить старый код, который тестируется, и разрабатываемый код отдельно.

Вы можете взглянуть здесь на интересную схему использования ветвей.

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

...