4

Does anyone know of a solution (web hosted or otherwise) for a source code control system that would work well in a university environment where information technology is the focus? We'd like to offer it as a campus-wide "version-control service", much like universities do with an email service. Specifically, I'm talking about the following peculiarities:

  1. There are a large number of new repositories created/managed each semester. Any programming course or research project could require students to use source code control, in various source code environments (including .NET, Java, C++, LaTeX).
  2. Students should be able to create and manage themselves the repositories. Involving an administrator/instructor/etc. is not scalable otherwise.
  3. Repository storage should be secure (private), and archivable for respecting intellectual property (preventing plagiarism, protecting research IP).
  4. Any or all of the flavors of source code control (e.g., CVS/SVN/GIT) would be acceptable.
  5. Remote access to repositories is essential. Student/researchers have freedom to work either in designated lab spaces or remotely. Marking of assignments can be done by instructors who've "checked out" the code anywhere.
  6. If an academic license exists, it must scale for >500 students.

Many commercial/free products (web-based or otherwise) don't satisfy conditions #1 and #2, as they require superusers to administer accounts/repositories/accesses. Solutions such as Google Code, sourceforge.net, GitHub, etc. don't satisfy condition #3, as the repositories are always public.

Bart
  • 19,692
  • 7
  • 68
  • 77
Fuhrmanator
  • 11,459
  • 6
  • 62
  • 111
  • The answers at the related question http://stackoverflow.com/questions/326429/what-version-control-system-is-most-trivial-to-set-up-and-use-for-toy-projects are somewhat useful, although the context there is limited to one course (and some of the answers go back to 2008). I'm looking for a solution for the entire university with modern technologies. – Fuhrmanator Mar 13 '12 at 22:45

5 Answers5

2

GitHub would appear to satisfy your requirements. You can set up your own instance in your intranet; https://enterprise.github.com/

tripleee
  • 175,061
  • 34
  • 275
  • 318
  • 3
    I hope they have academic licenses! Entering **500** students on the field "Team Size / All users who will require accounts" for the price calculator at https://enterprise.github.com/pricing gives a cost of **$125,000.00** per year. That won't fly for sure! – Fuhrmanator Mar 14 '12 at 17:38
  • It's free if all the repos are just public, and just tell each student to make their own account. – bmargulies Mar 14 '12 at 18:17
  • @bmargulies GitHub seems to fall into the category of Google Code et al. because of the public repo requirement. I mentioned this in the question. But thanks for clarifying. – Fuhrmanator Mar 14 '12 at 18:23
  • I emailed GitHub to ask them more about it. Thanks for this lead. – Fuhrmanator Mar 14 '12 at 19:39
  • Still no email response from GitHub.com. I am guessing they're not interested in academic clients. – Fuhrmanator Mar 20 '12 at 19:09
  • 1
    GitHub.com contacted me today and they do have academic licensing for the Enterprise product. The other academic options require users to request creation of accounts, repos, etc. through GitHub.com. More info at https://github.com/edu – Fuhrmanator Mar 28 '12 at 21:39
  • 3
    GitHub academic licensing does not allow repositories with industry-sponsored projects. This is a gotcha for most academic licenses these days. – Fuhrmanator Apr 06 '12 at 20:23
  • 1
    @Fuhrmanator Do you have a source for your statement that industry sponsored projects are not allowed? I have been told otherwise. – Cam Jackson Mar 26 '13 at 11:25
  • @CamJackson the pricing info we received recently is a hybrid license. You have to buy a standard license for at least 20 seats (which allows "for-profit research teams") PLUS you have to buy an academic license (unlimited seats, but no for-profit research). So, it depends on how you define "allowed" -- you have to pay for them at the industry rate (they offered us 25% discount). – Fuhrmanator Mar 26 '13 at 14:30
  • @Fuhrmanator Interesting. Is this for enterprise Github? Or the cloud-based service? – Cam Jackson Mar 26 '13 at 22:06
  • @CamJackson it was for "Hosting GitHub Enterprise at your school" – Fuhrmanator Mar 27 '13 at 00:38
  • @Fuhrmanator Ah, I believe the Enterprise (i.e. self-hosted) product follows a different pricing structure to just having it on the Github servers, which is the product that I'll be using. So the rules may be slightly different. – Cam Jackson Mar 28 '13 at 01:02
  • 1
    @CamJackson we debated off-site hosting, but since Quebec laws about privacy don't allow our university to store any kind of confidential information about students outside Quebec, it's better for us to have a local solution. – Fuhrmanator Mar 28 '13 at 14:44
