I am trying to setup a repository at my work for all the code (mostly C, Assembler, batch basic) that my colleagues and I use. I know some things about repositories but cannot properly decide which ones are good or not. I have no experience with them but so far Apache Subversion and Python's repo look good. Are there any others that are good? Easy to use and to setup?
Look into Git, Mercurial, Subversion, and CVS. Those are the big players. I think SVN is relatively easy to set up, but Git and Mercurial has some truly fanatical users, so you may find you like them more.
Try Mercurial. It's as simple to get started as cd
ing into your code's folder and typing hg init
. Once the repository has been initialized, you can add everything with hg add
, and then commit with hg commit -m "Initial commit."
or something like that. There's also a really great tutorial at hginit.com.
Have a look at:
- Subversion
- Git
- Mercurial
- Perforce (paid for - if more than two users)
The technology you're looking for is called Source Control. A repository is a term used by most of the different source control tools to refer to the collection of source code. A source control instance (such as SVN) can have many repositories. Usually a repository contains a project, or a group of projects that are closely related. Distinct projects would be a good example where you'd want to make use of multiple repositories.
Giy and Mercurial are distributed source controls tools, whereas SVN and Perforce are not.
A few providers offer IDE integrations (Perforce offers one, you can get ones for Subversion, ie: Ankh for Visual Studio). Other users opt to deal with source control outside the IDE as a purely file system options.
If you're happy to have your source code in the cloud, git hub might be a good solution. They offer free Git repositories that you don't need to manage.
I vote for SVN since that's what I use, but I have to admit that I really like the idea behind Git and Hg (Mercurial).
The biggest issue is usually with merging, I think, but SVN's merge tracking has made the process much easier. Plus TortoiseSVN makes managing your repo branches really simple, if you're in Windows.
For me the one feature in Git and Hg that really appeals to me is the distributedness of it all. If I'm not mistaken, your dependence on a central repository goes away, and it just makes life easier for people who are working remotely or are frequently disconnected. For example, I do all of my work in a working directory that is checked out from our SVN server. The problem is, if I don't have a network connection, I can't look at the repo or commit. This really sucks because I like to be able to check in my code at milestones, and if I'm working on an island I just can't do it, plain and simple. However, with Git and Hg the repo is local -- it's on your computer, and then if you want to later push your changes to a central repo, you can totally do that.
I still would like to move to Hg, but when deadlines are always upon you, you know what goes on the backburner.
I'd recommend taking a look at fossil. It is a low-ceremony easy to use distributed version control that also has trouble tickets and a wiki. The tool itself is a single-self contained executable so the only installation it needs is dropping that executable into a suitable folder on your PATH. It is highly portable, with binaries available for Windows and a variety of *nix platforms.
It is suitable for projects over a wide range of scales. The complete project history of SQLite was moved from CVS to fossil shortly after it was complete enough to be useful, and all current development of SQLite is held in a fossil repository, for example.