Esistono alternative open source a Bitbucket, Github, Kiln e simili strumenti di navigazione e gestione DVCS? [chiuso]


68

Sono a conoscenza di numerosi strumenti / servizi che forniscono navigazione e gestione DVCS come Bitbucket , Github , Kiln , SCM-Manager e Rhodecode .

Tuttavia, il caso d'uso che sto prendendo in considerazione è uno di questi che:

  1. Qualsiasi codice sorgente deve risiedere sui server interni di un datore di lavoro.
  2. La soluzione deve essere open source.
  3. Dovrebbe fornire un'esperienza simile a Bitbucket o Github, incluso un wiki del progetto, la navigazione e la gestione del repository e aspetti di codifica sociale come la revisione del codice.
  4. La soluzione dovrebbe avere supporto mercuriale (se non supporto per altri DVCS).

Di questi, solo SCM-Manager e RhodeCode si avvicinano in quanto possono essere installati sui propri server e sono open source. Tuttavia non hanno l'esperienza Bitbucket o Github. Non vi è alcun problema tracker o wiki e l'interfaccia utente, sebbene funzionale, non è all'altezza di Github o Bitbucket.

Posso avvicinarmi a Trac o Redmine con i loro browser di repository ma sfortunatamente non hanno alcuna capacità di gestione dei repository.

Esistono altri strumenti open source che offrirebbero un'esperienza simile a Bitbucket, Github o Kiln?


4
GitHub Enterprise funziona sulla rete interna. enterprise.github.com


4
@sylvanaar Per quanto ne so, Redmine non fornisce funzionalità di gestione dei repository, ma solo la navigazione dei repository.
Ryan Taylor,

3
gitlabhq.com è il più vicino che abbia mai visto a GitHub
Andrew T Finnell il

8
Voto per riaprire. Questa è una domanda estremamente popolare. Perché chiuderlo Possiamo almeno migrarlo in un altro posto?
William Leara,

Risposte:


31

Vorrei dare un'occhiata a Fossil. È il sistema che gli sviluppatori di sqlite usano, apparentemente, internamente. Inoltre utilizza SQLite, che è una buona tecnologia solida ... che è bello e portatile - così come semplice e affidabile.

Ha un'interfaccia utente buona, seppur austera (che credo rispecchi la natura di un obiettivo orientato alla produttività come quello che descrivi). ((Assicurati di controllare il tema "grigio". È molto meno "router-admin" rispetto al "tema" predefinito, se potessi chiamarlo così.)) Sono stato attratto da esso a causa delle sue radici come CGI sistema basato, perché sono un succhiatore per CGI. I risultati di quell'eredità sono in realtà molto interessanti, poiché questo sistema ha una modalità SOLO JSON davvero unica che ha ogni sorta di interessanti possibilità di implementazione.

Lo menzionano, ma vale la pena ripetere che ha 0 dipendenze. No php, no mySQL, no python. Nada. È il suo eseguibile binario e funziona su molte piattaforme. Vorrei che più progetti "pensassero" allo stesso modo.

Non sono affiliato con loro, quindi citerò semplicemente le loro estenzioni della pagina iniziale , che in generale, sono d'accordo con .. anche dare un'occhiata a domande e critiche ..

Bug Tracking e Wiki - Oltre a eseguire il controllo della versione distribuita come Git e Mercurial, Fossil supporta anche il tracciamento dei bug distribuito, wiki distribuito e un meccanismo di blog distribuito tutto in un unico pacchetto integrato.

Interfaccia Web - Fossil ha un'interfaccia web integrata e facile da usare che semplifica il monitoraggio del progetto e promuove la consapevolezza della situazione. Digita "fossil ui" da qualsiasi check-out e Fossil apre automaticamente il tuo browser Web in una pagina che fornisce cronologia grafica dettagliata e informazioni sullo stato di quel progetto.

Sincronizzazione automatica: Fossil supporta la modalità "Sincronizzazione automatica" che aiuta a far andare avanti i progetti riducendo la quantità di biforcazioni e fusioni inutili spesso associate ai progetti distribuiti.

Autocontenuto: Fossil è un singolo eseguibile autonomo che contiene tutto il necessario per la gestione della configurazione. L'installazione è banale: basta scaricare un binario precompilato per Linux, Mac o Windows e metterlo sul tuo $ PATH. Il codice sorgente di facile compilazione è disponibile per gli utenti su altre piattaforme. Anche le fonti fossili sono per lo più autosufficienti, per la costruzione sono necessarie solo la libreria "zlib" e la libreria C standard.

Networking semplice: Fossil utilizza un semplice vecchio HTTP (con supporto proxy) per tutte le comunicazioni di rete, il che significa che funziona benissimo da dietro firewall restrittivi. Il protocollo è efficiente in termini di larghezza di banda al punto che Fossil può essere utilizzato comodamente tramite una connessione Internet dial-up.

Abilitato CGI: non è necessario alcun server per utilizzare i fossili. Ma un server semplifica la collaborazione. Fossil supporta tre configurazioni server diverse ma semplici. Il più popolare è uno script CGI a 2 righe. Questo è l'approccio utilizzato dai depositi fossili di auto-hosting.

