Git рабочий процесс, когда вы не можете толкать или тянуть
Это постоянный вопрос для меня, но я хотел бы повторить.
Быстро объясните мою ситуацию: я нахожусь в среде, где у меня нет ни git-сервера, ни общего раздела, ни какой-либо общей точки среди программистов. Не иметь, не иметь, не может иметь. Период.
Я пытаюсь найти решение для рабочего процесса, чтобы даже в такой среде нам удавалось поддерживать разумную синхронизацию наших представителей.
Решение, которое я сейчас пробую, использует дискуссионную группу для распространения исправлений, две основные ветви и, казалось бы, короткий рабочий процесс:
- Ветви
marster
а такжеyours
master
это ветвь синхронизации, которая будет держать вас в курсе и отслеживать, что другие разработчики все еще не имеют вашего кода.yours
будет вашим новым хозяином, и где ваш окончательный код должен быть. Вы не работаете вmaster
,- все рассылают патчи в список обсуждений.
- Я считаю, что очень редко два человека будут работать в одном файле.
В рабочем процессе есть два основных действия:
Создать патчи:
- Должен
yours
- Создать патчи из
master
(git format-patch master
) - Идти к
master
- сливаться
yours
вmaster
- > Перейти к
yours
продолжить работу сyours
Применить патчи:
- Идти к
master
ветка - Применить полученные патчи
- Идти к
yours
ветка - сливаться
master
вyours
- > Продолжайте работать с
yours
Если я правильно понял, это должно сохранить master
ветвь разумно в синхронизации со всеми остальными.
Не то чтобы yours
Ветка только для того, чтобы отслеживать то, что есть у других людей или нет.
Есть несколько проблем, которые я пытаюсь выяснить, если будет слишком много хлопот:
- Порядок исправлений применяется?
- Как избежать и обнаружить, когда кто-то пропускает патч?
- Сколько проблем может быть, когда кто-то пропустит патч?
- Другие проблемы, которые это может вызвать, я даже не задумывался?
Спасибо!
1 ответ
Вместо одного репо с двумя ветками я предпочел бы два репо:
- один только
master
филиал в нем - один (клонированный с первого) с
master
а такжеyours
Таким образом, я могу:
- слить то, что мне нужно от
yours
филиал вmaster
в 'yours
репо - извлечь изменения из
master
филиалyours
репо вmaster
филиалmaster
Сделки рЕПО - Сделайте добавочный пакет из
master
репо (в результате один файл, легче общаться) - отправить этот файл вместе с SHA1
master
Сделки рЕПО
На приемном конце я бы:
- вытащить из пачки в
master
Сделки рЕПО - проверьте его SHA1 (таким образом, я уверен, что ничего не пропустил)
- тянуть
master
ветвь изmaster
репо вmaster
филиал "твоего" репо - слить то, что мне нужно от
master
ветвь кyours
ветка.
Идея иметь два отдельных репо состоит в том, чтобы иметь один с SHA1, который можно проверить на принимающей стороне: он должен быть одинаковым на обоих сайтах.