Mam projekt, który jest kontrolowany w wersji za pomocą git.
To, co chcę zrobić, to skonfigurować repozytorium w moim (udostępnionym ssh) GoDaddy współużytkowanym pakiecie hostingowym, aby móc wdrażać za pomocą wypychania zamiast przeciągania i upuszczania na FTP.
Wszelkie wskazówki będą mile widziane. Najlepsze byłoby konto kogoś, kto już to zrobił, ale nie mogłem osobiście znaleźć żadnego online.
Odpowiedzi:
Napotkałem ten sam problem z witryną, którą hostowałem w hostowanym pakiecie hostingu. Oni również dają ci
ssh
dostęp, ale niestety nie majągit
zainstalowanego i nawet nie dają ci dostępu do uruchamianiagcc
, co utrudnia pobranie i zainstalowanie git dla twojego użytkownika.Jedynym sposobem na obejście tych ograniczeń było skopiowanie plików binarnych git z innego komputera, który je miał. Być może to samo rozwiązanie zadziałałoby dla Ciebie i Twojego współdzielonego hosta GoDaddy. Oto co zrobiłem:
Najpierw dowiedz się, jaką architekturę ma Twój serwer. W moim przypadku był to 32-bit (i386). Oto kilka sposobów, aby to zrozumieć:
Następnie musisz znaleźć inny komputer z systemem Linux o tej samej architekturze i zainstalowanym na nim git. Nie muszą nawet uruchamiać tej samej dystrybucji lub wersji systemu Linux, o ile mają taką samą architekturę i można znaleźć potrzebne pliki binarne i biblioteki.
Aby znaleźć lokalizację głównego pliku binarnego git:
Niektóre inne ważne pliki binarne (jak
git-receive-pack
) również znajdują się w tym samym katalogu, więc zalecamy po prostu skopiowanie wszystkich,/usr/local/bin/git*
aby upewnić się, że otrzymujesz wszystko, czego potrzebujesz.Inne ważne pliki, od których zależy git, znajdują się w katalogu „libexec” gdzieś w systemie źródłowym. Jeśli nie skopiujesz ich, może pojawić się zaskakujący komunikat o błędzie podczas próby wykonania
git push
, podobnie jak ja:Aby znaleźć katalog zawierający podstawowe biblioteki git na docelowym hoście, możesz użyć tego:
Polecam najpierw skopiować te pliki, a następnie spróbować uruchomić git, aby sprawdzić, czy narzeka na brakujące biblioteki współdzielone. Jeśli tak się nie stanie, jesteś (prawdopodobnie) dobry. Jeśli tak, czytaj dalej. (Nie ma potrzeby kopiowania przez biblioteki współdzielone, jeśli już istnieją na hoście docelowym i są poprawną wersją.)
Można kopiować pliki z
scp
,rsync
,ftp
, czy cokolwiek innego są wygodne. Użyłemscp
czegoś takiego:Następnie ssh do target_host. Musisz dodać kilka takich wierszy do
~/.bashrc
:Jeśli zapomnisz ten krok, możesz być zaskoczony tym błędem, gdy wykonujesz
git push
:Jest to udokumentowane w Git FAQ na git.or.cz:
GIT_EXEC_PATH
jest udokumentowany naman git
:Źródło nowego
~/.bashrc
. Teraz spróbuj uruchomićgit
.Oto, co dał mi pierwszy raz:
Udało mi się ustalić lokalizację bibliotek współdzielonych do skopiowania, uruchamiając to na komputerze źródłowym:
W moim przypadku miałem tylko skopiować
/lib/libcrypto.so.4
na na~/lib
na mójtarget_host
i wszystko było w porządku.Teraz powinieneś pracować
git
na swoim wspólnym serwerze hostingowym i powinieneś być w stanie na niego naciskać!Teraz musisz albo utworzyć nowe repozytorium git i drzewo pracy na swoim serwerze, albo skopiować istniejące repozytorium / drzewo pracy.
Nawiasem mówiąc, nie sądzę, aby w tym przypadku na serwerze było to, czego potrzebujesz, ponieważ powiedziałeś, że chcesz wdrożyć rzeczywiste pliki treści (w przeciwieństwie do samych
config HEAD objects/ refs/
plików, które byłyby zawarte w nagim repozytorium), ilekroć chcesz robiszgit push
.toolmantim.com wyjaśnia różnicę między zwykłym repozytorium git a zwykłym repozytorium:
Zakładam na chwilę, że już utworzyłeś katalog w swoim
target_host
miejscu, w którym chcesz wdrożyć swoją stronę internetową (lub cokolwiek, co wdrażasz). Nazwijmy ten katalog~/www/my_site
. Być może masz nawet ftp na wszystkich swoich plikach~/www/my_site already
. (Nieważne, czy masz, czy nie jest to ważne.) Przyjmuję również na chwilę, że nie skopiowałeś już podkatalogu .git~/www/my_site
(jeśli tak, to powinno działać dobrze).Ponieważ na serwerze docelowym nie ma już zainicjowanego repozytorium git, pierwszym krokiem byłoby utworzenie jednego:
Następnie z dowolnego hosta, który ma repozytorium z najnowszymi zmianami, które chcesz wdrożyć (jak sądzę, z twojego pudełka programistycznego), po prostu musisz zrobić coś takiego, aby wdrożyć:
Możesz zobaczyć takie ostrzeżenie, jeśli Twoje repozytorium
target_host
nie jest jeszcze aktualne:(W normalnym
git
wykorzystaniu nigdy widzisz tę wiadomość, jak sądzę, bo jesteś normalnie popychanie do gołych repozytoriach. Ale ponieważ nasza zdalnego repozytorium w tym przypadku jest to normalny repo zarówno z drzewa pracy i indeksu,git
jest zrozumiałe zaniepokojenie, że może coś zepsuć.)Myślę jednak, że możemy bezpiecznie ustawić opcję „ignoruj” na twoim serwerze, ponieważ prawdopodobnie nie będziesz dokonywał żadnych zmian bezpośrednio w repozytorium. (Wszystkie zatwierdzenia powinny prawdopodobnie pochodzić z repozytorium programisty, a następnie zostać przekazane na serwer).
Więc ustaw dalej, aby nie wyświetlać ostrzeżenia za każdym razem, gdy naciskasz:
Te
push
się jedynie aktualizacje indeks jednak NIE pliki w drzewie samej pracy. Aktualizacja tych plików to jednak tylko część tego, co próbujemy zrobić, więc nasze zadanie nie jest zakończone, dopóki nie wypiszemygit
zawartości indeksu do samego drzewa pracy, w następujący sposób:(Uwaga: wszelkie zmiany, które mogły zostać wprowadzone w drzewie pracy na serwerze, zostaną zastąpione przez zawartość repozytorium).
Postępowałem również zgodnie z sugestią Mattikusa i stworzyłem pilota dla mojego serwera:
Teraz muszę tylko wdrożyć:
Posunąłem się nawet tak daleko, że wrzuciłem te polecenia do skryptu, który nazwałem,
script/deploy
więc za każdym razem, gdy chcę wdrożyć, mam tylko jedno polecenie do uruchomienia.Daj mi znać, jeśli znajdziesz jakieś błędy w tej instrukcji lub znasz lepsze rozwiązanie.
źródło
Jestem zarówno SF, jak i godaddy n00b, więc proszę o wyrozumiałość, ale tak czy inaczej, bardzo się cieszę, że to tutaj omówione.
Tylko 0,02 $, próbowałem zbudować git (dynamicznie) na moim Linux-ie, podłączając go do mojego konta chrzestnego, a nawet jeśli próbuję jedynie pchnąć się do innej pasywnej maszyny chrzestnej, nie udaje się to z powodu braku opensl. Może jeśli spróbuję zbudować gita statycznie za pomocą openssl, ale wydaje mi się, że to zły pomysł.
Nie na temat, ale czy jest to rodzaj braku wsparcia, którego powinienem oczekiwać od chrzestnego, czy powinienem żałować, że nie wybrałem hostów marzeń?
Z pozdrowieniami CJ
PS. Nie odpowiedź, ale sugestia, że gdy git-receive pracuje nad chrzestnym (prawda?), To repozytorium z odłączonym drzewem roboczym to świetny sposób na wdrożenie w Internecie: http://toroid.org/ams/git- strona internetowa-howto
źródło
Najłatwiej to zrobić, uruchamiając coś takiego na zdalnym serwerze:
Następnie przy kasie:
Nie wymaga serwera ani niczego innego i powinieneś być w stanie pobrać / pobrać z tego komputera, tak długo jak masz dostęp do ssh.
Jeśli masz również skonfigurowany plik .ssh / config, powinien skorzystać z tego i użyć dowolnych skonfigurowanych kluczy prywatnych.
Jeśli planujesz dużo wypychać aktualizacje, możesz dodać zdalne repozytorium do kasy deweloperskiej:
Od tego momentu możesz:
Aby uzyskać więcej informacji, sprawdź dokumenty online na
git push
lub uruchom,git push --help
aby uruchomić stronę podręcznika lokalnego.źródło