2013-02-11 2 views
1

Я знаю, что git распространяется, и, честно говоря, мне нравится это свойство.Как лучше настроить «центральный» git-репозиторий из существующего существующего локального репозитория git?

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

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

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

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

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

ответ

0

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

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

+0

Адам, ваша статья нацелена на совершенно другой уровень знания git, которого я еще не обладаю. Кроме этого, спасибо за вашу помощь. – amn

0

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

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

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

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

+0

eis, не могли бы вы рассказать о том, как я устанавливаю исходное репо на удаленном сервере, нажимаем туда и используем его как центральный репо? Это та часть, которую я не могу сделать сам по себе. – amn

+0

@amn добавил ссылку для вас в ответ – eis

Смежные вопросы