Prześlij zmiany git na udostępniony dysk sieciowy

90

W jaki sposób zespół czterech osób może używać Git (szczególnie Github dla Windows ) do wypychania lokalnych zmian na udostępniony dysk sieciowy?

W tej chwili (bez Gita) musimy skopiować pliki z dysku sieciowego na nasz lokalny komputer, edytować pliki, a następnie ponownie przesłać je na udostępniony dysk sieciowy. Jest to żmudny proces, który może prowadzić do wielu błędów, ale wygląda na to, że Git mógłby nam w tym pomóc.

Czy możemy po prostu zainstalować Git na dysku współdzielonym i zacząć stamtąd?

user1549303
źródło

Odpowiedzi:

123

Nie jestem pewien, czy znalazłeś coś, co działa dla ciebie, czy nie, ale mam napisać, jak to zrobić na dysku sieciowym Windows:

http://tony.halcyonlane.com/blog/2011/09/22/Using-git-at-work-on-a-Windows-network-drive/

Z polecenia cmd zmiana na zmapowany dysk.

$ cd g:

Następnie przejdź do repozytorium git, które wkrótce ma być.

$ cd skryptów

Następnie utwórz puste repozytorium git. Jeśli nie używasz opcji --bare, będziesz mieć problemy, więc nie pomijaj tego.

$ git init --bare

Teraz, jeśli nie masz jeszcze lokalnego repozytorium git, możesz sklonować swoje nowe repozytorium w dowolnym miejscu, przechodząc z powrotem na dysk lokalny.

$ c:

$ cd praca / skrypty

$ git clone file: // g: \ scripts

Podczas klonowania automatycznie uzyskujesz zdalny plik o nazwie „źródło” i możesz przesłać go na serwer w celu bezpiecznego przechowywania za każdym razem, gdy wprowadzasz zmiany lokalnie.

$ git push origin master

Jeśli masz już repozytorium git i chcesz po prostu wypchnąć na dysk współdzielony, możesz to zrobić z lokalnego katalogu git.

$ git remote dodaj plik pochodzenia: // g: \ scripts

$ git push origin master

Tony Eichelberger
źródło
1
Dziękuję - zrobiłem dokładnie to dla osobistego projektu w mojej sieci domowej.
Martin Snyder
Wykonałem te kroki, ale otrzymałem następujące błędy po uruchomieniu git push origin master error: cannot spawn sh: No such file or directory fatal: cannot to fork
NickStees
Dziękuję Ci. Znalezienie tej odpowiedzi
zajęło
Dla każdego, kto nie ma zmapowanego dysku współdzielonego, istnieje pushd (i popd), aby utworzyć wirtualny dysk tymczasowy, do którego można się udać ( patrz link )
LoJo
Jakie problemy będziesz mieć, jeśli nie użyjesz --bare? Mam już repozytorium non-bare na dysku sieciowym i chciałbym używać go jako pilota.
Fractaly
24

Nasz zespół obecnie właśnie to robi. Każdy programista ma:

  1. Git zainstalowany na ich komputerze lokalnym
  2. Dostęp do ich osobistego dysku współdzielonego ( L:)
  3. Dostęp do współdzielonego dysku grupowego ( V:)

Mamy „zdalne” repozytorium (skonfigurowane przy użyciu init -bare) na V:dysku i każdy ma klon na swoim L:dysku osobistym . Wszystkie zmiany są wprowadzane na L:dysku i wypychane na V:dysk, który jest następnie ściągany później przez innych programistów do ich osobistych repozytoriów na ich L:dyskach. Działa to bez żadnych problemów i ogranicza potrzebę posiadania serwera Git.

eykanal
źródło
Okej świetnie! Czy muszę najpierw utworzyć lokalne repozytorium, a następnie skonfigurować zdalne repozytorium na udostępnionym dysku?
user1549303
1
@ user1549303 - Tak to robimy. Możesz utworzyć lokalne repozytorium (nasze L:repozytorium dysku) za pomocą git init, a następnie utworzyć zdalne (nasz v:dysk) za pomocą git clone --bare(lub a git init --bare, a następnie wypchnij z L:).
eykanal
@eykanal - Mój zespół korzysta obecnie ze starożytnej, okropnej biblioteki kontroli źródła i zamierzamy przejść na git. Jedną z rzeczy, które pozwala mi nasza obecna biblioteka, jest sprawdzenie, kto wyewidencjonował plik, ale zapomniał wpisać zmiany. W git wszystkie repozytoria są lokalne, więc skąd możesz wiedzieć, czy ktoś zapomniał nacisnąć na „v:”?
Kevin Buchan
3
@KevinBuchan - proponuję zamieścić swój komentarz jako nowe pytanie.
eykanal
1
Jak Git reaguje, gdy dwóch programistów próbuje w tym samym czasie przesyłać dane do tego samego współdzielonego repozytorium (powiedzmy V :)? Czy miałeś jakiś problem z współbieżnymi operacjami wypychania?
Jordi
2

Możesz dodać kolejny pilot wskazujący na twój dysk sieciowy (git remote)

Następnie możesz push pull podobnie jak w przypadku github

bluesman
źródło