Slashdot Mirror


Windows Source Control for the Lone Developer?

bitFlipper asks: "I'm the sole developer of embedded software for a small company. Currently I'm maintaining about five different product lines, each with about 30K lines of code and 100+ files. At the moment I'm winging it without a version control system (using snapshots to CD-R), but this is an unhealthy state of affairs. The open source/big project model of many developers scattered across the globe doesn't apply here--it's just me. And since I have to provide my own tools, the budget for this is near zero. It also has to run on Win32. Oh, and the code I'm developing is not open source. I've looked at RCS (which is certainly simple, but maybe too simple) and Subversion (which is probably overkill). What can people recommend for a version control system that's free or low cost, Win32 compatible, and simple to set up, use and maintain?"

31 of 109 comments (clear)

  1. CVS by renehollan · · Score: 2, Interesting

    not the overkill of Subversion, and a bit dated, but it'll do.

    --
    You could've hired me.
  2. Re:Subversion by lightspawn · · Score: 5, Interesting

    Sorry, I guess I should have explained. It's easy to set up - pretty straightforward if you only want to use it locally - it's as easy as

    svnadmin create dbname

    A huge plus is it's easy to export/import the database to a single (large) file, so you can actually see it does what it's supposed to.

    It's written by the people who used to maintain CVS before noticing how annoying it was.

    So it's not overkill, and satisfies all of your criteria.

  3. CVSNT + WinCVS or Perforce by DamienMcKenna · · Score: 2, Informative

    Due to the fact that SVN isn't available for Windows (a native port, no cygwyn stuff), I recommend either Perforce or CVSNT + WinCVS. I've used CVSNT at work and home for some time and it works great.

  4. QVCS by prostoalex · · Score: 2, Informative


    The place where I work (embedded software development as well) uses QVCS. It was there before I arrived, so I am not sure about the setup, but overall works great, and the license cost maxes out at $100 for 4 users. You install it on a Windows box, and then launch the client copies by providing a shortcut to the server install, so cannot run more than 4 simultaneous copies, but that works for us.

  5. Tortoise CVS by grent246 · · Score: 2, Informative

    I have had great success using Tortoise CVS. It allows you to use a local directory as your repository rather than having to set up a CVS Server.

    It integrates into the Windows shell so you can very easily see what files have changes visually from the icon, and all normal CVS operations can be done from the context menu in Windows Explorer.

  6. or cvs by akookieone · · Score: 3, Informative
    I like subversion as well, and its a good time to jump on that band-wagon as the product is mature enough now you shouldn't have to work very hard to defend its use over other older/established tech.(If it were up to me entirely, this is what I would use.)

    On the other hand, cvs isn't terrible - and you don't need to be doing OSS or huge # of devs to warrant its use. Cygwin allows you you run in windows, and there is also a windows version of the cvs server.

    But look, if you are developing something windows based, and using MS products or IDE's, VSS is not out of the question...it plays well with other MS tools, so it might make the most sense.

  7. The obvious recommendation is CVS by ObviousGuy · · Score: 3, Interesting

    As everyone else around here attests to, CVS is the obvious choice.

    But my question is what kind of company is it that can't afford to pay for business software? As this kind of thing can be deducted from taxes, it makes a lot of sense to let the company pay for the software and enjoy the tax relief.

    Even if the company is just you, it would be better to let the corporation pay for it and not pay full price on the software out of your salary.

    Charge your next customer a little more and use the difference to pay for some software. Of course it makes sense to use free software whenever possible, but I can't imagine agreeing to being taken advantage of by a company like you are describing.

    --
    I have been pwned because my /. password was too easy to guess.
  8. Source Safe by omibus · · Score: 2, Insightful

    Comes with Visual Studio, and will do just about anything a group of 1-5 developers could want.

    I know people trash Source Safe, but for small groups of developers, it isn't that bad.

    Otherwise, you could try The Valt (http://www.sourcegear.com/vault/index.asp), but you need SQL Server to run it.

    --
    Bad User. No biscuit!
    1. Re:Source Safe by rrsipov · · Score: 5, Informative

      My team used to use Source Safe (6.0), and with just a few people it ended up being really horrible. The files are stored in a big binary (I think) mess which caused problems at least twice when SourceSafe decided it was corrup. Tool support (at the time) was pretty awful (outside of Visual Studio, and a few other programs). We moved to CVS. While CVS has some issues (handeling of binary files, etc) it works. I have had problems with Windows GUI tools though. The best we've found seems (ironically) to be LinCVS (lincvs.org). Also, subversion in local mode might work for you. Finally, I seem to recall that several major commercial tools have a free 1 or 2 user limited version.

  9. Perforce by Bronster · · Score: 3, Interesting

    I'd definitely recommend Perforce as well, but it's not free. Of course, as a single user you can use the 2 users/2 workspaces design supported without a licence.

    Believe me, you'll be happier than with the current crop of free stuff (though I'd be tempted by Subversion if it didn't depend on so many things just because they're the latest cool thing).

    Perforce is nice on Linux too in that it's just a couple of statically compiled binaries that work everywhere. Pleasant change to dependency hell (like getting any recent piece of software onto Debian stable)

    1. Re:Perforce by markhb · · Score: 4, Informative
      I believe you're confusing two separate issues. The agreement relating to "no production use" is the evaluation, where you can have them give you a limited-time license key for n users to evaluate the software. The 2-user, 2-workspace configuration is gratis:
      You can download and use any Perforce software product free. All Perforce software you download is fully functional, with the exception of the Perforce Server, which allows only two users and two client workspaces when used without a license.
      That is from the page you referenced. Also, from http://www.perforce.com/perforce/loadprog.html,
      You may use software downloaded from Perforce for any purpose you want and for as long as you like. The Perforce Server supports only two users and two client workspaces unless used with a Perforce License.
      As far as I have been able to tell, there is no restriction against using the 2-user version in production. If you have an example of such a restiction, please post it.
      --
      Save Maine's economy: write stuff down. All comments are exclusively my own, not my employer.
  10. subversion is easy to use by Adhoc · · Score: 5, Informative
    As long as you stay on a single box, subversion is very easy to use.
    svnadmin create C:\repo
    cd <workdir>

    svn co file:///repo #(might want to check the syntax on that, not sure if it's different on windows)
    svn add foo.c
    svn commit

    etc, etc
    While the details might be off a bit, it will be something like that easy. there is excellent documentation for subversion at http://svnbook.red-bean.com/ which covers all the bases really. Where subversion gets complicated is setting up network access, but even that isn't that hard. A couple of hours of reading the red-bean book and you'll be all set. In any case it isn't really any harder than CVS to setup and is more refined. RCS is probably too weak. No support for directories structures. good luck. Adhoc
  11. Re:CVS by Arkham · · Score: 4, Informative

    CVS (Concurrent Versioning System) is definitely the way to go.

    Here are some links to get you started:

    CVS On Windows

    WinCVS GUI (very nice, uses Python undeneath)

    Tortoise CVS

    CVS NT Wiki

    Component CVS for Windows

    All of these are CVS for Windows tools. CVS is a great revision control system.

    --
    - Vincit qui patitur.
  12. Re:CVS by smallfries · · Score: 4, Informative

    CVS and subversion are just as complicated as each other. If anything, subversion is easier to use than CVS ever was, and certainly easier to administrate. You can't say that CVS is simpler than subversion as they follow the same model of use, but subversion is somewhat more streamlined and there are less gotcha's to bite you in the ass.

    --
    Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
  13. Tortoise SVN by manonthespoon · · Score: 5, Informative

    Tortoise SVN is a version of the subversion client server that integrates with windows 2000, XP.

    Right click on a file or folder to check it in, create a repository and just about everything else. It's actually very simple to use and you get all the power of a Subversion.

    1. Re:Tortoise SVN by key45 · · Score: 2

      Definitely, Tortise SVN makes version control easy.

    2. Re:Tortoise SVN by nick_danger · · Score: 3, Informative
      Definitely Tortoise w/subversion.

      I'm using it in a very similar situation: I'm the sole developer for a Windows based Delphi application. I've found it to be VERY easy to use; it supports branches/version snapshots/etc, it's fast, and it easily supports binaries as well as text. Tortoise integrates into the Windows explorer, providing icon overlays in the tree view and the file view indicating the status of tracked files and a bunch of other things. No need to pull up the DOS penalty box to issue commands -- it's all there. It's really sweet.

  14. What a coincidence.... by Danse · · Score: 2, Informative

    I was just researching this very question for myself today. Found a nifty comparison between several source control systems. Perforce and BitKeeper seem like the most complete systems, with Monotone and Subversion close on their heels. The trial version of Perforce works for up to 2 people with all features enabled. It gets kind of expensive if you need more than that ($750/seat). Couldn't find actual pricing for BitKeeper, although they were prompt in replying to an email to their sales address and I'm discussing it with them.

    --
    It's not enough to bash in heads, you've got to bash in minds. - Captain Hammer
  15. How about Darcs? by Wonko · · Score: 3, Insightful

    How about Darcs?

    I was just recently looking to move away from CVS for my personal projects. I'm not always home, and I wanted to have copies of my repositories on at least my laptop and desktop.

    At first, I was leaning towards trying out GNU Arch. But I really wanted something that had a working win32 client. So I took a look at Darcs.

    I'm very happy with it so far. It is extremely easy to set up and use (but I haven't seen any gui frontends if that's the kind of thing you want). It is also very easy to keep multiple repositries in sync.

    I've read that it can be slow for large projects. I don't remember reading the definition of large, but none of my repositories qualify :).

    You might also want to check out this comparison or this comparison of revision control systems.

  16. Re:PVCS by ducleotide · · Score: 2, Informative

    I disagree, PVCS is awful... it's expensive, the 'GUI' interface is not at all intuitive, the server is unreliable and it doesnt scale. It also lacks (or hard to find) a good diff'ing utility and a useful search utility.
    I prefer CVS with one of the gui add-ons like tortoise. In my opinion, the cost/benefit of CVS far outweighs PVCS. I have not used Subversion but hear great things about it.

  17. Re:Subversion - Don't forget Tortoise by x00101010x · · Score: 2, Informative

    Another big plus to subversion under windows is TortoiseSVN.
    This client runs as a shell extension right in explorer, so now all your VCS commands are just a rightclick away. It also includes the ability of configuring what commands are nested in the Tortoise SVN submenu, and which are out on the main context menu. All the ease of use of winzip or powerarchiver for version control. It also adds useful columns to your details view, and has a handy repository browser.

    If you're on the go a lot and hop between systems, setting up apache for windows and adding OpenSSL and the Subversion modules are easy (drop me a message and I can point you to some good how-tos, but the Subversion Book (on tigris.org) is pretty much all you need). Once the modules are in place, it's only half a dozen lines in your httpd.conf to open up authenticated https access.

    I currently use subversion+tortoise on all my windows machines and the commandline interface on my linux laptop. I run the server from my Win2k workstation with a single port routed through my firewall box.
    I use it not just for projects, but also for my thunderbird and firefox profiles (except for the platform specific files), my mp3 collection, desktop, documents, pretty much everything i use on a daily basis.
    I also have an archive tree thats not actively checked out anywhere.

    --
    DONT PANIC
  18. Re:Winzip by PylonHead · · Score: 4, Insightful

    Spoken like someone who has never used version control. Just because he's all on his lonesome isn't a good reason to miss out on all the fun:

    With version control I can see the last three times I changed a specific file. I can show the diffs for my latest change at the touch of a button. I can keep seperate branches for release 1.2 and release 2.0. I can merge the bug fixes I apply to version 1.2 into 2.0.

    It takes a while to understand the benefits of version control, but once you do, you'll use it for all your development, solo or otherwise.

    --
    # (/.);;
    - : float -> float -> float =
  19. TortoiseSVN in local repository mode... by zhiwenchong · · Score: 4, Informative

    ... is probably what you want. A single GUI app, no Subversion server necessary. It uses a folder on your hard drive as the repository instead of a WebDAV server etc. It seems to implement Subversion internally or something...

    TortoiseSVN is here

    I use version control on my local Win32 machine to manage different versions of files. I've used both TortoiseCVS and TortoiseSVN in local repository mode, and I highly recommend TortoiseSVN over TortoiseCVS. Forget CVS, really! SVN is much better, even for personal use. It is lightweight, and you don't have to run any server -- the client manages everything for you. Here's information on running TortoiseSVN in local repository mode (with screenshots and all)

    Quote:
    "If you're not working in a team but working alone on a project and still want your work under version control you can also access a repository locally. This kind of repository access is also very handy if you just want to try out some Subversion commands and you don't want to risk screwing your "official" repository."

  20. Serious questions by bmac · · Score: 2, Interesting

    I'm in the same boat as the question poser, and I've got some questions to ask:

    Does CVS/Subversion automatically track changes to directory trees of code over time, or do you have to somehow "stamp" a save point or snapshot or somesuch?

    I do a fair bit of code generation (due to C# and C having no generics), so will a version control system be able to track changes to data that is relevant to my code. As well, I use text and Excel files as design docs, so can they be included in the "files that matter" set?

    Sorry to sound like such a n00b, but I've always been the lone programmer, even on large projects. It seems very hard for me to believe that I will gain a cost benefit (as per time invested) from a version control system. Sure, I've not read up on the different packages, but what I'm asking here is for the expert synopsis, if someone would break down the flow for me, please.

    Thanks in advance.

    Peace & Blessings,
    bmac

    1. Re:Serious questions by stevey · · Score: 2, Informative

      (Disclaimer I once wrote an emacs mode for subversion, but have never used it in anger).

      CVS works more in the "stamping" way you suggest.

      When you create a project you import all the files that you care about, the sources the test scripts, and any documentation that you care about.

      After that you checkout a clean copy from your new repository and have a blast working on it.

      When you have implemented a new feature, or made a new change you then run 'cvs commit'.

      The commit process examines the local files for any changes from the copies in the repository (ie the last stamp) and then saves them - after running an editor to ask for some description of the changes.

      Alternatively you can trash all the work you've just done and revert to the previous checkpoint - or any other point in the history of each file.

      At any time you can run 'cvs diff' to see what has changed in your local copy but you must manage the committing yourself. All the source control systems I've used have been like this.

      In practice it works well as you only checkout once then you make regular commits based upon the code you're working on. eg commit after a new feature, or a bug fix.

      One thing worth noting is that 'cvs diff' will just tell you that a binary file has changed, without showing the details, so a cvs diff isn't very useful on an excel spreadsheet.

      I hope that helped.

    2. Re:Serious questions by rrsipov · · Score: 2, Informative

      I don't have any experice w/ subversion. With CVS the changes are tracked per-file. You can "tag" a directory structure to create a named point that you can later use. For binary files CVS just keeps a copy of each different version. As I understand it subverion is a good bit better than CVS on a number of things including: commands to rename or move files/directories which preserve the information about the change (there is no good way to rename or move anything in CVS, although some if you have a small team you can work around this with some hacks). Subversion is also supposed to be much smarter about storing binary files, in terms of storing binary diffs, but this still doesn't allow you to compare the contents the way you can with text files. If possible, instead of Excel, look at something like OpenOffice - it has a 'flat xml file' format (the default is xml zipped into an sw* file). This would allow you to check it into CVS/Subversion/anything-else, and then use the powerful text comparison utilities that are part of these tools.

  21. Re:CVS by jgoemat · · Score: 2, Informative
    All of these are CVS for Windows tools. CVS is a great revision control system.
    If you don't have much command line experience they aren't that great. I had trouble getting WinCVS to run and the Tortoise shell integration wasn't great. I had trouble getting it working with my CVS server too, although the command line tools would work after I learned how to use them.

    We use SourceGear vault at work and it works great. It integrates well with Visual Studio and the provided client is easy to use as well. It does cost money, but it was pretty reasonable compared to the alternatives we looked at ($200 per user), including CVS since it took so long to get setup, there would be a learning curve for everyone, and the extra time it takes for everyone to use it would more than offset the cost.

    We tried perforce as well, but it didn't even compare to SourceGear, and we had a lot of problems getting it to work well with Visual Studio .NET, for web-based projects especially.

    The best source control system I ever used was in VisualAge for Java from IBM. I used it on a big Java project at one of my clients. It was integrated with the IDE and tracked changes to individual methods in the classes you were working on. Every time you saved, it would store that version in your local repository. I liked being able to version and name each class, package, and project. You can call them anything you want, but if you put numbers at the end, it will automatically increment them the next time (i.e. naming something "SSTP 1.4.1" will let you automatically version it to be "SSTP 1.4.2" without having to type anything. The local repository was in one big file that held all your changes until you version something to the server. You could even copy that file and take it somewhere else and keep all your changes. I was thinking of writing something similar in C#, anyone else interested?

  22. Source Safe by dnnrly · · Score: 2, Insightful

    I hate to admit it, but for single developer projects Source Safe is actually really handy! It's absolutely pants at handling merging but this shouldn't be much of a problem if there's just one of you or even in a small team of 3 or 4 should you choose to expand the operation.
    It keeps track of eveything and allows for easy versioning and comparison between versions. I found it's great if you find new problems cropping up after a certain date and you want to compare what changes you made.

    Beware though, it's not much good at anything else so if you want to use multiple branches or get frequent source updates from the client or anywhere else I'd consider something else.

  23. FreeVCS by jwbozzy · · Score: 2, Informative

    I'm currently using FreeVCS to maintain a source tree with 965 files, about 30k each. It's an interesting approach in that it stores all the code in a database (DBISAM by default). It's designed for Delphi developers, but I am using to store a game engine (C++) and the associated scripts (TorqueScript), and I haven't had a problem with it yet. It also implements check out messages (why did you check this file out? "To fix the wankiness in doSomething()"), which can be quite useful once you get into multi-developer projects (like the one I'm on).

    --
    perl -e 'printf("mmm %x\n", 3735928559)'
  24. Re:What revision control system does MS use? by RomSteady · · Score: 3, Interesting

    Internally, Microsoft uses Source Depot, which seems to be a source-modified version of Perforce.

    It has some additional features that Perforce lacks for doing per-checkin builds and acceptance tests.

    --
    RomSteady - I came, I saw, I tested. GamerTag: RomSteady / http://www.romsteady.net
  25. Re:What revision control system does MS use? by TheGrayArea · · Score: 2, Interesting

    He's using weasel words. The entire product code base is stored in source depot. There's still a few stragglers using a few sourcesafe bits, but if you are in or touch any of the major products you're definitely using Source Depot.

    --

    This space for rent.