Как лучше всего настроить центральный репозиторий git из существующего локального репозитория git?

Я знаю, что git распространяется, и, честно говоря, мне нравится это свойство.

Ситуация такова, что я был единственным разработчиком программного обеспечения, которым я управлял с помощью git с момента его создания, в моем локальном хранилище. Так было всегда - другими словами, в настоящее время существует только один репозиторий, в котором я фиксирую и объединяю данные, а главную ветку держу в состоянии «публичного выпуска».

Сейчас я нахожусь на грани отказа от исключительного контроля над проектом и буду делиться его базой исходного кода с другими разработчиками, которые будут вносить изменения самостоятельно. И поэтому мне нужно распространить свою копию проекта среди других. Естественно, я хотел бы продолжить свою будущую работу и иметь возможность просматривать и объединять другие работы обратно в свою копию - git предположительно был создан для выполнения.

Аспект проблемы заключается в том, что ни мой, ни другие компьютеры разработчиков не являются общедоступными (т.е. будут доступны в качестве серверов для ssh или аналогичной службы), и мне сложно представить, насколько возможно для меня извлечь и объединить изменения из их копии репозиторий в мой, и наоборот. Однако проект включает в себя машину интрасети, которую мы можем использовать в качестве хоста репозитория, и на данный момент мне нужен совет о том, как лучше всего все это настроить.

Ни один из разработчиков (включая меня) не должен быть назначен доброжелательным диктатором проекта, однако в интересах управления мне будет поручено убедиться, что какая-то основная или другая ветка доступна для проверки общедоступных выпусков. Но я также не знаю, сколько других разработчиков присоединятся, то есть сколько распределенных копий у нас будет, и поэтому, возможно, потребуется «центральная» / главная копия репозитория, которую я буду единственным автором.

Боюсь, я не могу четко увидеть здесь общую картину. Как лучше всего это сделать?


person amn    schedule 11.02.2013    source источник


Ответы (2)


Просто согласитесь на рабочий процесс с другими разработчиками. Я использую ветвь на каждую функцию и написал свой рабочий процесс здесь: http://dymitruk.com/blog/2012/02/05/branch-per-feature/

Помимо этого, bitbucket предоставляет бесплатные частные репозитории, поэтому вам не нужно беспокоиться о настройке собственного сервера. Вы также можете использовать github, если он должен быть общедоступным, или получить от них частное репо, хотя это не бесплатно.

person Adam Dymitruk    schedule 11.02.2013
comment
Адам, ваша статья нацелена на совершенно другой уровень знаний в области git, которым я [пока] не обладаю. Кроме того, спасибо за вашу помощь. - person amn; 12.02.2013

Если у вас уже есть сервер-кандидат в интрасети, нет ничего плохого в его использовании. Просто настройте там голое репо, поместите туда существующее репо и начните использовать его в качестве центрального репо. Вот и все - диктаторов не будет, но центральным узлом будет центральное «главное репо».

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

Если вы хотите, чтобы ваше репо было главным, вы можете просто открыть это главное репо для других, но иметь отдельную производственную ветвь или репо. Затем вы должны объединить из основной ветки / репо только то, что вы одобрили.

Изменить: практические инструкции по настройке подробно описаны, например, здесь. На всем протяжении есть инструкции. Единственное, что я хотел бы добавить, это то, что вместо git push origin master для первого нажатия вы можете использовать вместо этого git push --all origin, поскольку это приведет к выталкиванию всех ветвей, тегов и т.д., а не только основной ветки.

person eis    schedule 11.02.2013
comment
eis, не могли бы вы подробнее рассказать, как я настраиваю исходное репо на удаленном сервере, нажимаю туда и использую его как центральное репо? Это та часть, которую я сейчас не могу делать в одиночку. - person amn; 12.02.2013
comment
@amn добавил в ответ ссылку для вас - person eis; 12.02.2013