2012-01-16 4 views
28

Так вот как я создал свой проект:Git, Как изменить общий общий репо?

git init --bare 

Позже я узнал, что, если вы хотите работать над проектом с несколькими пользователями это, как я должен был сделать это:

git init --bare --shared 

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

+0

Другим использование случай, когда нужно было бы изменить существующее годовое репо, если ваше удаленное репо повреждено, и вы пытаетесь заменить его голой репо, которую вы реверсировали из регулярного репо. –

+1

Еще в 'git 1.7.1' вы можете просто запустить команду' git init --bare --shared' в * exiting * bare repo и 'git' будет * повторно инициализировать * репо с указанным общим доступом. – go2null

+0

Возможный дубликат [Как настроить существующий репозиторий git для совместного использования группой UNIX] (http://stackoverflow.com/questions/3242282/how-to-configure-an-existing-git-repo-to-be -shared-by-a-unix-group) –

ответ

34

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

$ chmod -R g+w the/repo/path 

Plus, добавить

sharedrepository = 1 

в разделе [core] в .git/config. Общие операции РЕПО также имеют следующие receive option определены по умолчанию (которые вы можете или не хотите):

[receive] 
    denyNonFastforwards = true 

Примечание: Для того, чтобы решить, хотите ли вы denyNonFastforwards: Эта опция означает, что слияние никогда не происходит в общем хранилище, что, в свою очередь, означает, что конфликт в объединенном репозитории никогда не возникает. Вместо этого push отклоняется, заставляя пользователя выполнять слияние в своем локальном репозитории, где его гораздо легче исправить и где он не мешает использованию другими пользователями общего репо.

+0

Aha ok! Приятно знать, хотелось бы, чтобы я спросил об этом раньше. Благодаря! – bottleboot

+1

Хорошо, я вижу! Я просто прочитал ответ @ jørgensen, который подтверждает это. У Stackoverflow должна быть объединенная кнопка ответа: D! Спасибо вам всем, что было очень поучительным! – bottleboot

+0

Не работал для меня. Он требовал 'chmod -R g + s ...'. Новый 'git init --bare --shared' будет иметь права группы« rws ». (Ubuntu 12.04) – Unapiedra

2

Если вы пытаетесь предоставить общий доступ к репозиторию от хоста, на котором он установлен, необходимо выполнить дополнительные шаги настройки (ssh stuff).

http://shapeshed.com/setting_up_git_for_multiple_developers/

http://www.jedi.be/blog/2009/05/06/8-ways-to-share-your-git-repository/

+0

Я не думаю, что это то, что мы делаем для этого текущего репо. Спасибо хоть! – bottleboot

5

Кроме CHMOD -R г + ж, вам необходимо отредактировать (.git/)config и установить core.sharedRepository = .... Для ... существует несколько значений, описанных в git-init (1).

+0

Хорошо! Это, похоже, завершает мое подозрение, что мне также необходимо изменить конфигурацию. Благодаря! – bottleboot

4

Возможно, если вы попытаетесь разделить существующий репозиторий, у вас может быть много разных пользователей.

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

$ ls -la | awk '{print $3}' | sort -u 
<your user_name> 
<his user_name> 

2.Now вы и пользователи владелец файла все придется изменить эти файлы разрешения, выполнив:

$ chmod -R 774 . 

3.После этого вам нужно будет добавить новое свойство, которое эквивалентно --shared = группы сделана для нового хранилища, в соответствии с документацией, это сделать хранилище группы перезаписываемое, сделай это выполнение:

$ git config core.sharedRepository group 

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

  • Нет связанных вопросов^_^