67

I am aware of several tools/services that provide DVCS browsing and management such as Bitbucket, Github, Kiln, SCM-Manager and Rhodecode.

However, the use case I am considering is one such that:

  1. Any source code must reside on an employers internal servers.
  2. The solution must be open source.
  3. It should provide a Bitbucket or Github like experience, including a project wiki, repository browsing and management, and social coding aspects such as code review.
  4. The solution should have mercurial support (if not support for other DVCSs).

Of these, only SCM-Manager and RhodeCode come close as they can be installed on your own servers and are open source. However they do not have the Bitbucket or Github experience. There is no issue tracker or wiki and the UI, while functional, is not up to par with Github or Bitbucket.

I can get close with Trac or Redmine with their repository browsers but unfortunately they do not have any repository management capabilities.

Are there other open source tools out there that would provide a similar experience to Bitbucket, Github or Kiln?

Ryan Taylor
  • 1,026
  • 1
  • 9
  • 14
  • 4
    GitHub Enterprise runs on the internal network. https://enterprise.github.com/ –  Jan 09 '12 at 04:20
  • 5
    http://www.redmine.org/ – sylvanaar Jan 09 '12 at 06:26
  • @Thorbjørn Ravn Andersen Github Enterprise does not meet two of my criteria: open source and mercurial support. – Ryan Taylor Jan 09 '12 at 11:56
  • 4
    @sylvanaar To my knowledge redmine does not provide repository management capabilities, only repository browsing. – Ryan Taylor Jan 09 '12 at 11:57
  • @Yannis Rizos JIRA is not open source and does not provide Mercurial browsing and management, missing two of my criteria. – Ryan Taylor Jan 09 '12 at 12:09
  • @RyanTailor, you assumed that Github could not be installed locally. It can. –  Jan 09 '12 at 12:21
  • @Thorbjørn Ravn Andersen, I am aware that Github can be installed locally with Github Enterprise. However, this is not an open source solution nor does it support Mercurial repositories. – Ryan Taylor Jan 09 '12 at 12:32
  • I have reworded the question to remove its polling aspect. Can this question be reopened. – Ryan Taylor Jan 09 '12 at 12:33
  • @RyanTaylor http://www.redmine.org/plugins/redmine_scm – sylvanaar Jan 09 '12 at 14:57
  • Open source or *Free* open source? – Ed James Jan 14 '12 at 10:59
  • "Of these, only SCM-Manager and RhodeCode come close". Well, Kiln meets criteria 1, 3 and 4, I'd say, so it's just as close. – MikMik Jan 19 '12 at 12:25
  • 3
    http://gitlabhq.com/ is the closest I've seen to GitHub – Andrew T Finnell Aug 05 '12 at 17:45
  • Worth noting that Mercurial has its own repository browser built in. – MattDavey Feb 25 '13 at 09:01
  • This feels like a poll. I know it's not the intent of the question, but that's the feeling I get from it. – Michael Brown Feb 25 '13 at 17:54
  • I vote to reopen. The question can be answered but has not yet been answered in a way that satisfies the criteria. I was/am looking for an open source repo manager that works with Mercurial and provides a similar experience to Github/Gitlab or Bitbucket. Most of the answers below are closed source or only work with Git. – Ryan Taylor Feb 25 '13 at 18:42
  • @MattDavey. I am looking for more the just repo browser. I want to enable easy repo creation, searching, and code review for Mercurial repositories similar to Github/Bitbucket. – Ryan Taylor Feb 25 '13 at 18:44
  • 8
    I vote to reopen. This is a hugely popular question. Why close it? Can we at least migrate it to someplace else? – William Leara Jun 18 '13 at 23:08
  • Bitbucket can manage private repositories for free – hellboy Oct 31 '13 at 13:58

7 Answers7

30

I would take a look at Fossil. It is the system the developers of sqlite use, internally, apparently. It also uses sqlite, which is a good solid technology... that is nice and portable - as well as simple and reliable.

It has a good, if austere user-interface (which i think behooves the nature of a productivity-oriented goal such as you describe). ((Be sure to check out the "grey" theme. It is way less "router-admin" than the default "theme", if you could call it that.)) I was drawn to it because of its roots as a CGI based system, cause I'm a sucker for CGI. The results of that heritage are actually very interesting, as this system has a very unique, JSON-ONLY mode which has all sorts of interesting implementation-possibilities..

They mention it - but it's worth repeating that it has 0 dependencies. No php, no mySQL, no python. Nada. It's its own binary executable - and it works on many platforms. I wish more projects "thought" the same way.

I am not affiliated with them, so will simply quote their opening page extolations, which generally, I agree with.. also take a look at questions & criticisms..