2

Here's free one: http://gitlabhq.com/ You can add repositories over this tool. For security you use RSA Keys.

And I would suggest to use Git. SVN and CVS are outdated.

Roman Newaza
  • 11,405
  • 11
  • 58
  • 89
  • Thanks. I started a [thread](https://groups.google.com/group/gitlabhq/browse_thread/thread/d026caa3f89b95) in gitlabhq's discussion group, if anyone wants to follow the replies there. – Fuhrmanator Mar 14 '12 at 19:43
  • GitLab is built on gitolite, which seems to provide a [lightweight user model](http://sitaramc.github.com/gitolite/users.html), which supports criteria #2 and #3 in my question. – Fuhrmanator Apr 22 '12 at 19:51
  • I'm accepting this answer since a local GitLab solution is finally what we used. However, it was not possible out of the box (our admins had to code a solution to allow self-serving account creation and they're still ironing out the kinks in the system). Visiting researchers need to get an admin to create their account, but it's a pretty rare use-case. – Fuhrmanator Sep 27 '15 at 15:18
1

You could use git in the students private file storage if they have such a thing, git doesn't require hosting other than a place to store files.

evarsanyi
  • 31
  • 2
  • 2
    I think that you could use almost any source control system under these conditions. Every one that I have used has a local file system storage option (SVN, git and Mercurial all do) – Steve Kaye Mar 13 '12 at 22:53
  • In this answer, does it mean that everyone works locally on the same (shared space) machine? That wouldn't fly given the diversity of coding environments (everything from .NET in a Microsoft IDE to Java in Eclipse/Netbeans to LaTeX in Emacs). I understand how GIT or SVN could work locally if everyone was using a C++ compiler on the same machine, but not how remote access/sharing would be managed without a sysadmin. Did I misunderstand? – Fuhrmanator Mar 13 '12 at 23:33
  • 1
    No, DVCS systems allow you to start with a private repo on the local machine, then later share it on a central server or, in fact, any other machine or user. Modern VCSes like bzr, Darcs, Mercurial, and Git are all based on this model. You can use a central repo if you like, but it is not a requirement. – tripleee Mar 15 '12 at 05:36
  • @tripleee Thanks for the clarification. I think the problem we have is how to assume what the "local machine" might be, so that a user knows how to configure it, manage sharing of private spaces, etc. I did come across [Creating private GIT repositories in shared hosting environment](http://michael.otacoo.com/linux-2/creating-private-git-repositories-in-shared-hosting-environment/) which gives some ideas provided we have a central Apache server for repos. Admins are touchy about giving mod_cgi, mod_alias, and mod_env, however. – Fuhrmanator Mar 22 '12 at 21:03
1
  • Redmine (SVN, CVS, Git, Mercurial, Bazaar and Darcs)
  • UberSVN (SVN)
  • Private Assembla (?) (SVN, Git, Mercurial)
Lazy Badger
  • 94,711
  • 9
  • 78
  • 110
  • [Looks like](http://www.redmine.org/boards/1/topics/3315) Redmine requires admin intervention to create repos. – Fuhrmanator Mar 14 '12 at 04:50
  • @Fuhrmanator - because Redmine can use LDAP, with [LDAP plugin](http://www.redmine.org/plugins/redmine_ldap_sync) or [it's fork](https://github.com/Utopism/redmine_ldap_sync), you can enable self-serving to users (at least it seems so) – Lazy Badger Mar 14 '12 at 05:15
  • I started a [thread](http://www.redmine.org/boards/1/topics/29540) in Redmine.org's forum, if anyone wants to follow the replies there. – Fuhrmanator Mar 14 '12 at 19:40
0

One solution I use is to create a master GIT repository in a Truecrypt variable size encrypted container. The container is placed in a Dropbox folder. The repository is cloned to the local hard drive which becomes the working directory. All the work is done and checked in on the local repository. I wrote scripts that mount the encrypted container, pushes/pulls the local repo to the master repo and dismounts the encrypted container. Dropbox detects the changes in the encrypted container and syncs it to the Dropbox server. Security is maintained as an encrypted file is the only thing sent to the server. Only real way to ensure security is doing the encryption yourself.

All you need to set this up is a few scripts, truecrypt installed and a Dropbox account. Could probably write some basic software to automate some of the steps. To make it scaleable and low cost, the basic steps are still valid. Create a master and local repository, encrypt the master repo, work on the local repo and sync changes to the master, back up the encrypted master repo online or on a server.

Ben
  • 539
  • 3
  • 7