Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
4  
GitHub Enterprise runs on the internal network. enterprise.github.com –  user1249 Jan 9 '12 at 4:20
5  
redmine.org –  sylvanaar Jan 9 '12 at 6:26
4  
@sylvanaar To my knowledge redmine does not provide repository management capabilities, only repository browsing. –  Ryan Taylor Jan 9 '12 at 11:57
3  
gitlabhq.com is the closest I've seen to GitHub –  Andrew Finnell Aug 5 '12 at 17:45
7  
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
show 13 more comments

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

closed as not constructive by gnat, Martijn Pieters, Glenn Nelson, MichaelT, Mike Brown Feb 25 '13 at 17:54

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

7 Answers

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

share|improve this answer
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. –  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
    
I didn't use it myself, but I was scared away after reading sheddingbikes.com/posts/1306005291.html –  Arne Jan 31 '13 at 14:13
add comment

Gitorious is open source and you can install it on your own server (it's not very easy to install, though) it will soon have private repositories. It does not have Wiki and issues.

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

share|improve this answer
    
installation process of Gitorious has been simplified. You can either use the install script (getgitorious.com/installer) or go for the ready to run virtualbox image (getgitorious.co/install-gitorious) –  Peter Butkovic Sep 10 '13 at 8:38
add comment

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.

share|improve this answer
    
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
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
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. –  R0MANARMY Aug 6 '12 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 '12 at 12:24
add comment

Consider using GitLab http://gitlab.org/ 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 co-founder of GitLab.com

share|improve this answer
1  
would you mind explaining about this in more detail - how and why does it answer the question asked? "Link-only answers" are not quite welcome at Stack Exchange –  gnat Feb 24 '13 at 21:10
add comment

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