Bug Tracking And Wiki - In addition to doing distributed version control like Git and Mercurial, Fossil also supports distributed bug tracking, distributed wiki, and a distributed blog mechanism all in a single integrated package.

Web Interface - Fossil has a built-in and easy-to-use web interface that simplifies project tracking and promotes situational awareness. Simply type "fossil ui" from within any check-out and Fossil automatically opens your web browser in a page that gives detailed graphical history and status information on that project.

Autosync - Fossil supports "autosync" mode which helps to keep projects moving forward by reducing the amount of needless forking and merging often associated with distributed projects.

Self-Contained - Fossil is a single stand-alone executable that contains everything needed to do configuration management. Installation is trivial: simply download a precompiled binary for Linux, Mac, or Windows and put it on your $PATH. Easy-to-compile source code is available for users on other platforms. Fossil sources are also mostly self-contained, requiring only the "zlib" library and the standard C library to build.

Simple Networking - Fossil uses plain old HTTP (with proxy support) for all network communications, meaning that it works fine from behind restrictive firewalls. The protocol is bandwidth efficient to the point that Fossil can be used comfortably over a dial-up internet connection.

CGI Enabled - No server is required to use fossil. But a server does make collaboration easier. Fossil supports three different yet simple server configurations. The most popular is a 2-line CGI script. This is the approach used by the self-hosting fossil repositories.

Robust & Reliable - Fossil stores content using an enduring file format in an SQLite database so that transactions are atomic even if interrupted by a power loss or system crash. Furthermore, automatic self-checks verify that all aspects of the repository are consistent prior to each commit. In over three years of operation, no work has ever been lost after having been committed to a Fossil repository.

Update: Instead of alluding to the interface, here's a quick shot of it… As you can see, it's definitely simple.. But that also means a clean slate for customization.. Just a single stylesheet and a header/footer/body-type templating system. Better to write a short story than rewrite someone else's book, IMO.

fossil ui

