web-dev-qa-db-fra.com

Existe-t-il des alternatives open source à Bitbucket, Github, Kiln et à des outils similaires de navigation et de gestion DVCS?

Je connais plusieurs outils/services qui permettent la navigation et la gestion DVCS tels que Bitbucket , Github , Kiln , SCM-Manager et Rhodecode .

Cependant, le cas d'utilisation que je considère est l'un de ceux qui:

  1. Tout code source doit résider sur les serveurs internes d'un employeur.
  2. La solution doit être open source.
  3. Il devrait fournir une expérience similaire à Bitbucket ou Github, y compris un wiki de projet, la navigation et la gestion du référentiel et des aspects de codage social tels que la révision de code.
  4. La solution doit avoir un support Mercurial (sinon un support pour d'autres DVCS).

Parmi ceux-ci, seuls SCM-Manager et RhodeCode se rapprochent car ils peuvent être installés sur vos propres serveurs et sont open source. Cependant, ils n'ont pas l'expérience Bitbucket ou Github. Il n'y a pas de tracker de problème ou de wiki et l'interface utilisateur, bien que fonctionnelle, n'est pas à la hauteur de Github ou Bitbucket.

Je peux me rapprocher de Trac ou Redmine avec leurs navigateurs de référentiel mais malheureusement ils n'ont pas de capacités de gestion de référentiel.

Existe-t-il d'autres outils open source qui fourniraient une expérience similaire à Bitbucket, Github ou Kiln?

68
Ryan Taylor

Je voudrais jetez un œil à Fossil. C'est le système que les développeurs de sqlite utilisent, en interne, apparemment. Il utilise également sqlite, qui est une bonne technologie solide ... qui est agréable et portable - ainsi que simple et fiable.

Il a une bonne interface utilisateur si austère (qui, je pense, correspond à la nature d'un objectif axé sur la productivité tel que vous le décrivez). ((Assurez-vous de vérifier le thème "gris". Il est beaucoup moins "router-admin" que le "thème" par défaut, si vous pouvez l'appeler ainsi.)) J'ai été attiré par lui en raison de ses racines en tant que CGI système basé, parce que je suis un surgeon pour CGI. Les résultats de cet héritage sont en fait très intéressants, car ce système a un mode JSON-ONLY très unique qui a toutes sortes de possibilités d'implémentation intéressantes.

Ils le mentionnent - mais il vaut la peine de répéter qu'il a 0 dépendances. Pas de php, pas de mySQL, pas de python. Nada. C'est son propre exécutable binaire - et il fonctionne sur de nombreuses plateformes. Je souhaite plus de projets "pensés" de la même manière.

Je ne suis pas affilié à eux, alors je citerai simplement leur page d'ouverture les extolations , qui, généralement, je suis d'accord avec .. jetez également un œil à questions et critiques ..

Suivi des bogues et Wiki - En plus de contrôler la version distribuée comme Git et Mercurial, Fossil prend également en charge le suivi des bogues distribué, le wiki distribué et un mécanisme de blog distribué, le tout dans un seul package intégré.

Interface Web - Fossil possède une interface Web intégrée et facile à utiliser qui simplifie le suivi des projets et favorise la connaissance de la situation. Tapez simplement "Fossil ui" depuis n'importe quelle caisse et Fossil ouvre automatiquement votre navigateur Web dans une page qui donne un historique graphique détaillé et des informations sur l'état de ce projet.

Autosync - Fossil prend en charge le mode "autosync" qui aide à faire avancer les projets en réduisant la quantité de fourches inutiles et de fusions souvent associées aux projets distribués.

Autonome - Fossil est un exécutable autonome unique qui contient tout le nécessaire pour gérer la configuration. L'installation est simple: téléchargez simplement un binaire précompilé pour Linux, Mac ou Windows et placez-le sur votre $ PATH. Le code source facile à compiler est disponible pour les utilisateurs sur d'autres plateformes. Les sources fossiles sont également pour la plupart autonomes, ne nécessitant que la bibliothèque "zlib" et la bibliothèque C standard pour être construites.

Mise en réseau simple - Fossil utilise un ancien HTTP simple (avec prise en charge de proxy) pour toutes les communications réseau, ce qui signifie qu'il fonctionne très bien derrière des pare-feu restrictifs. Le protocole est efficace en bande passante au point que Fossil peut être utilisé confortablement sur une connexion Internet par ligne commutée.

CGI activé - Aucun serveur n'est requis pour utiliser Fossil. Mais un serveur facilite la collaboration. Fossil prend en charge trois configurations de serveur différentes mais simples. Le plus populaire est un script CGI à 2 lignes. C'est l'approche utilisée par les référentiels Fossil auto-hébergés.