Robusto e affidabile: Fossil archivia i contenuti utilizzando un formato di file duraturo in un database SQLite in modo che le transazioni siano atomiche anche se interrotte da un'interruzione di corrente o un arresto anomalo del sistema. Inoltre, gli autocontrolli automatici verificano che tutti gli aspetti del repository siano coerenti prima di ogni commit. In oltre tre anni di attività, nessun lavoro è mai stato perso dopo essere stato impegnato in un deposito di Fossili.

Aggiornamento: invece di alludere all'interfaccia, ecco una breve panoramica di esso ... Come puoi vedere, è sicuramente semplice .. Ma ciò significa anche una lavagna pulita per la personalizzazione .. Solo un singolo foglio di stile e un header / footer / body-type sistema di templating. Meglio scrivere un racconto che riscrivere il libro di qualcun altro, l'IMO.

UI fossile


3
+1 per fossili. L'ho usato ampiamente qui al lavoro, e l'unico "aspetto negativo" che ho visto è quella zona in cui si inserisce la tartaruga (git / hg / svn). Tuttavia, c'è il progetto winfossil . È ospitato in fossili, se vuoi dare un'occhiata all'interfaccia web su un progetto oltre al fossile stesso.
Spencer Rathbun,

1
Fossil è assolutamente fantastico. Raramente è quello che uso, ma è la verità.
Hayylem,

16

