Czy istnieją alternatywy open source dla Bitbucket, Github, Kiln i podobnych narzędzi do przeglądania i zarządzania DVCS? [Zamknięte]

68

Wiem o kilku narzędziach / usługach zapewniających przeglądanie DVCS i zarządzanie nimi, takich jak Bitbucket , Github , Kiln , SCM-Manager i Rhodecode .

Jednak rozważany przeze mnie przypadek użycia jest taki, że:

  1. Każdy kod źródłowy musi znajdować się na wewnętrznych serwerach pracodawcy.
  2. Rozwiązanie musi być typu open source.
  3. Powinien zapewniać doświadczenie podobne do Bitbucket lub Github, w tym wiki projektu, przeglądanie repozytorium i zarządzanie nim oraz aspekty kodowania społecznego, takie jak przegląd kodu.
  4. Rozwiązanie powinno mieć wsparcie rtęciowe (jeśli nie wsparcie dla innych DVCS).

Spośród nich tylko SCM-Manager i RhodeCode są blisko, ponieważ można je zainstalować na własnych serwerach i są oprogramowaniem typu open source. Jednak nie mają doświadczenia w Bitbucket ani Github. Nie ma trackera problemów ani wiki, a interfejs użytkownika, choć funkcjonalny, nie jest na równi z Githubem lub Bitbucket.

Mogę zbliżyć się do Traca lub Redmine za pomocą przeglądarek repozytoriów, ale niestety nie mają one żadnych możliwości zarządzania repozytoriami.

Czy istnieją inne narzędzia typu open source, które zapewniłyby podobne wrażenia jak Bitbucket, Github lub Kiln?

Ryan Taylor
źródło
4
GitHub Enterprise działa w sieci wewnętrznej. enterprise.github.com
5
redmine.org
sylvanaar
4
@sylvanaar Według mojej wiedzy redmine nie zapewnia możliwości zarządzania repozytoriami, tylko przeglądanie repozytoriów.
Ryan Taylor
3
gitlabhq.com jest najbliżej GitHub
Andrew T Finnell,
8
Głosuję za ponownym otwarciem. To bardzo popularne pytanie. Po co to zamykać? Czy możemy przynajmniej przenieść go w inne miejsce?
William Leara

Odpowiedzi:

31

Chciałbym przyjrzeć kopalnych. Najwyraźniej jest to system, który twórcy sqlite używają wewnętrznie. To również używa SQLite, który jest solidne technologii ... że jest ładne i przenośny - a także prosty i niezawodny.

Ma dobry, choć surowy interfejs użytkownika (który moim zdaniem zachowuje charakter celu zorientowanego na produktywność, takiego jak opisujesz). ((Pamiętaj, aby sprawdzić „szary” motyw. Jest to o wiele mniej „router-admin” niż domyślny „motyw”, jeśli można to tak nazwać.)) Przyciągnęło mnie to ze względu na jego korzenie jako CGI oparty na systemie, bo jestem frajerem CGI. Rezultaty tego dziedzictwa są w rzeczywistości bardzo interesujące, ponieważ ten system ma bardzo unikalny tryb JSON-ONLY, który ma wiele interesujących możliwości implementacji.

Wspominają o tym - ale warto powtórzyć, że ma 0 zależności. Bez php, bez mySQL, bez pythona. Nada. Jest to binarny plik wykonywalny - i działa na wielu platformach. Chciałbym, żeby więcej projektów „myślało” w ten sam sposób.

Nie jestem z nimi związany, więc po prostu zacytuję ich fragmenty strony początkowej , z którymi ogólnie się zgadzam .. również przyjrzyj się pytaniom i krytykom ..

Śledzenie błędów i Wiki - oprócz wykonywania rozproszonej kontroli wersji, takiej jak Git i Mercurial, Fossil obsługuje również rozproszone śledzenie błędów, rozproszone wiki i mechanizm rozproszonego blogu w jednym zintegrowanym pakiecie.

Interfejs sieciowy - Fossil ma wbudowany i łatwy w użyciu interfejs sieciowy, który upraszcza śledzenie projektu i promuje świadomość sytuacyjną. Wystarczy wpisać „fossil ui” z dowolnego kasy, a Fossil automatycznie otworzy przeglądarkę internetową na stronie, która zawiera szczegółową graficzną historię i informacje o stanie tego projektu.

