Mercurial Workflow для небольшой команды
Я работаю в команде из 3 разработчиков, и мы недавно перешли от CVS к Mercurial. Мы используем Mercurial, располагая локальными репозиториями на каждой из наших рабочих станций и вытягивая/продвигая сервер разработки. Я не уверен, что это лучший рабочий процесс, так как легко забыть Push после Commit, а 3-х конфликты слияния могут вызвать настоящую головную боль. Есть ли лучший рабочий процесс, который мы могли бы использовать, так как я считаю, что сложность распределенного VC перевешивает преимущества на данный момент.
Спасибо
Ответы
Ответ 1
Если вы сталкиваетесь с большим количеством трех способов слияния, возможно, это связано с тем, что вы слишком много накладываетесь на то, над чем работаете и члены вашей команды. Mercurial очень хорошо справляется с слияниями, поскольку все вы не редактируете точные строки файла. Если возможно, вы можете более четко разделить работу и избежать некоторых головных болей крупных слияний. Также обратите внимание, что это все равно будет проблемой с CVS, поскольку это, возможно, хуже при слиянии, чем в меркуриальном.
Вам также не нужно нажимать после каждого фиксации. Ваш рабочий процесс может выглядеть примерно так:
- Зафиксировать часть некоторой функции.
- Выполните некоторые другие функции.
- Зафиксировать последнюю часть функции.
- Исправить ошибки для глупых ошибок.
- Нажмите кнопку полной функции для репо.
В какой-то степени это выглядит как Going Dark, но это можно облегчить, убедившись, что функции в приведенном выше примере небольшие в области.
Ответ 2
-
Забудьте все, что вы знаете о CVS. Mercurial не похож на него, даже если некоторые команды чувствуют себя несколько схожими.
-
Прочитайте http://hginit.com/. Следуйте приведенным ниже примерам.
-
Забудьте все, что вы знаете о CVS.
-
Я имею в виду. Это самая сложная часть. Научитесь доверять своему инструменту.
Ответ 3
Похоже, вы все вносите изменения в одну ветку. У этого есть неудовлетворительный побочный эффект, что вы объединяете изменения друг друга почти на каждом коммите, что было бы хорошо, если бы ручное вмешательство в конфликты не было чем-то, что вы хотите делать каждый раз, когда вы нажимаете.
Вот рабочий процесс, который я бы предложил. Идея состоит в том, чтобы использовать ветвление более интенсивно, поэтому вам нужно чаще сливаться с основной веткой.
-
Каждый разработчик разрабатывает каждую функцию в отдельной ветке. Таким образом:
-
вы избегаете постоянного слияния изменений с другими людьми и
-
вы свободны от давления, чтобы подтолкнуть незавершенную работу до следующего парня, "затрудняет слияние".
-
Когда функция "выполнена", и если изменения будут выглядеть чисто (вызов суждения), объедините ветвь функции непосредственно в главную ветвь и удалите ветвь функции.
-
Если функция отстает от главной ветки (многие функции объединены), или если слияние в противном случае оказывается затруднительным:
-
объединить мастер в ветвь функции.
-
Найти и исправить любые ошибки в контентной изоляции от других разработчиков.
-
Предполагая, что функция готова к работе, объедините ее в мастер (обратите внимание: теперь слияние в этом направлении будет чисто по определению). Если нет, вы можете просто продолжить разработку.
Ответ 4
Мы используем Mercurial, располагая локальными репозиториями на каждой из наших рабочих станций и вытягивая/нажимая на сервер разработки.
Это звучит прекрасно для меня. Моя команда примерно вдвое больше, и она отлично работает.
Я не уверен, что это лучший рабочий процесс, так как легко забыть Push после Commit,
Вам не нужно нажимать после каждой фиксации; вы нажимаете, когда хотите нажать. Что большая идея о DVCS: что Commit и Push отличаются друг от друга!
и трехсторонние конфликты слияния могут вызвать настоящую головную боль.
Вы работаете над одними и теми же строками кода? В моей команде из 5-6 программистов, выталкивая/вытягивая несколько раз в день и выполняя пару десятков раз в день, я не могу вспомнить, как в последний раз мне приходилось вручную разрешать конфликты слияния. Конечно, не в последний месяц или два.
Есть ли лучший рабочий процесс, который мы могли бы использовать, поскольку, по-моему, сложность распределенного VC перевешивает преимущества на данный момент.
Возможно, вам следует описать свой рабочий процесс более подробно, потому что единственная сложность над централизованным контролем версий, с которой я сталкиваюсь в типичный рабочий день, - это, возможно, одна команда, и преимущества огромны. Выполнение "hg вины" только однажды экономит мне больше времени на централизованную версию, чем все "hg push", которые я должен был ввести весь год!
Ответ 5
Для чего это стоит, мы - команда одинакового размера, работающая с Mercurial в первый раз, и мы начали с той же проблемы.
Мы упорствовали, и теперь ситуация значительно лучше. Я думаю, что большинство проблем произошло, когда кодовая база была крошечной, и люди все пытались работать над одним и тем же. Теперь, когда это немного более устоявшиеся люди, не слишком сильно ступают по ногам друг друга, и Париж значительно сокращается.
Надеюсь, что вы его отсортировали!