views:

49

answers:

3

Hello,

I have to install a code versioning system for a project. I would like to have two branches, one public and one private; each branch has it's own set of users. I would like to write some hooks for the private branch - when a developer commits code in the branch, some files are copied into another localation (similar to a deployment operation). Also, I would like to have a web interface to the repositories.

What software to you recomment me for these requirements? Is SVN a good candidate?

L.E. The operating system is GNu/Linux and I prefer an open source solution.

Thanks,

+1  A: 

Subversion is my vote. I have a similar setup with a trunk for main development and release tags which have deployment hooks to push files to a remote webserver. Websvn lets you view the repositories via your browser or you can use a more feature-rich solution like Redmine to perform issue tracking as well as a GUI for the repository.

Ken
-1 Subversion's support for branching/merging with two teams developing in parallel is completely outclassed by most distributed VCSs. It's inappropriate in his use-case.
James Broadhead
Thanks for your answer, but I will use git :-)
Laurențiu Dascălu
+3  A: 

It (having a private and public branch) will not work (nicely) with SVN.

What you can do is use a distributed version control software : git, mercurial, bazaar, fossil... you have choice. mercurial might be the simpler to learn and it might be a good introduction to the concept of distributed repositories.

In those systems, you have a full-history repository on your computer, and can put somewhere else (maybe online in a public access) a clone of it. You work on your local repository (you even can have several) then commit in local. Each commit will not move out of your repository, it will stay there.

Until you pull from or push to other repositories. Those are transactions (push/pull) of changes between repositories (your's, a clone of your's with some special modifications, a friend's repo, a teammate repo, a dev team repo, a public repo, what you want).

As the organisation is free, in your specific case you certainly want to have a private team repo somewhere where your teammates will get and put changes in, and another public repo (maybe on bitbucket.org, or github.org if your choose git) that will not move until you decide to push your team repo changes in the public repo.

I'm currently setting exactly that for a project by the way.

Klaim
Thanks, I found git to be very good.
Laurențiu Dascălu
A: 

SVN is pretty stellar

Depending on your level of skill there is also GIT/cvs. But if you have a choice defintally go with SVN also you might want to grab Tortiese svn as the gui is pretty good

george9170
+1 - I use Tortoise as well - the shell integration is very handy if you're working on a project outside of an IDE
Ken