Robuste et fiable - Fossil stocke le contenu en utilisant un format de fichier durable dans une base de données SQLite afin que les transactions soient atomiques même si elles sont interrompues par une panne de courant ou un crash système. De plus, les auto-vérifications automatiques vérifient que tous les aspects du référentiel sont cohérents avant chaque validation. En plus de trois ans de fonctionnement, aucun travail n'a été perdu après avoir été engagé dans un dépôt de fossiles.

Mise à jour: Au lieu de faire allusion à l'interface, voici un rapide coup d'oeil… Comme vous pouvez le voir, c'est vraiment simple .. Mais cela signifie aussi un nettoyage ardoise pour la personnalisation .. Juste une seule feuille de style et un système de modèles d'en-tête/pied de page/corps. Mieux vaut écrire une nouvelle que réécrire le livre de quelqu'un d'autre, l'OMI.

Fossil ui

31
alex gray

Gitorious est open source et vous pouvez l'installer sur votre propre serveur à l'aide de scripts fournis par l'édition de la communauté Gitorious (voir http://www.getgitorious.com/installer ). Gitorious prend désormais en charge les wikis et le suivi des problèmes. Il y a aussi un image Docker disponible pour le faire fonctionner rapidement.

Une autre option serait Gitlab qui est fondamentalement un clone de GitHub, pas aussi mature que gitorious mais il est en plein développement avec des versions mensuelles.

Vous pourriez également vouloir vérifier plus d'options ici

16
tbg

Vos contraintes sont assez spécifiques, mais je pense que vous pouvez obtenir les résultats que vous recherchez avec ChiliProject + plugins.

ChiliProject est un fork de Redmine qui utilise des versions mises à jour de Ruby/Rails. Il prend très bien en charge git et Mercurial, et réplique la fonctionnalité Github Issues qu'il semble que vous recherchez en analysant les messages de validation (c'est-à-dire refs 291 dans un commit lierait un commit au problème # 291).

Il existe également Redmine/ChiliProject plugins qui fournissent des fonctionnalités telles que la révision de code, la mise en évidence de la syntaxe et d'autres subtilités que Github, etc. fournissent qui pourraient ne pas être évidemment ou facilement disponibles chez les concurrents open source.

Il existe d'autres options, JIRA, etc., mais elles (à mon humble avis) ne fournissent pas la flexibilité ou la richesse de fonctionnalités que le fork ChiliProject de Redmine + la multitude de plugins disponibles fournissent. Il n'y a pas grand-chose que Github et/ou BitBucket font pour vous que ChiliProject (éventuellement avec des plugins disponibles gratuitement) ne peut pas faire; et la beauté est, si elle n'existe pas déjà, il est généralement assez trivial de la mettre en œuvre vous-même.

Si cela ressemble à plus que ce dont vous avez besoin ... Je ne l'ai pas encore essayé, mais GitLab semble également intéressant. .. il ne semble pas avoir l'extensibilité ou l'architecture de plugin de Redmine/Chili, mais si vous cherchez un clone open-source de Github avec la plupart des fonctionnalités de base (et vous n'avez pas besoin de prendre en charge plusieurs DVCS), il semble assez bon.

8
Jason Lewis

Allura http://sf.net/p/allura devrait convenir à la facture. C'est la plate-forme pour tous les nouveaux projets (ou mis à niveau) chez SourceForge et est open source. Il prend en charge Mercurial et les wikis, ainsi que de nombreux autres outils (Git, SVN, tracker de ticket, forums, etc.). Il n'a pas tout à fait "révision de code" mais prend en charge les demandes de forking et de fusion pour les dépôts Mercurial et Git.

Il est écrit en Python et utilise MongoDB et Solr pour le stockage des données.

Allura est également actuellement dans l'incubateur Apache: http://incubator.Apache.org/projects/allura.html

Je travaille pour SourceForge et contribue au développement d'Allura.

7
Dave Brondsema

Pour le même problème au travail, nous utilisons un écosystème composé de:

  • Redmine pour le suivi des problèmes
  • RhodeCode pour la gestion du référentiel
  • Jenkins pour une intégration et un déploiement continus (nous avons des tâches de déploiement et de mise à niveau auxquelles des autorisations peuvent être attribuées de manière granulaire, et vous obtenez la piste d'audit gratuitement)
  • Active Directory pour l'authentification (tout ce qui précède peut s'intégrer de manière transparente)

L'intégration DVCS dans Redmine s'est améliorée à pas de géant dans les versions ultérieures, j'ai mis à niveau il y a quelques semaines et je suis extrêmement heureux que la plupart des "pièges" soient partis.

