67
votes

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?

18
  • 4
    GitHub Enterprise runs on the internal network. enterprise.github.com
    – user1249
    Jan 9, 2012 at 4:20
  • 5
    redmine.org
    – sylvanaar
    Jan 9, 2012 at 6:26
  • 4
    @sylvanaar To my knowledge redmine does not provide repository management capabilities, only repository browsing. Jan 9, 2012 at 11:57
  • 3
    gitlabhq.com is the closest I've seen to GitHub Aug 5, 2012 at 17:45
  • 8
    I vote to reopen. This is a hugely popular question. Why close it? Can we at least migrate it to someplace else? Jun 18, 2013 at 23:08

7 Answers 7

30
votes
+50

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

2
  • 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 project. It's hosted in fossil, if you want a look at the web interface on a project besides fossil itself. Jan 17, 2012 at 14:38
  • 1
    Fossil is absolutely awesome. It's rarely what I use, but it's the truth.
    – haylem
    Jun 13, 2012 at 17:14
16
votes

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

2
8
votes

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.

2
  • 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. Jan 14, 2012 at 10:21
  • Update: Redmine also uses up-to-date Rails versions (if you mean Rails 3) as of Redmine 2. Aug 19, 2012 at 17:54
7
votes

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.

6
votes

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.

2
votes

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.

2
  • 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 6, 2012 at 4: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, 2012 at 12:24
2
votes

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.

0

Not the answer you're looking for? Browse other questions tagged or ask your own question.