Autosync - Fossil obsługuje tryb „autosync”, który pomaga realizować projekty, zmniejszając liczbę niepotrzebnych rozwidleń i łączenia często związanych z projektami rozproszonymi.

Samowystarczalny - Fossil to pojedynczy autonomiczny plik wykonywalny, który zawiera wszystko, co jest potrzebne do zarządzania konfiguracją. Instalacja jest trywialna: wystarczy pobrać prekompilowany plik binarny dla systemu Linux, Mac lub Windows i umieścić go na $ PATH. Łatwy do skompilowania kod źródłowy jest dostępny dla użytkowników na innych platformach. Źródła kopalne są również w większości samowystarczalne, do zbudowania wymagana jest tylko biblioteka „zlib” i standardowa biblioteka C.

Proste połączenie sieciowe - Fossil używa zwykłego starego protokołu HTTP (z obsługą proxy) do całej komunikacji sieciowej, co oznacza, że ​​działa dobrze zza ograniczających zapór ogniowych. Protokół jest efektywny pod względem przepustowości do tego stopnia, że ​​Fossil może być wygodnie używany przez modemowe połączenie internetowe.

Włączone CGI - do korzystania ze skamielin nie jest wymagany serwer. Ale serwer ułatwia współpracę. Fossil obsługuje trzy różne, ale proste konfiguracje serwerów. Najpopularniejszy jest 2-liniowy skrypt CGI. Jest to podejście stosowane przez samonośne repozytoria kopalne.

Solidny i niezawodny - Fossil przechowuje zawartość przy użyciu trwałego formatu pliku w bazie danych SQLite, dzięki czemu transakcje są atomowe, nawet jeśli zostaną przerwane przez utratę zasilania lub awarię systemu. Ponadto automatyczne kontrole weryfikują, czy wszystkie aspekty repozytorium są spójne przed każdym zatwierdzeniem. W ciągu ponad trzech lat działalności nigdy nie stracono żadnej pracy po oddaniu do repozytorium Fossil.

Aktualizacja: Zamiast nawiązywać do interfejsu, oto jego krótka prezentacja… Jak widać, jest to zdecydowanie proste… Ale to także oznacza czystą tablicę do dostosowywania. Tylko pojedynczy arkusz stylów i nagłówek / stopka / typ nadwozia system szablonów. Lepiej napisać krótką historię niż przepisać czyjąś książkę, IMO.

interfejs użytkownika kopalnego

Alex Grey
źródło
3
+1 za skamieliny. Używałem go szeroko tutaj w pracy, a jedynym „minusem”, jaki widziałem, jest strefa, do której pasuje żółw (git / hg / svn). Istnieje jednak projekt winfossil . Jest przechowywany w skamielinach, jeśli chcesz spojrzeć na interfejs sieciowy projektu oprócz samej skamieliny.
Spencer Rathbun,
1
Fossil jest absolutnie niesamowity. Rzadko używam tego, ale to prawda.
haylem
16

