В настоящее время наша компания использует простую соединительную модель trunk/release/hotfixes и хотела бы посоветовать, какие ветвящиеся модели лучше всего подходят для вашей компании или процесса разработки.
-
Модели рабочих процессов/ветвлений
Ниже приведены три основных описания этого явления, которые я видел, но они частично противоречат друг другу или не уходят достаточно далеко, чтобы разобраться в последующих проблемах, с которыми мы столкнулись (как описано ниже). Таким образом, наша команда до сих пор по умолчанию не очень велика. Вы делаете что-то лучше?
-
Слияние и перезагрузка (запутанная и последовательная история)
Должен ли кто-то
pull --rebase
или ждать слияния с основнойpull --rebase
пока ваша задача не будет завершена? Лично я склоняюсь к слиянию, так как это сохраняет визуальную иллюстрацию, на основе которой была запущена и закончена задача, и я даже предпочитаюmerge --no-ff
для этой цели. Однако у него есть и другие недостатки. Также многие не осознали полезного свойства слияния - что он не является коммутативным (объединение ветки темы в мастер не означает слияние мастера в ветку темы). -
Я ищу естественный рабочий процесс
Иногда случаются ошибки, потому что наши процедуры не фиксируют конкретную ситуацию с простыми правилами. Например, исправление, необходимое для более ранних выпусков, должно, конечно, основываться достаточно вниз по течению, чтобы можно было объединить вверх по течению во все необходимые ветки (достаточно ли использование этих понятий?). Однако бывает, что исправление превращает его в мастера до того, как разработчик осознает, что он должен быть размещен дальше по течению, и если это уже нажато (что еще хуже, слито или что-то на нем), то оставшаяся опция - выбор вишни, связанные с ним опасности. Какие простые правила вы используете? Также в этом включена неловкость одной ветки темы, которая обязательно исключает другие ветки темы (при условии, что они разветвлены от общей базовой линии). Разработчики не хотят заканчивать функцию, чтобы начать еще одно чувство, похожее на код, который они только что писали, больше не существует
-
Как избежать конфликтов слияния (из-за вишневого выбора)?
Кажется, что верный способ создать конфликт слияния - это черемуха между ветвями, они никогда не могут быть объединены снова? Будет ли применение одной и той же фиксации в revert (как это сделать?) В любой ветке, возможно, разрешит эту ситуацию? Это одна из причин, по которой я не смею настаивать на основном потоке слияния.
-
Как разложить на актуальные отрасли?
Мы понимаем, что было бы здорово собрать готовые интеграционные решения из ветвей тем, но часто работа наших разработчиков не была четко определена (иногда так же просто, как "ковыряться"), и если какой-то код уже перешел в "разное", его нельзя вытащить оттуда снова, согласно вышеизложенному вопросу? Как вы работаете с определением/одобрением/выпуском/выпуском своих веток?
-
Разумеется, правильные процедуры, такие как просмотр кода и выпуск, будут прекрасными.
Но мы просто не можем держать вещи распущенными, чтобы справиться с этим - любые предложения? интеграционные отрасли, иллюстрации?
Ниже приведен список связанных вопросов:
- Каковы некоторые хорошие стратегии, позволяющие устанавливать исправленные приложения?
- Описание рабочего процесса для использования Git для внутреннего развития
- Рабочий процесс Git для разработки корпоративного ядра Linux
- Как вы поддерживаете код разработки и производственный код? (спасибо за этот PDF!)
- Управление выпуском git
- Git Cherry-pick vs Merge Workflow
- Как чередовать несколько коммитов
- Как вы объединяете выборочные файлы с помощью git-merge?
- Как вишня выбирает ряд коммитов и сливается в другую ветку
- Рабочий процесс ReinH Git
- git workflow для внесения изменений, которые вы никогда не будете возвращать в исходное положение
- Черри-выберите слияние
- Правильный рабочий процесс Git для комбинированной ОС и частного кода?
- Поддержание проекта с Git
- Почему не удается слить файл слияния Git с измененным родителем/мастером.
- Git разветвление/восстановление передовых методов
- Когда "git pull --rebase" заставит меня беспокоиться?
- Как DVCS используется в больших командах?
Также ознакомьтесь с тем, что Plastic SCM пишет о разработке, ориентированной на задачи, и если Пластик не является вашим выбором, изучите модель ветвления nvie и его поддерживающие сценарии.