Уже несколько месяцев я использую git в проекте, разработанном только мной. У меня есть локальный репозиторий, и я регулярно отправляю его на github для резервного копирования.
Я хочу добавить еще одного разработчика в этот проект, однако я буду нести ответственность за интеграцию всего проекта.
Какой рекомендуемый рабочий процесс?
Нужны ли нам частные и публичные репозитории для каждого разработчика?
Если репозиторий github является основным, должен ли другой разработчик клонировать этот репозиторий или репозиторий на моем компьютере?
Должен ли он иметь право вставлять в мой репозиторий или я должен извлекать из его репозитория?
Git ориентирован на тянущий, а не на push. В идеале другой разработчик должен клонировать ваш репозиторий общественный на Github; затем, когда он закончит свои изменения, вы либо возьмете из репозитория, который он предоставляет вам, либо интегрируете его изменения с исправлениями, которые он отправит вам по электронной почте. В любом случае, вы должны внести изменения в репозиторий частныйна твоем компьютере, исправить любые ошибки, возникшие в результате слияния, а затем отправить его изменения в ваше публичное репо (на Github).
Конечно, нет ничего плохого в том, чтобы предоставить ему доступ для фиксации к вашему репозиторию Github.
@spinlock: Да. Или он мог бы добавить именованный пульт, используя такой URL-адрес, а затем использовать git pull <named remote>
.
Он может создать свой собственный форк вашего репозитория github, и когда он почувствует, что готов к интеграции, он может отправить вам запросы на вытягивание (где у вас есть общедоступный URL-адрес его репозитория в качестве удаленного) или он может отправить вам наборы git format-patch
.
Обычно при таком рабочем процессе ответственность за то, чтобы его патчи корректно применялись к вашему общедоступному мастеру, в значительной степени лежит на нем.
Небольшой совет ... убедитесь, что вы оба понимаете, какие операции git перезапишут историю. Сброс указателей веток, перебазирование, добавление коммитов и т. д. Перезапишет историю, что нормально, но только для частных веток. Для веток, которыми вы делитесь (отправляете или извлекаете), вам следует избегать перезаписи истории.
Вот статья о Упаковка программного обеспечения с использованием Git, которую приятно читать. Он нацелен на людей, занимающихся крупномасштабной интеграцией (например, сборкой дистрибутивов Linux), но принципы обычно применимы.
Как будет выглядеть привлекательность репо с партнерами? Будет ли команда выглядеть примерно так:
git pull git://127.128.0.1/partner_user_name/project.git
?