code versioning systems

Started by
12 comments, last by the_edd 15 years, 10 months ago
[1] What advantages does using a code version system give you? I'm wondering if it's worth using one for the small prototypes that I'm writing. Right now what I do is create a zip: project_vX.Y.Z.zip every once in a while.
Advertisement
If you want ask questions like:

- when did this bug start happening?
- when did I write this part of code?
- when was the last time I touched this file/directory?

then all of those things are much more difficult to find out when using zip files.

Storing a bunch of zip files is also not very space-efficient, which is a problem that gets worse once you want to start having assets.

And using a real version control system has another benefit: it becomes trivially easy to store your work onto a remote server.

It might take you time to learn how to use a VCS, but it's a one-time cost. Once you learn how to do it, it's super easy to set up a new project. I track every project with Git no matter how small it is.
Is this the official site? http://git.or.cz/ the page does not load for me.

I also forgot to mention that I ideally want one that works in win32 and linux. ( Or at least windows )

Git was developed to manage the Linux kernel, so obviously it runs there and on most Unices. Windows support is improving, but there's also Mercurial which works on the same principles.
Subversion gets my vote.

Perforce is also pretty commonly used, and is free if you only want one or two people accessing the repository.

You could look at darcs, which is fully distributed (ie, each working copy acts as a repository, unlike the above two where there is a shared central repository and working copies don't store history themselves).

And yes, in my experience it's definitely worth using version control, even for small projects.

John B
The best thing about the internet is the way people with no experience or qualifications can pretend to be completely superior to other people who have no experience or qualifications.
Quote:Original post by ninmonkeys
[1] What advantages does using a code version system give you?

I'm wondering if it's worth using one for the small prototypes that I'm writing. Right now what I do is create a zip: project_vX.Y.Z.zip every once in a while.


You can maintain a 'history' of all files. It's nice to be able to make a change to the code without worrying about losing a working version. Assuming, you check in your files, after you make changes. Another advantage of SVN is easy backup. All you have to backup is the SVN directory.

Using a local SVN repository is very easy. It gets a little more complicated if you want to share it across a network. And tools like Tortoise SVN and TamTam SVN (http://www.daveswebsite.com/software/tamtamsvn/index.shtml) make it easy to manage the files.

I would recommend setting quite a few filters in SVN, so that built files (ie. exe, converted resource files, etc) are not checked in. Basically any file that is created by the compiler, or a conversion tool, doesn't need to be checked in.

Here's a tutorial on setting up a local SVN under Windows:
http://www.shokhirev.com/nikolai/programs/SVN/svn.html
There's a better tutorial somewhere, but I can't find it.

I've been using SVN for 3 or 4 months now, and couldn't imagine doing without it now, even though I am the only programmer on all of my projects. It adds very little time to the development process, but offers a bunch of advantages.

[Edited by - cdoty on June 14, 2008 11:32:05 PM]

Check out Super Play, the SNES inspired Game Engine: http://www.superplay.info

Another vote for Subversion but as long as you are using version control I'm happy regardless of which one it is.

To me coding with version control is coding without fear. You'll never fear breaking, changing, forgetting or trying something with your code when using a version control system properly.
Yet another vote for Subversion.

I would vote for Perforce (the cross-platform P4V, specifically), since it's awesome and always super-fast and efficient, and has great tools, but the "free version" limitations inevitably hold you back eventually.

Quote:Original post by bombinator-dev
To me coding with version control is coding without fear.


Seconded, as well. You pretty much are guaranteed to have at least two copies of your code, as long as you stay sync'd with your repository. If the client hard disk dies, you still have the server code. If the server hard drive dies, you still have client code that you can submit to a newly-setup server.

Add that to all the other advantages that pinacolada first mentioned, and it's a no-brainer. Even for small projects. :)

And I'll add one more advantage: if and when you end up working for a team at a software company, you will have a foot in the door. Source control will already be second nature to you, and you won't have to hit the ground running (as fast).
--== discman1028 ==--
Quote:Original post by ninmonkeys
Is this the official site? http://git.or.cz/ the page does not load for me.

I also forgot to mention that I ideally want one that works in win32 and linux. ( Or at least windows )


Yeah that should be the site, it's strange that it isn't working.

If you were using just Linux or Mac then it would be easy for me to recommend Git, because it runs absurdly well on those platforms. It really is absurd. There are certain operations where you will say, "how the F can it do that so fast?"

But the Windows ports of Git are pretty bad so I can't recommend them. Instead, Mercurial and Subversion are both fine tools with good Windows support.
I've been playing around with Bazaar recently. Like darcs and Git, it's distributed, which also makes it easier to set up for a single developer.

With SVN I need to set up the SVN server software, and connect to that every time I want to update or commit code.

With Bazaar, everything works locally. Your local copy *is* your repository.

In any case, you should use version control for *everything* you make, no matter how small and insignificant.

This topic is closed to new replies.

Advertisement