2012-01-16 12 views
28

Tak to jest jak skonfigurować mojego projektu:Git, Jak zmienić go na udostępnione repo?

git init --bare 

Później dowiedziałem się, że jeśli chcesz pracować nad projektem z wieloma użytkownikami jest to w jaki sposób należy 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ć git. Wciąż się zastanawiam, że kiedy jesteś w trakcie projektu, nie możesz tego zrobić. Czy istnieje sposób na zmianę nagiego repo na udostępniony?

+0

Innym zastosowaniem Przypadek, w którym ktoś chciałby zmodyfikować istniejące repozytorium repo, to sytuacja, w której zdalne repo uległo uszkodzeniu i próbujesz zastąpić go repozytorium, które zostało odwrócone z repozytorium regularnego. –

+1

Już od 'git 1.7.1' możesz po prostu uruchomić polecenie' git init --bare --shared' w * exiting * bare repo i 'git' ponownie * reaktywować * repo z określonym udostępnieniem. – go2null

+0

Możliwy duplikat [Jak skonfigurować istniejące repozytorium git udostępniane przez grupę UNIX] (http://stackoverflow.com/questions/3242282/how-to-configure-an-existing-git-repo-to-be -shared-by-a-unix-group) –

Odpowiedz

34

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

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

Plus, dodać

sharedrepository = 1 

sekcji [core] w .git/config. Udostępnione repo mają również receive option zdefiniowane domyślnie (które mogą lub nie chcą):

[receive] 
    denyNonFastforwards = true 

Uwaga: aby zdecydować, czy chcesz denyNonFastforwards: Ta opcja oznacza scalenie nigdy nie zdarza się we wspólnym repozytorium, co z kolei oznacza, że ​​nigdy nie ma konfliktu scalania we współdzielonym repozytorium. Zamiast tego popychanie jest odrzucane, zmuszając użytkownika do scalenia w lokalnym repozytorium, gdzie jest o wiele łatwiejsze do naprawienia i tam, gdzie nie przeszkadza innym użytkownikom korzystania z udostępnionego repo.

+0

Aha ok! Dobrze wiedzieć, żałuję, że wcześniej o to nie zapytałem. Dzięki! – bottleboot

+1

Ok, widzę! Właśnie przeczytałem odpowiedź @ jørgensen, która to potwierdza. Stackoverflow powinien mieć połączony przycisk odpowiedzi: D! Dziękuję wszystkim, co było bardzo pouczające! – bottleboot

+0

Nie działa dla mnie. Wymagało to 'chmod -R g + s ...'. Świeże 'git init --bare --shared' ma prawa grupy" rws ". (Ubuntu 12.04) – Unapiedra

5

Poza chmod -R g + w, trzeba także edytować (.git/)config i ustawić core.sharedRepository = .... Dla ... istnieje garść wartości opisanych w git-init (1).

+0

OK! To wydaje się uzupełniać moje podejrzenie, że muszę zmienić konfigurację. Dzięki! – bottleboot

4

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

1.Jeśli masz uprawnienia superużytkownika, możesz przejść do przodu i zmienić wszystkie uprawnienia samodzielnie, wykonując krok 2, w każdym innym przypadku, gdy będziesz musiał zapytać wszystkich użytkowników o obiekty utworzone za pomocą ich użytkowników, skorzystaj z następujących komenda wiedzieć, kim są:

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

2.Now ty i właściciel wszystkich plików użytkownicy mają zmienić te pliki pozwolenie, robi:

$ chmod -R 774 . 

3.Potem trzeba będzie dodać nową właściwość, która jest równoważna --shared = grupy wykonanej dla nowego repozytorium, zgodnie z dokumentacją tego dokonać repozytorium grupy zapisu, zrób to wykonanie:

$ git config core.sharedRepository group