Mam działające repozytorium kopii, z którym pracowałem bez problemu; źródło tego repozytorium znajduje się na GitHub.
Chciałbym udostępnić moje repozytorium kopii roboczych jako źródło dla mojej maszyny kompilacji (maszyna wirtualna na innym fizycznym hoście), aby zatwierdzenia, które wprowadzam do mojej kopii roboczej, mogły być budowane i testowane na maszynie do kompilacji bez konieczności Najpierw GitHub. Mam już trwającą kompilację dla repozytorium GitHub, ale chciałbym, aby było to „złote” repozytorium / kompilacja; tj. jeśli coś tam trafi, kompilacja przeciwko GitHubowi powinna być gwarantowana.
Przejrzałem dokumentację dotyczącą adresów URL Git i zauważyłem, że istnieje możliwość użycia adresu URL w formularzu git://host.xz[:port]/path/to/repo.git/
(zobacz np. Dokumentację git-clone ). Chcę to zrobić w najprostszy możliwy sposób, przy minimalnej konfiguracji: nie chcę konfigurować demona SSH lub serwera WWW tylko po to, aby opublikować to na mojej maszynie kompilacji.
Używam Windows 7 x64 RC, mam zainstalowane MSysGit i TortoiseGit i otworzyłem domyślny port Git (9814) na zaporze. Załóżmy, że repozytorium kopii roboczych znajduje się pod adresem D:\Visual Studio Projects\MyGitRepo
, a nazwa hosta to devbox
. Maszyna budująca to Windows Server 2008 x64. Próbowałem następującego polecenia na maszynie kompilacji, z powiązanymi danymi wyjściowymi:
D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)
Czy coś mi brakuje?
źródło
Odpowiedzi:
Istnieje pięć możliwości skonfigurowania repozytorium do ściągania z:
git clone /path/to/repo
lubgit clone file://path/to/repo
. Najmniej działa, jeśli masz sieciowy system plików, ale niezbyt wydajne wykorzystanie sieci. (To prawie dokładnie rozwiązanie zaproponowane przez Joakima Elofssona )git clone http://example.com/repo
. Potrzebujesz dowolnego serwera WWW, a także musisz uruchomić (być może automatycznie, z hooka) git-update-server-info, aby wygenerować informacje wymagane do pobierania / ściągania przez „głupie” protokoły.git clone ssh://example.com/srv/git/repo
lubgit clone example.com:/srv/git/repo
. Musisz skonfigurować serwer SSH (demona SSH) i mieć zainstalowane SSH na kliencie (np. PuTTY w MS Windows).git clone git://example.com/repo
. Musisz uruchomić git-daemon na serwerze; szczegółowe informacje można znaleźć w dokumentacji (można go uruchomić jako samodzielny proces tylko do pobierania, a nie jako usługę). git-daemon jest częścią git.git clone file.bndl
(jeśli klon nie działa, możesz wykonać "git init", "git remote add „i„ git fetch ”).To, czego brakuje w twoim przykładzie, to prawdopodobnie uruchomienie git-daemon na serwerze. To lub błędna konfiguracja git-daemon.
Niestety nie mogę Ci pomóc z uruchomieniem git-daemon jako usługi na MS Windows. Jednak w zapowiedzi ostatniej wersji msysGit nie ma nic o tym, że git-daemon nie działa.
źródło
Oprócz odpowiedzi Jakuba Narębskiego jest jeszcze inny sposób, bardziej zgodny z Twoim pierwotnym pytaniem. Możesz sklonować z githuba, tak jak zwykle, a następnie, gdy chcesz wykonać jednorazowe pobranie z lokalnego repozytorium, po prostu zrób to:
(zamiast master możesz podać nazwę dowolnego oddziału).
źródło
..
w <path / to / repo> nie działają; zamiast tego użyj pełnej ścieżki.Trasa ssh działa dobrze, ale wymaga zdalnego serwera ssh. Jeśli masz platformę Windows, Cygwin zapewnia działający serwer ssh, który działa z Git, ale ręcznie zaktualizuj Git, jeśli używasz Cygwin Git (napisałem kilka wskazówek na http://alecthegeek.wordpress.com/2009/01/21/top-tip -upgrade-git-on-cygwin / ).
źródło
Niedawno zmieniłem jeden z moich projektów git, aby replikował się na serwer HTTP przy użyciu sitecopy do faktycznego przesyłania plików.
To całkiem proste, po prostu użyj
git update-server-info
a następnie skopiuj katalog .git do jakiegoś dostępnego dla http katalogu na twoim serwerze. Użyłem „project.git”, co jest dość powszechne.Git pull z http: // site / project-git działa jak mistrz, a ja nie muszę mieć niczego na serwerze poza dostępem do FTP, chociaż sitecopy również obsługuje webdav.
Nie polecam jednak korzystania z sitecopy, ponieważ nie zapewnia to dobrej synchronizacji wielu komputerów. W moim projekcie repozytorium HTTP jest przeznaczone tylko do odczytu, a złote aktualizacje pochodzą z tylko jednej maszyny, więc działa wystarczająco dobrze.
źródło
Jeśli masz taką ścieżkę
i
git init
już to zrobiłeś , więc masz też folderTeraz tworzysz nowy folder
Wejdź do tego folderu i uruchom
git clone --bare ..\Project
( gołe jest ważne),wróć do swojego
C:\Project\
folderu i wykonaj plikgit remote add-url local ..\.git\Project
.Teraz wystarczy zrobić
git add -A
,git commit -m "HelloWorld"
igit push local master
.Możesz udostępniać
Project
folder, podłączać goZ:
i robićgit clone Z:\Project
- możesz używać terazgit pull origin master
igit push origin master
przesyłać / wyciągać zmiany z jednego komputera na inny.źródło
Jeśli twój zdalny host znajduje się w tej samej sieci Windows, tj. Możesz uzyskać do niego dostęp jako \ remotehost, możesz zmapować dysk sieciowy w eksploratorze, powiedzmy z: -> \ remotehost \ repodir, po czym możesz użyć 'git clone / z / myproject ”, aby sklonować projekt
źródło