Jestem od dawna użytkownikiem Subversion, który chce wypróbować Git. Przeczytałem o tym trochę i rozumiem rozproszoną naturę - widzę wiele korzyści.
Jednak podoba mi się pomysł centralnego serwera, który może pełnić rolę kopii zapasowych, systemu rejestrowania itp., Jednocześnie nadal używając Git do lokalnego tworzenia oddziałów i udostępniania. Nie robię projektu typu open source, więc nie mogę korzystać z Github (bez płacenia), więc moje pytanie naprawdę brzmi: jaki jest najlepszy sposób prowadzenia lokalnego serwera git?
Zdaję sobie sprawę, że może to być niezgodne ze standardowym wzorcem użytkowania Git, ale przyda się w moim projekcie. Wszelkie obawy, które mogłem przeoczyć, są jednak zawsze mile widziane.
Dzięki!
Odpowiedzi:
Możesz po prostu skonfigurować serwer ssh i uruchomić tam centralne repozytorium. Wszyscy programiści po prostu zgadzają się (zgodnie z zasadami), aby wypychać na serwer, gdy skończą, zatwierdzać. To jest wzór użytkowania w moim miejscu pracy. Bardzo CVS i SVN.
/var/gitroot
na przykład).mkdir project.git && cd project.git && git init --bare --shared=group
).git clone ssh://yourserver.com/var/gitroot/project.git && cd project
)git add README
)git commit -m "Initial import"
),git push origin master
)To powinno skonfigurować wszystko dla ciebie.
źródło
git init --bare project.git
?Gitorious to interfejs sieciowy typu open source do git, który można uruchomić na własnym serwerze, podobnie jak github:
http://getgitorious.com/
Aktualizacja:
http://gitlab.org/ jest teraz kolejną alternatywą.
Aktualizacja 2:
Gitorious dołączył teraz do GitLab
źródło
Wypróbuj GitLab
Najlepsze narzędzie git GUI, jakiego kiedykolwiek używałem. Jest bardzo podobny do GitHub.
Jest to oprogramowanie typu open source (licencja MIT) i jest najczęściej instalowanym oprogramowaniem do zarządzania git z ponad 25 000 instalacji. Ma comiesięczne wydania i aktywną społeczność z ponad 375 współpracownikami. Możesz mieć nieograniczoną liczbę prywatnych, wewnętrznych i publicznych repozytoriów na własnym serwerze. Jest to aplikacja Ruby on Rails, która działa na większości platform uniksowych.
źródło
Jeśli nie przeszkadza ci korzystanie z wiersza poleceń, gitolite to absolutna przyjemność podczas pracy w środowisku korporacyjnym, w którym musisz ustawić różne prawa dostępu do różnych repozytoriów. To rodzaj nowszej wersji gitosis wspomnianej przez @Chris.
Oto podsumowanie ze strony autora:
Ma dość obszerny zestaw funkcji, ale jedną rzeczą, którą bardzo lubię, jest to, że codzienna edycja konfiguracji odbywa się za pośrednictwem specjalnego repozytorium git. Oznacza to, że dodanie użytkownika jest po prostu
A kiedy trzeba patrzeć na kod przez przeglądarkę, gitolite obsługuje konfigurację „synchronizującą” z gitweb. Lub jeśli lubisz cgit , który jest bardzo dobrym frontendem dla gita napisanym w C, lepiej, powinieneś spojrzeć na to jak to zrobić .
źródło
Możesz rozważyć Gitblit , zintegrowany , otwarty serwer Java Git, przeglądarkę i menedżer repozytorium typu open source dla małych grup roboczych.
źródło
Bare Bones Browser
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:
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?
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ć: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 serve
tak:git serve
. „Gotowy na dudnienie”, poinformuje. Git jest kiepski.git fetch git://192.168.1.123/
”Możesz też powiedzieć Jane, żeby
git clone git://192.168.1.123/ local-repo-name
nie miała jeszcze klonu repozytorium. Lub użyj,git pull git://192.168.1.123/ branchname
aby 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
źródło
Jeśli potrzebujesz dobrego, łatwego serwera GIT, musisz wypróbować GitBlit. Używam również gitolite, ale to tylko serwer, dzięki GitBlit dostajesz wszystko w jednym, serwer, administrator, repozytorium. kierownik ... URL: http://gitblit.com/
źródło
https://rhodecode.com to aplikacja internetowa typu open source dla Git & Mercurial, którą można bardzo łatwo zainstalować w dowolnym systemie operacyjnym (dołączony jest instalator).
RhodeCode (nowa wersja nazywa się RhodeCode Enterprise) dodaje brakujące funkcje Git, takie jak przegląd kodu, i ogólnie mówiąc, jest bardzo szybki i niezawodny.
źródło
Możesz również zainstalować Indefero , jest to klon GoogleCode GPL, ponieważ obsługuje zarówno Subversion, jak i Git, możesz mieć płynne przejście. Jestem autorem Indefero.
źródło
Możesz nawet zainstalować GitHub na lokalnym serwerze (ale nie za darmo):
https://enterprise.github.com/
źródło
Może nie jest to najczęstsza konfiguracja serwera git, ale grając z różnymi układami, narzędziami, kopiami lustrzanymi i schematami uprawnień, powiedziałbym, że jedną całkiem solidną alternatywą dla korporacyjnych repozytoriów jest Gerrit , co może wydawać się zaskakujące, ponieważ jest bardziej znane jako narzędzie do przeglądu kodu. Zaczęliśmy używać go do przeglądania kodu i powoli stał się naszym głównym repozytorium, tracąc wartość g3 / gitolite
Ponadto jest używany w dużych projektach (np. Android, Chrome), więc skaluje się i jest teraz dość solidny. Po prostu daj swoim użytkownikom uprawnienia PUSH, jeśli chcesz pozwolić na ominięcie części przeglądu kodu.
źródło
Do zdalnego hostingu Jak inni powiedzieli bitbucket.org oferuje bezpłatne prywatne repozytoria, korzystam z niego bez problemów.
Dla sieci lokalnej lub LAN dodam ten jeden scm-manager.org (Pojedynczy plik wykonywalny, jest naprawdę prosty do zainstalowania, jest napisany na Javie, aby mógł działać w systemie Linux lub Windows). Na wszelki wypadek są to domyślne hasła.
źródło
W międzyczasie serwis hostingowy Mercurial Bitbucket zaczął także oferować repozytoria Git.
Więc jeśli nie potrzebujesz lokalnego serwera, tylko jakieś centralne miejsce, w którym możesz bezpłatnie hostować prywatne repozytoria Git, IMO Bitbucket jest najlepszym wyborem.
Bezpłatnie otrzymujesz nieograniczone prywatne i publiczne repozytoria Git i Mercurial.
Jedynym ograniczeniem jest to, że w bezpłatnym abonamencie nie więcej niż pięciu użytkowników może uzyskać dostęp do twoich prywatnych repozytoriów (aby uzyskać więcej, musisz zapłacić).
Zobacz https://bitbucket.org/plans aby uzyskać więcej informacji!
źródło
Jeśli chcesz żądań pociągane są otwarte projekty źródłowe RhodeCode i GitLab i zapłacił Stash
źródło
Jeśli chcesz, aby twoje repozytorium było w centralnym miejscu, jest to dość łatwe dzięki rozproszonej kontroli wersji, takiej jak Git:
Możesz po prostu umieścić swoje centralne repozytorium w jakimś współdzielonym folderze na centralnej maszynie i każdy może go sklonować.
Jeśli chcesz mieć „prawdziwą” witrynę na swoim lokalnym serwerze, znam witrynę hostingową Git http://repo.or.cz .
Wygląda na to, że ma mniej funkcji niż GitHub, ale w przeciwieństwie do GitHub, możesz pobrać kod źródłowy i hostować go na własnym serwerze lokalnym.
Oświadczenie: Czytałem tylko o repo.or.cz, sam nigdy tego nie próbowałem!
źródło
w przypadku prostych konfiguracji można zapewnić dostęp ssh do serwera centralnego i skonfigurować katalog roboczy każdego użytkownika, aby wypychał / pobierał z tego „źródła”. To byłaby najprostsza i najczęstsza konfiguracja dla małych zespołów.
Możesz także zajrzeć do gitosis, który daje serwer http i możliwość zdalnego zarządzania nim. W ten sposób nie musisz udzielać dostępu ssh i wszystko, co pociąga za sobą każdego z osób odpowiedzialnych.
źródło
Aby dodać do tego, co powiedział Chris, możesz użyć gitosis (http://eagain.net/gitweb/?p=gitosis.git), aby kontrolować, kto faktycznie może uzyskać dostęp do repozytorium.
W zależności od użycia możesz także użyć hooków (w folderze .git / hooks), aby kod był automatycznie wciągany do systemu plików serwera po wypchnięciu z komputera lokalnego. Oto popularny skrypt: http://utsl.gen.nz/git/post-update . Nie będzie to jednak konieczne we wszystkich przypadkach.
źródło
http://repo.or.cz , podczas gdy dość dobra tendencja do problemów z niektórymi użytkownikami.
Jeśli jesteś jednym z nich, zalecamy wypróbowanie http://unfuddle.com, ponieważ pochodzisz z subwersji.
Sprawdź „ The 30 Second Tour ”: http://unfuddle.com/about/tour/plans
źródło
http://code.google.com/p/luna-tool/ to aplikacja Scala, która implementuje większość potrzebnych mi części github
źródło