tags:

views:

98

answers:

7

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?

A: 

github, or a self-owned git repo, I'd argue...

polemon
Why? (Not disagreeing, but would like to see some persuasive reasoning why). Also a counter argument would be that dependent on policy you may not be able to host your source code in the cloud.
Michael Shimmins
easy to use, and local commits possible
polemon
+3  A: 

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.

Dave McClelland
Please don't list CVS...
Clark Gaebel
@Clark I didn't recommend it, but in my experience it is still one of the more widely used version control systems. It's not a bad thing to have some experience with it, even if it's just trying it out and deciding he doesn't like it.
Dave McClelland
A: 

Try Mercurial. It's as simple to get started as cding 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.

icktoofay
Your argument is equally valid if you change the mercurial stuff to git.
Jimmy
@Jimmy: That's true, but I like Mercurial. Also, I haven't found an equivalent to hginit.com. It's a great resource, and resources on git were somewhat scarce last time I looked (though that's getting better).
icktoofay
Pro Git? That books been out forever, free pdf download too.
jer
@jer: Oh, I wasn't aware of that. Thanks. (but I'm sticking with Mercurial anyway)
icktoofay
Sure, I'm not going to try and convince you to change a tool that works (presumably) at least satisfactorily for your workflow. That's just silly nonsense :)
jer
+3  A: 

Have a look at:

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.

Michael Shimmins
Perforce provides a fully-functional free version for up to 2 users, by the way. Along with excellent integration packages for common IDEs and bug trackers.
David Brown
Thanks - updated.
Michael Shimmins
A: 

Subversion, Git. CVS has been mentioned, but SVN surpasses it.

Babak Naffas
A: 

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.

Dave
+1  A: 

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.

RBerteig