Gitorious è open source e puoi installarlo sul tuo server usando gli script forniti dalla Gitorious Community Edition (vedi http://www.getgitorious.com/installer ). Gitorious ora supporta i wiki e il rilevamento dei problemi. È disponibile anche un'immagine Docker per farla funzionare rapidamente.

Un'altra opzione sarebbe Gitlab che è fondamentalmente un clone di GitHub, non maturo come gitorious ma è in forte sviluppo con versioni mensili.

Potresti anche voler controllare più opzioni qui


il processo di installazione di Gitorious è stato semplificato. Puoi utilizzare lo script di installazione ( getgitorious.com/installer ) o scegliere l'immagine virtualbox pronta per l'esecuzione ( getgitorious.co/install-gitorious )
Peter Butkovic,


8

I tuoi vincoli sono piuttosto specifici, ma penso che puoi ottenere i risultati che cerchi con i plugin ChiliProject +.

ChiliProject è un fork di Redmine che utilizza versioni aggiornate di Ruby / Rails. Supporta molto bene git e mercurial e replica la funzionalità di Github Issues sembra che tu stia cercando analizzando i messaggi di commit (ovvero, refs 291in un commit collegherebbe un commit al numero # 291).

Ci sono anche plug -in Redmine / ChiliProject che forniscono servizi come revisione del codice, evidenziazione della sintassi e altre cose che Github, ecc. Forniscono che potrebbero non essere ovviamente o prontamente disponibili nei concorrenti open source.

Ci sono altre opzioni, JIRA, ecc., Ma (IMHO) non forniscono la felxibility o la ricchezza di funzionalità che il fork ChiliProject di Redmine + offre la moltitudine di plugin disponibili. Non c'è molto che Github e / o BitBucket fanno per te che ChiliProject (possibilmente con plugin disponibili gratuitamente) non può fare; e la bellezza è che, se non esiste già, di solito è abbastanza banale implementarla da soli.

Se questo suona più del necessario ... Non l'ho ancora provato, ma anche GitLab sembra interessante ... non sembra avere l'estensione o l'architettura del plugin di Redmine / Chili, ma se stai cercando per un clone open-source di Github con la maggior parte del set di funzionalità di base (e non è necessario supportare più DVCS), sembra piuttosto buono.


Inoltre, se hai bisogno di strumenti di gestione del controllo del codice sorgente basati sul web ... Ho usato con successo Gitosis con Redmine / ChiliProject ... non sono sicuro dell'equivalente di Mercurial, ma dovrebbe essere abbastanza banale aggiungerlo.
Jason Lewis

Aggiornamento: Redmine utilizza anche versioni aggiornate di Rails (se intendete Rails 3) a partire da Redmine 2.
alternativa

7

Allura http://sf.net/p/allura dovrebbe adattarsi al conto. È la piattaforma per tutti i nuovi (o aggiornati) progetti di SourceForge ed è open source. Supporta Mercurial e wiki, oltre a molti altri strumenti (Git, SVN, tracker biglietti, forum, ecc.). Non ha abbastanza "revisione del codice" ma supporta il fork e l'unione delle richieste per i repository Mercurial e Git.

È scritto in Python e utilizza MongoDB e Solr per l'archiviazione dei dati.

Allura è anche attualmente nell'incubatrice di Apache: http://incubator.apache.org/projects/allura.html

Lavoro per SourceForge e aiuto a sviluppare Allura.


6

Per lo stesso identico problema sul lavoro utilizziamo un ecosistema composto da:

  • Redmine per il rilevamento dei problemi
  • RhodeCode per la gestione dei repository
  • Jenkins per l'integrazione e la distribuzione continue (abbiamo lavori per la distribuzione e attività di aggiornamento che possono essere assegnate autorizzazioni in modo granulare e ottieni la pista di controllo gratuitamente)
  • Active Directory per l'autenticazione (tutto quanto sopra può integrarsi perfettamente con esso)

L'integrazione DVCS in Redmine è migliorata a passi da gigante nelle versioni successive, ho aggiornato qualche settimana fa e sono estremamente lieto che la maggior parte dei "gotchas" siano spariti.

Eseguo i server Redmine e RhodeCode sullo stesso host perché Redmine non supporta ancora i repository HG remoti. Jenkins gira su molti altri host.

Uso un hook RhodeCode per innescare pull mercuriali in Redmine. Non riesco a usare un hook per i pull di Jenkins a causa di JENKINS-13717 , ma ho già inviato una patch per questo e immagino che verrà accettato abbastanza velocemente. Nel frattempo eseguo semplicemente il polling dei repository HG ogni pochi minuti.

Tutto funziona su Debian 6.0 su proxy inverso Nginx per ottenere la terminazione SSL (tutto questo è usato solo su SSL). Recentemente l'intero pacchetto è stato spostato in un cluster ProxMox per virtualizzare tutto con risultati finora eccellenti . Se non conosci il prodotto, dovresti dare un'occhiata. È uno di quei tipi di prodotto " Non posso credere che esista e non lo sapevo e OMG è anche open source! ". Eseguiamo questi servizi su container OpenVZ che possono essere facilmente migrati da un host all'altro per riparazioni / aggiornamenti hardware. Sullo stesso cluster eseguiamo anche un sacco di macchine virtuali KVM e per test automatici su piattaforme Windows.

Sono estremamente contento di questo ecosistema. Ha migliorato la capacità del nostro team di sviluppo / controllo qualità di riprodurre i problemi e tenere traccia delle modifiche con un margine enorme. Solo alcuni avvertimenti:

  • Se vai con Rhodecode, non configurarlo su SQLite. Usa MySQL o un altro DBMS reale. In realtà non è migrabile dopo il fatto, e SQLite richiede solo 1 connessione alla volta, con conseguenti blocchi e timeout divertenti (vedi # 439 di RhodeCode ). Questo diventa doloroso se Jenkins esegue continuamente il polling del repository man mano che ricevi messaggi di errore di tanto in tanto (vedi il commento sopra sulla questione di Jenkins).
  • Non puoi davvero sottolineare abbastanza ai tuoi sviluppatori che in Mercurial, il numero di commit "132" non significa nulla per tutti gli altri sulla rete poiché quei numeri sono solo locali . Quando si parla di changeset all'interno dei ticket Redmine, utilizzare il numero di revisione locale che è possibile ottenere dal browser repo (che è lo stesso sia in RhodeCode che in Redmine, poiché funzionano sulla stessa macchina) o utilizzare commit:abcd1234.

Non esito a raccomandare questa configurazione poiché ne sono estremamente soddisfatto. Se hai bisogno di aiuto per configurare un servizio specifico o vuoi dare un'occhiata ai miei file di configurazione, non esitare a chiedere.


2

Dai un'occhiata a cydra: https://github.com/mensi/cydra per cui ha il supporto

  • Subversion (HTTP)
  • Git (HTTP e SSH su porta separata)
  • Mercurial (HTTP)
  • Trac

Funziona su un approccio basato sul progetto che consente di creare un progetto e assegnare più repository ad esso (al massimo un repository SVN). L'autorizzazione si basa su singoli plug-in (l'abbiamo integrato nel nostro ldap).

Lo usiamo per la nostra piattaforma di codifica https://code.vis.ethz.ch . Al momento non esiste alcun supporto per la revisione del codice, ma potrebbe essere facilmente aggiunto come plug-in.

Non riesco a pubblicare schermate poiché non ho abbastanza reputazione.


1
Sembra che il progetto Cydra sia appena iniziato alcuni mesi fa e non sembra essere sviluppato molto attivamente. Potrebbe essere un po 'immaturo da menzionare.
R0MANARMY il

Si hai ragione. Ma poi se vuoi configurare qualcosa come una piattaforma di hosting di codice, potresti voler personalizzare tu stesso un sacco di cose, quindi ho pensato che valesse la pena menzionarlo.
Pascal,

2

Prendi in considerazione l'utilizzo di GitLab https://about.gitlab.com/ poiché soddisfa la maggior parte delle tue esigenze:

  1. È possibile installarlo in locale
  2. È certificato MIT expat
  3. Ha un wiki (supportato da git), navigazione nel repository, gestione dettagliata degli accessi (livelli di accesso multipli, rami protetti, integrazione ldap, ecc.) E ha richieste di unione per la revisione e la discussione del codice (compresi i commenti di riga)
  4. Non supporta mercurial ma solo git

Ha anche un buon tracker di problemi oppure puoi collegarti a un tracker di problemi esterno. Puoi testare le tue richieste di unione con GitLab CI se vuoi. GitLab è cresciuto rapidamente ed è in uso da oltre 25.000 organizzazioni.

Disclosure: sono CEO e co-fondatore di GitLab BV

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.