alex gray
  • 715
  • 7
  • 9
  • 3
    +1 for fossil. I've used it extensively here at work, and the only "downside" I've seen is that zone which tortoise(git/hg/svn) fits into. However, there is the [winfossil](http://repository.mobile-developers.de/cgi-bin/ikoch/sharpfossil/index) project. It's hosted in fossil, if you want a look at the web interface on a project besides fossil itself. – Spencer Rathbun Jan 17 '12 at 14:38
  • 1
    Fossil is absolutely awesome. It's rarely what I use, but it's the truth. – haylem Jun 13 '12 at 17:14
16

Gitorious is open source and you can install it on your own server using scripts provided by the Gitorious community edition (see http://www.getgitorious.com/installer). Gitorious now has support for wikis and issue tracking. There is also a Docker image available for quickly getting it running.

Another option would be Gitlab which is basically a GitHub clone, not as mature as gitorious but it's under heavy development with monthly releases.

You might also want to check out more options here

muru
  • 142
  • 8
tbg
  • 161
  • 1
  • 2
  • installation process of Gitorious has been simplified. You can either use the install script (http://getgitorious.com/installer) or go for the ready to run virtualbox image (http://getgitorious.co/install-gitorious) – Peter Butkovic Sep 10 '13 at 08:38
  • The code is found at https://www.gitorious.org/gitorious/mainline – The Demz Apr 18 '14 at 08:47
8

Your constraints are pretty specific, but I think you can get the results you seek with ChiliProject + plugins.

ChiliProject is a fork of Redmine that uses updated versions of Ruby/Rails. It supports git and mercurial very well, and replicates the Github Issues functionality it looks like you're seeking by parsing commit messages (i.e., refs 291 in a commit would link a commit to issue #291).

There are also Redmine/ChiliProject plugins that provide facilities like code review, syntax highlighting, and other niceties that Github, etc. provide that might not be obviously or readily available in open-source competitors.

There are other options, JIRA, etc., but they (IMHO) don't provide the felxibility or wealth of functionality that the ChiliProject fork of Redmine + the multitude of available plugins provide. There's not much that Github and/or BitBucket do for you that ChiliProject (possibly with freely available plugins) can't do; and the beauty is, if it doesn't already exist, it's usually fairly trivial to implement it yourself.

If this sounds like more than you need... I haven't tried it yet, but GitLab also looks interesting... it doesn't seem to have the extensibility or plugin architecture of Redmine/Chili, but if you're looking for an open-source clone of Github with most of the core feature set (and you don't need to support multiple DVCSs), it looks pretty good.

Jason Lewis
  • 2,113
  • 13
  • 18
  • In addition, if you need web-based source control management tools... I've successfully used Gitosis with Redmine/ChiliProject... not sure of the equivalent for Mercurial, but it should be fairly trivial to add in. – Jason Lewis Jan 14 '12 at 10:21
  • Update: Redmine also uses up-to-date Rails versions (if you mean Rails 3) as of Redmine 2. – alternative Aug 19 '12 at 17:54
7

Allura http://sf.net/p/allura should fit the bill. It is the platform for all the new (or upgraded) projects at SourceForge and is open source. It supports Mercurial and wikis, plus many more tools (Git, SVN, ticket tracker, forums, etc). It doesn't quite have "code review" but does support forking and merge requests for Mercurial and Git repos.

It's written in Python and uses MongoDB and Solr for data storage.

Allura is also currently in the Apache Incubator: http://incubator.apache.org/projects/allura.html

I work for SourceForge and help develop Allura.

Dave Brondsema
  • 171
  • 1
  • 2
6

For the exact same issue at work we use an ecosystem composed of:

  • Redmine for issue tracking
  • RhodeCode for repository management
  • Jenkins for continuous integration and deployment (we have jobs for deployment and upgrade tasks that can be assigned permissions in a granular fashion, and you get the audit trail for free)
  • Active Directory for authentication (all of the above can integrate with it seamlessly)

The DVCS integration in Redmine has improved by leaps and bounds in the later releases, I upgraded a few weeks ago and I am extremely pleased that most of the "gotchas" are gone.

I run the Redmine and RhodeCode servers on the same host because Redmine doesn't support remote HG repos just yet. Jenkins runs on several other hosts.

I use a RhodeCode hook to trigger mercurial pulls in Redmine. I can't use a hook for Jenkins pulls because of JENKINS-13717, but I submitted a patch for this already and I guess it will be accepted pretty fast. In the meantime I just poll the HG repos every few minutes.

Everything runs on Debian 6.0 over Nginx reverse proxying to get SSL termination (all of this is only used over SSL). Recently the whole package was moved onto a ProxMox cluster to virtualize it all with great results so far. In case you don't know the product, you should take a look at it. It's one of those "I can't believe this exists and I didn't know about it and OMG it's open source too!" kind of product. We run these services on OpenVZ containers that are easily migrated from one host to another for hardware repairs/upgrades. On the same cluster we also run a a bunch of KVM virtual machines as well for automated testing on Windows platforms.

I am extremely happy with this ecosystem. It has improved our dev/QA team's ability to reproduce issues and track changes by a huge margin. Just a few warnings:

  • If you go with Rhodecode, don't set it up on SQLite. Use MySQL or another real DBMS. It's not really migrateable after the fact, and SQLite only takes 1 connection at a time, resulting in funny locks and timeouts (see RhodeCode's #439). This becomes painful if Jenkins is polling the repo continously as you get error messages once in a while (see comment above on Jenkins issue).
  • You really can't stress enough to your devs that in Mercurial, commit number "132" means nothing to everyone else on the network as those numbers are only local. When talking about changesets inside Redmine tickets, either use the local revision number that you can get from the repo browser (which is the same in both RhodeCode and Redmine, since they run on the same machine) or use commit:abcd1234.

I have no hesitations on recommending this setup as I am extremely happy with it. If you need help configuring a specific service or you want to get a look at my config files feel free to ask.

GomoX
  • 206
  • 2
  • 3
2

Take a look at cydra: https://github.com/mensi/cydra it has support for

  • Subversion (HTTP)
  • Git (HTTP and SSH on separate port)
  • Mercurial (HTTP)
  • Trac

It works on a project based approach which allows you to create a project and assign multiple repositories to it (at most one SVN repository). The auth is based on individual plugins (we integrated it into our ldap).

We use it for our https://code.vis.ethz.ch coding platform. At the moment there isn't any support for code review but it could easily be added as a plugin.

I can't post screenshots since I don't have enough reputation.

Pascal
  • 121
  • 5
  • 1
    Cydra project looks like it barely got started a few months ago and doesn't appear to be very actively developed. May be a bit immature to mention. – Roman Aug 06 '12 at 04:52
  • Yes, you are right. But then if you want to setup something like a code hosting platform you might want to customize a lot of stuff yourself.So I thought it was worth mentioning. – Pascal Aug 19 '12 at 12:24
2

Consider using GitLab https://about.gitlab.com/ since it meets most of your requirements:

  1. You can install it on-premises
  2. It is MIT expat licensed
  3. It has a wiki (backed by git), repository browsing, detailed access management (multiple accesses levels, protected branches, ldap integration, etc.) and has merge requests for code review and discussion (including line comments)
  4. It does not support mercurial but only git

It also has a good issue tracker or you can link to an external issue tracker. You can test your merge requests with GitLab CI if you want to. GitLab has been growing fast and is in use by more than 25.000 organizations.

Disclosure: I'm the CEO & co-founder of GitLab B.V.