Git, jak zmienić bare na shared repo?

Więc tak skonfigurowałem mój projekt:

git init --bare

Później dowiedziałem się, że jeśli chcesz pracować nad projektem z wieloma użytkownikami, to tak powinienem to zrobić:

git init --bare --shared

Teraz próbowałem pracować w ten sposób i na szczęście jesteśmy na początku, więc mogłem ponownie skonfigurować Gita. Wciąż zastanawiam się jednak, kiedy jesteś w trakcie projektu, nie możesz tego zrobić. Czy istnieje sposób, aby zmienić nagą repo na wspólną?

Author: bottleboot, 2012-01-16

4 answers

Ponieważ opcja --shared ustawia uprawnienia na wszystko w repozytorium do zapisu grupowego, możesz to zrobić ręcznie później:

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

Plus, dodaj

sharedrepository = 1

W sekcji [core] w .git/config. Współdzielone operacje repos mają również następującą opcję receive zdefiniowaną domyślnie (którą możesz lub nie chcesz):

[receive]
    denyNonFastforwards = true

Uwaga: aby zdecydować, czy chcesz denyNonFastforwards: ta opcja oznacza, że scalanie nigdy nie nastąpi w udostępnionym repozytorium, które w turn, oznacza, że nigdy nie ma konfliktu scalania w udostępnionym repozytorium. Zamiast tego push jest odrzucany, zmuszając użytkownika do scalenia w lokalnym repozytorium, gdzie jest o wiele łatwiejsze do naprawienia i gdzie nie koliduje to z korzystaniem z udostępnionego repo przez inne osoby.

 35
Author: miku,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-09 18:35:01

Oprócz chmod -R g + W, musisz również edytować (.git/)config i ustawić core.sharedRepository = .... Za ..., istnieje kilka wartości, opisanych w git-init(1).

 5
Author: jørgensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-16 16:44:57

Prawdopodobnie, jeśli spróbujesz udostępnić istniejące repozytorium, możesz mieć wiele różnych commitów użytkowników.

1.Jeśli masz uprawnienia super user, możesz przejść do przodu i zmienić wszystkie uprawnienia samodzielnie za pomocą kroku drugiego, w każdym innym przypadku musisz zapytać wszystkich użytkowników z obiektami utworzonymi przez ich użytkowników, użyj następującego polecenia, aby wiedzieć, kim są: {]}

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

2.Teraz ty i wszyscy użytkownicy właściciela pliku będą musieli zmienić uprawnienia tych plików, robi:

$ chmod -R 774 .

3.Następnie będziesz musiał dodać nową właściwość, która jest równoważna --shared=group done dla nowego repozytorium, zgodnie z dokumentacją, to sprawia, że grupa repozytorium jest zapisywalna, wykonaj to:

$ git config core.sharedRepository group
 4
Author: helmedeiros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-13 23:16:54

Jeśli próbujesz udostępnić repozytorium poza hostem, na którym się znajduje, musisz wykonać dodatkowe kroki konfiguracji (rzeczy ssh).

Http://shapeshed.com/setting_up_git_for_multiple_developers/

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

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-16 16:41:08