J'exécute les serveurs Redmine et RhodeCode sur le même hôte car Redmine ne prend pas encore en charge les dépôts HG distants. Jenkins fonctionne sur plusieurs autres hôtes.

J'utilise un hook RhodeCode pour déclencher des pulls Mercurial dans Redmine. Je ne peux pas utiliser de hook pour les pulls Jenkins à cause de JENKINS-13717 , mais j'ai déjà envoyé un patch pour cela et je suppose qu'il sera accepté assez rapidement. En attendant, je viens d'interroger les dépôts HG toutes les quelques minutes.

Tout fonctionne sur Debian 6.0 sur le proxy inverse Nginx pour obtenir la terminaison SSL (tout cela n'est utilisé que sur SSL). Récemment, le package entier a été déplacé sur un cluster ProxMox pour virtualiser le tout avec d'excellents résultats jusqu'à présent. Dans le cas où vous ne connaissez pas le produit, vous devriez le regarder. C'est un de ces " je ne peux pas croire que cela existe et je ne le savais pas et OMG c'est open source aussi! " genre de produit. Nous exécutons ces services sur des conteneurs OpenVZ qui sont facilement migrés d'un hôte à un autre pour les réparations/mises à niveau matérielles. Sur le même cluster, nous exécutons également un tas de machines virtuelles KVM) pour les tests automatisés sur les plates-formes Windows.

Je suis extrêmement satisfait de cet écosystème. Cela a amélioré la capacité de notre équipe de développement/AQ à reproduire les problèmes et à suivre les changements de manière considérable. Juste quelques avertissements:

  • Si vous optez pour Rhodecode, ne le configurez pas sur SQLite. Utilisez MySQL ou un autre vrai SGBD. Ce n'est pas vraiment migrable après coup, et SQLite ne prend qu'une connexion à la fois, ce qui entraîne des verrous et des délais d'attente amusants (voir # 439 de RhodeCode ). Cela devient douloureux si Jenkins interroge le référentiel en continu car vous recevez des messages d'erreur de temps en temps (voir le commentaire ci-dessus sur le problème Jenkins).
  • Vous ne pouvez vraiment pas trop insister auprès de vos développeurs sur le fait que dans Mercurial, le nombre de commit "132" ne signifie rien pour tout le monde sur le réseau car ces nombres sont uniquement locaux . Lorsque vous parlez de changements dans les tickets Redmine, utilisez le numéro de révision local que vous pouvez obtenir à partir du navigateur de dépôt (qui est le même dans RhodeCode et Redmine, car ils s'exécutent sur la même machine) ou utilisez commit:abcd1234.

Je n'hésite pas à recommander cette configuration car j'en suis extrêmement satisfait. Si vous avez besoin d'aide pour configurer un service spécifique ou si vous souhaitez consulter mes fichiers de configuration, n'hésitez pas à demander.

6
GomoX

Pensez à utiliser GitLab https://about.gitlab.com/ car il répond à la plupart de vos besoins:

  1. Vous pouvez l'installer sur site
  2. Il est MIT expat sous licence
  3. Il a un wiki (soutenu par git), une navigation dans le référentiel, une gestion détaillée des accès (niveaux d'accès multiples, branches protégées, intégration LDAP, etc.) et a des demandes de fusion pour la révision du code et la discussion (y compris les commentaires de ligne)
  4. Il ne prend pas en charge Mercurial mais seulement git

Il dispose également d'un bon suivi des problèmes ou vous pouvez créer un lien vers un suivi des problèmes externe. Vous pouvez tester vos demandes de fusion avec GitLab CI si vous le souhaitez. GitLab a connu une croissance rapide et est utilisé par plus de 25 000 organisations.

Divulgation: je suis le PDG et co-fondateur de GitLab B.V.

2
Sytse Sijbrandij

Jetez un oeil à cydra: https://github.com/mensi/cydra il a un support pour

  • Subversion (HTTP)
  • Git (HTTP et SSH sur un port séparé)
  • Mercurial (HTTP)
  • Trac

Il fonctionne sur une approche basée sur un projet qui vous permet de créer un projet et de lui affecter plusieurs référentiels (au plus un référentiel SVN). L'authentification est basée sur des plugins individuels (nous l'avons intégré dans notre ldap).

Nous l'utilisons pour notre https://code.vis.ethz.ch plateforme de codage. Pour le moment, il n'y a pas de support pour la révision du code, mais il pourrait facilement être ajouté en tant que plugin.

Je ne peux pas poster de captures d'écran car je n'ai pas assez de réputation.

2
Pascal