Gitorious jest oprogramowaniem typu open source i można go zainstalować na własnym serwerze za pomocą skryptów dostarczonych przez Gitorious Community Edition (patrz http://www.getgitorious.com/installer ). Gitorious ma teraz wsparcie dla stron wiki i śledzenia problemów. Dostępny jest również obraz Dockera, który umożliwia szybkie uruchomienie.

Inną opcją byłby Gitlab, który jest zasadniczo klonem GitHub, nie tak dojrzałym jak genialny, ale jest w trakcie intensywnego rozwoju z comiesięcznymi wydaniami.

Możesz także sprawdzić więcej opcji tutaj

tbg
źródło
proces instalacji Gitorious został uproszczony. Możesz albo użyć skryptu instalacyjnego ( getgitorious.com/installer ), albo przejść do gotowego do uruchomienia obrazu virtualbox ( getgitorious.co/install-gitorious )
Peter Butkovic,
Kod można znaleźć na stronie gitorious.org/gitorious/mainline
The Demz
8

Twoje ograniczenia są dość specyficzne, ale myślę, że możesz uzyskać pożądane wyniki dzięki wtyczkom ChiliProject +.

ChiliProject to rozwidlenie Redmine, które wykorzystuje zaktualizowane wersje Ruby / Rails. Obsługuje git i mercurial bardzo dobrze i replikuje funkcjonalność Github Issues, wygląda na to, że szukasz, analizując komunikaty zatwierdzenia (tzn. refs 291W zatwierdzeniu łączyłoby zatwierdzenie z wydaniem # 291).

Istnieją również wtyczki Redmine / ChiliProject, które zapewniają takie funkcje, jak przegląd kodu, podświetlanie składni i inne drobiazgi oferowane przez Github itp., Które mogą nie być oczywiście lub łatwo dostępne dla konkurentów typu open source.

Istnieją inne opcje, JIRA itp., Ale nie zapewniają one (IMHO) elastyczności ani bogactwa funkcji, które zapewnia widelec ChiliProject firmy Redmine + wiele dostępnych wtyczek. Github i / lub BitBucket niewiele dla ciebie robią, czego ChiliProject (prawdopodobnie z darmowymi wtyczkami) nie może zrobić; a piękno polega na tym, że jeśli jeszcze nie istnieje, to samemu dość łatwo go wdrożyć.

Jeśli brzmi to bardziej, niż potrzebujesz ... Nie próbowałem tego jeszcze, ale GitLab również wygląda interesująco ... nie wydaje się, że ma rozszerzalność lub architekturę wtyczek Redmine / Chili, ale jeśli szukasz dla otwartego klona Githuba z większością podstawowych zestawów funkcji (i nie trzeba obsługiwać wielu DVCS), wygląda całkiem nieźle.

Jason Lewis
źródło
Ponadto, jeśli potrzebujesz internetowych narzędzi do zarządzania kontrolą źródła ... Z powodzeniem korzystałem z Gitosis z Redmine / ChiliProject ... nie jestem pewien, czy jest to odpowiednik Mercurial, ale dodanie go powinno być dość trywialne.
Jason Lewis
Aktualizacja: Redmine używa również aktualnych wersji Railsów (jeśli masz na myśli Railsy 3) od Redmine 2.
alternatywny
7

Allura http://sf.net/p/allura powinna pasować do rachunku. Jest to platforma dla wszystkich nowych (lub uaktualnionych) projektów w SourceForge i jest open source. Obsługuje Mercurial i wiki oraz wiele innych narzędzi (Git, SVN, tracker biletów, fora itp.). Nie ma „przeglądu kodu”, ale obsługuje rozwidlanie i scalanie żądań repozytoriów Mercurial i Git.

Jest napisany w Pythonie i używa MongoDB i Solr do przechowywania danych.

Allura jest obecnie również w inkubatorze Apache: http://incubator.apache.org/projects/allura.html

Pracuję dla SourceForge i pomagam rozwijać Allura.

Dave Brondsema
źródło
6

Do tego samego problemu w pracy używamy ekosystemu złożonego z:

  • Redmine do śledzenia problemów
  • RhodeCode do zarządzania repozytorium
  • Jenkins do ciągłej integracji i wdrażania (mamy zadania do wdrażania i aktualizacji, którym można przypisać uprawnienia w sposób szczegółowy, a Ty dostajesz ścieżkę audytu za darmo)
  • Active Directory do uwierzytelniania (wszystkie powyższe można bez problemu zintegrować z nim)

Integracja DVCS z Redmine poprawiła się skokowo w późniejszych wersjach, zaktualizowałem kilka tygodni temu i jestem niezmiernie zadowolony, że większość „gotchas” zniknęła.

Pracuję na serwerach Redmine i RhodeCode na tym samym hoście, ponieważ Redmine nie obsługuje jeszcze zdalnych repozytoriów HG. Jenkins działa na kilku innych hostach.

Używam haka RhodeCode, aby wywoływać rtęciowe ściągnięcia w Redmine. Nie mogę użyć haka do ściągania Jenkinsa z powodu JENKINS-13717 , ale już przesłałem łatkę i myślę, że zostanie zaakceptowana dość szybko. W międzyczasie po prostu sonduję repozytoria HG co kilka minut.

Wszystko działa w systemie Debian 6.0 przez odwrotne proxy Nginx, aby uzyskać zakończenie SSL (wszystko to jest używane tylko przez SSL). Ostatnio cały pakiet został przeniesiony do klastra ProxMox w celu wirtualizacji tego wszystkiego z jak dotąd doskonałymi wynikami. Jeśli nie znasz produktu, powinieneś na niego spojrzeć. Jest to jeden z tych produktów typu „ Nie mogę uwierzyć, że istnieje i nie wiedziałem o tym, a OMG to także oprogramowanie typu open source! ”. Obsługujemy te usługi w kontenerach OpenVZ, które można łatwo migrować z jednego hosta na drugi w celu naprawy / aktualizacji sprzętu. W tym samym klastrze uruchamiamy również kilka maszyn wirtualnych KVM do automatycznego testowania na platformach Windows.

Jestem bardzo zadowolony z tego ekosystemu. Poprawił zdolność naszego zespołu projektantów / QA do odtwarzania problemów i śledzenia zmian z ogromnym marginesem. Kilka ostrzeżeń:

  • Jeśli korzystasz z Rhodecode, nie konfiguruj go na SQLite. Użyj MySQL lub innego prawdziwego DBMS. Po migracji nie jest tak naprawdę możliwa migracja, a SQLite przyjmuje tylko 1 połączenie na raz, co powoduje zabawne blokady i przekroczenia limitu czasu (patrz RhodeCode nr 439 ). Staje się to bolesne, jeśli Jenkins stale przeszukuje repozytorium, gdy od czasu do czasu pojawiają się komunikaty o błędach (patrz komentarz powyżej na temat Jenkinsa).
  • Naprawdę nie możesz wystarczająco stresować swoich programistów, że w Mercurial, zatwierdzenie numeru „132” nic nie znaczy dla wszystkich innych w sieci, ponieważ te liczby są tylko lokalne . Mówiąc o zestawach zmian w biletach Redmine, użyj lokalnego numeru wersji, który możesz uzyskać z przeglądarki repo (która jest taka sama zarówno w RhodeCode, jak i Redmine, ponieważ działają na tej samej maszynie) lub użyj commit:abcd1234.

Nie waham się polecić tej konfiguracji, ponieważ jestem z niej bardzo zadowolony. Jeśli potrzebujesz pomocy w konfiguracji konkretnej usługi lub chcesz zajrzeć do moich plików konfiguracyjnych, zapytaj.

GomoX
źródło
2

Spójrz na cydra: https://github.com/mensi/cydra , które obsługuje

  • Subversion (HTTP)
  • Git (HTTP i SSH na osobnym porcie)
  • Mercurial (HTTP)
  • Trac

Działa w oparciu o podejście projektowe, które pozwala na utworzenie projektu i przypisanie do niego wielu repozytoriów (co najwyżej jednego repozytorium SVN). Autoryzacja oparta jest na poszczególnych wtyczkach (zintegrowaliśmy ją z naszym ldap).

Używamy go do naszej platformy kodowania https://code.vis.ethz.ch . W tej chwili nie ma obsługi przeglądania kodu, ale można go łatwo dodać jako wtyczkę.

Nie mogę publikować zrzutów ekranu, ponieważ nie mam wystarczającej reputacji.

Pascal
źródło
1
Wygląda na to, że projekt Cydra ledwie zaczął się kilka miesięcy temu i nie wydaje się, aby był bardzo aktywnie rozwijany. Może być nieco niedojrzały.
R0MANARMY,
Tak masz rację. Ale jeśli chcesz skonfigurować coś w rodzaju platformy hostingowej kodu, możesz samodzielnie dostosować wiele rzeczy, więc pomyślałem, że warto o tym wspomnieć.
Pascal,
2

Rozważ skorzystanie z GitLab https://about.gitlab.com/, ponieważ spełnia on większość twoich wymagań:

  1. Możesz zainstalować go lokalnie
  2. Jest to licencja MIT expat
  3. Ma wiki (wspierane przez git), przeglądanie repozytoriów, szczegółowe zarządzanie dostępem (poziomy dostępu, chronione gałęzie, integracja ldap itp.) Oraz scalanie wniosków o przegląd kodu i dyskusję (w tym komentarze do linii)
  4. Nie obsługuje rtęci, ale tylko git

Ma również dobre narzędzie do śledzenia problemów lub można połączyć się z zewnętrznym narzędziem do śledzenia problemów. Jeśli chcesz, możesz przetestować żądania scalenia za pomocą GitLab CI. GitLab rozwija się szybko i jest używany przez ponad 25 000 organizacji.

Ujawnienie: Jestem CEO i współzałożycielem GitLab BV

Sytse Sijbrandij
źródło