Bare Bones Browser
git instaweb --httpd=webrick
z książki git scm
połącz to z czymś podobnym do opisanego tutaj podejścia do rozproszonego programowania ( przypis do datagrok za dobrze opisaną koncepcję)
Uruchom jednorazowy serwer git z dowolnego lokalnego repozytorium.
Już to napisałem na Twitterze, ale pomyślałem, że przydałoby się rozszerzenie:
Włącz zdecentralizowany przepływ pracy git: alias konfiguracji git. Zachowaj "daemon --verbose --export-all --base-path = .git --reuseaddr --strict-paths .git /"
Załóżmy, że używasz przepływu pracy git, który obejmuje pracę z podstawowym „oficjalnym” repozytorium, które pobierasz i wpychasz zmiany zi do. Jestem pewien, że robi to wiele firm, podobnie jak wielu użytkowników usług hostingowych git, takich jak Github.
Powiedzmy, że serwer lub Github na chwilę przestaje działać.
Nie martw się, w końcu jednym z powodów, dla których używasz git, jest to, że masz kopię całej historii projektu w lokalnym klonie.
Możesz nadal kodować i zatwierdzać, czekając, aż zespół operacyjny przywróci serwer do życia. Uwaga do siebie: kup pączki dla zespołu operacyjnego.
Ale co, jeśli podczas tego przestoju chcesz współpracować z inną osobą, która może nie być ekspertem od git, w tym samym repozytorium?
Lub, zamiast przestojów, co zrobić, jeśli ty i twój współpracownik jesteście w terenie, a z jakiegoś powodu nie możesz uzyskać VPN, aby zezwolić ci na połączenie z oficjalnym repozytorium?
A co, jeśli ty i twój współpracownik wprowadzacie szereg eksperymentalnych zmian i mimo że macie dostęp, nie chcecie pchać niedokończonego bałaganu do oficjalnego centralnego repozytorium? (Nawet jako gałęzie fabularne.) Być może jesteś w trakcie sprzątania katastrofalnej bazy lub scalania, a gałęzie są wszędzie.
Git, jak zapewne wiesz, jest „rozproszonym” systemem kontroli wersji .
Nawet jeśli możesz używać centralnego „oficjalnego” repozytorium git w swoim przepływie pracy, nadal możesz korzystać z git w trybie peer-to-peer, w którym ty i twój współpracownik po prostu budujecie i udostępniacie commity, a centralny serwer nigdy nie musi wiedzieć.
Jak więc zdobyć swoje gałęzie i zobowiązać się do nich lub odwrotnie?
- Możesz użyć narzędzi git do poprawek e-mail. Jest to jednak trochę nieeleganckie i wymaga wiedzy na temat tego, jak stosować łatki wysyłane pocztą e-mail.
- Możesz utworzyć konto na swoim komputerze, na którym współpracownik będzie mógł ssh. Ale może nie masz lokalnego dostępu do roota, a może nie ufasz im dostępem SSH do twojego urządzenia.
- Możesz sklonować swoje repozytorium na pendrivie i przekazać je tam iz powrotem. Jest to jednak dość żmudne, zwłaszcza jeśli znajdujesz się w tej samej sieci lokalnej i wymaga napędu kciukiem.
Prawdopodobnie możesz pomyśleć o innych metodach. Ale jest super łatwy sposób: jeśli widzisz się w sieci, możesz uruchomić jednorazowy serwer git, którego mogą używać jako swojego pilota do klonowania, pobierania i wyciągania zmian oraz zabijania go, gdy jesteś skończone z tym.
Narzędzie, które to umożliwia git daemon, ma wiele opcji i funkcji, ale w celu umożliwienia tego łatwego jednorazowego „po prostu obsłuż repozytorium, w którym jestem”, sposobem na jego użycie jest utworzenie aliasu. Lubię to nazywać git serve. Biegać:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
Używanie aliasu jest w rzeczywistości kluczowe, ponieważ aliasy git są wykonywane w katalogu podstawowym twojego drzewa roboczego. Zatem ścieżka „.git” zawsze wskazuje właściwe miejsce, bez względu na to, gdzie jesteś w drzewie katalogów swojego repozytorium.
Użyj nowego git servetak:
- Uruchom
git serve. „Gotowy na dudnienie”, poinformuje. Git jest kiepski.
- Znajdź swój adres IP. Powiedzmy, że to 192.168.1.123.
- Powiedz „hej Jane, nie jestem gotowy / nie mogę przesunąć tych zmian do źródła, ale możesz pobrać moje zmiany do swojego klonu, uruchamiając
git fetch git://192.168.1.123/ ”
- Naciśnij ctrl + c, jeśli nie chcesz już obsługiwać tej repozytorium.
Możesz też powiedzieć Jane, żeby git clone git://192.168.1.123/ local-repo-namenie miała jeszcze klonu repozytorium. Lub użyj, git pull git://192.168.1.123/ branchnameaby pobrać i scalić jednocześnie, przydatne, jeśli pracujesz razem nad gałęzią funkcji.
Pamiętaj jednak, że nie powinieneś tego robić w wrogich sieciach, jeśli trzymasz sekrety w swoim repozytorium, ponieważ nie ma uwierzytelnienia. Nie reklamuje jego istnienia, ale każdy, kto ma skaner portów, może go znaleźć, połączyć się z nim i sklonować repozytorium.
Ale to nie jest bardzo niebezpieczne, ponieważ domyślnie jest tylko do odczytu. Przeczytaćgit daemon uważnie stronę jeśli uważasz, że chcesz włączyć dostęp do zapisu. W przypadku, gdy chcesz uzyskać zatwierdzenia współpracownika, o wiele bezpieczniej jest pozostawić je tylko do odczytu i poprosić współpracownika, aby również uruchomił to polecenie, abyś mógł z nich skorzystać.
Powiązane stycznie: na temat serwerów jednorazowych, jeśli chcesz tymczasowo udostępnić kilka plików statycznych przez HTTP: python -m SimpleHTTPServer