What does HackerNews think of gitolite?
Hosting git repositories -- Gitolite allows you to setup git hosting on a central server, with very fine-grained access control and many (many!) more powerful features.
https://github.com/sitaramc/gitolite
I've not used it personally though, so no idea how well it works in practise.
Recently, I was searching for a Git - fork project (i.e. a project forked from git itself) which allowed separate machine based accounts for Git branches. It was quite famous, I had used it about 4 years back and I don't remember its name now.
Now, this is the worst case scenario for the search engines -
• 'git fork project' would bring numerous github forked projects.
• 'git original source' would bring the mirror of git in github, but then again there are hundreds of fork.
After, lot of time spent on this in vain, I gave up.
UPDATE: While writing this comment I remembered the USP of that project was 'Branch specific permissions', so I gave a fresh attempt at finding it and I did via SO! It's Gitolite[1].
If you prefer command-line usage, I'd recommend Gitolite [2]. It allows you to give people access to git and only git (as opposed to git's built-in system, which requires granting ssh shell access); and it only uses one OS-level user/group regardless of how many people it's managing.
Either of the above solutions are for your compsci professors who are clued-in enough to be comfortable with CLI in general and Git in particular.
If you're trying to give files to technically clueless humanities professors, I'd suggest only using Git privately, to develop your paper or whatever, then using a plain old email attachment, or hosting on an HTTP server, to submit the assignment. Or going really old-school by printing out an old-fashioned dead-tree hardcopy.
Of course, all of these solutions (except email attachments and printouts) require running your own server, which is actually a great learning experience. I'd recommend prgmr.com for hosting; their smallest plans should be able to fit even an undergrad's budget, and you have full root access to your (Xen VM) system, so you can do all kinds of fun and exotic experiments. It's not necessary for basic usage, but you can install any version of any Linux distro, use LVM, even use a custom-compiled kernel or FreeBSD (the only requirement is guest Xen patches). It's great because if you have problems, they give you access to an ssh-based out-of-band console, rebooter, and rescue image so you can fix them yourself. (By contrast, many other hosts require you to make changes through some half-baked web UI that lacks half the tools you need, require you to install only approved distros and only do OS upgrades on an approved schedule, and require you to file tickets with lengthy turnaround times and/or fees in order to do the most routine troubleshooting or maintenance tasks.)
Disclaimer: My only relationship with prgmr.com is that I've been their hosting customer for a long time (and very happy with them given the nonsense I've had to put up with from other hosts, in case you couldn't figure that part out from my above rant).
My only relationship with Gitolite is a project user. (I've created and maintained three small-scale Gitolite installations.)
I haven't used Gitlab, but I've heard good things about it.
The current version includes self-service key management, regular users are able to create repos in their own namespace, and easy forking of repositories. It's extensible, you can write your own commands in any language.
Granted, it has minuses. It only has a command line interface (no GUI), requires a little setup and editing of configuration files and reading of docs.
I'm currently paying for a prgmr instance just to run gitolite (https://github.com/sitaramc/gitolite) so I could have a private place to store remotes for my repos. I'm planning to move to bitbucket immediately.
If you want to collaborate with this setup, you would need to create a system-level account for every collaborator on your VPS (ugly) or install something like gitolite (https://github.com/sitaramc/gitolite).
The downside to gitolite is then you are running your own VPS, i.e. are responsible for security, updates, config, etc. It seems codeplane takes care of all the nonsense for you so you can get on with your real project.
As someone who had to set up gitolite because of this exact need, I can attest to the need for a service like codeplane.
I've done this for myself with a $48/year VPS from prgmr.com specifically because I needed more private repos than Github could offer (my setup instructions are here: https://gist.github.com/1035834).
Granted, if codeplane.com existed six months ago I probably wouldn't have bothered with gitolite. It appears they do nice things for you like backups.
- dev works on a feature branch, making multiple commits and pushes
- once ready, squash all the commits and submit it to gerrit
[- perhaps have hudson/jenkins run the unit tests at this point automatically]
- have the code review in gerrit
- once the review is done, gerrit would merge it into the develop or master branch (depending on your git workflow)
That approach blends in nicely with git-flow (1). If you want to be sure that no single dev is pushing to the develop or master branches you'd need to setup per-branch permissions, which can be done with gitolite (2). Too bad github (even the self-hosted version) doesn't support per-branch permissions, which forces organizations that use it and only want gerrit to be able to push into the main branch to do excessive repo forking instead of using feature branches. Also I'd love to be able to do ad-hoc code reviews in github, as the interface is the most beautiful of all imo.
[1] http://nvie.com/posts/a-successful-git-branching-model/, https://github.com/nvie/gitflow, http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flo...
The flexibility is pretty neat. Being able to do brach-based ACL in particular is killer for some environments and larger teams.