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,
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.