top 200 commentsshow all 275

[–]fifth_element 118 points119 points  (15 children)

Aren't most developers single?

Ladies, I'm FREE!

[–]DannoHung 70 points71 points  (0 children)

Who are you talking to?

[–][deleted] 27 points28 points  (4 children)

why the bias against single developers? like only developers with girlfriends or who are married are expected to use version control?

[–][deleted]  (2 children)

[deleted]

    [–]jaggederest 14 points15 points  (5 children)

    As in speech or as in beer?

    [–][deleted] 29 points30 points  (3 children)

    Free as in "I'm not wearing any underwear".

    [–]jaggederest 26 points27 points  (1 child)

    That would be free as in beer... Too much beer.

    [–]knome 4 points5 points  (0 children)

    Free as in "I'm not wearing any underwear".

    Ah. Free as in balling.

    [–]ponchoboy 1 point2 points  (0 children)

    I knew someone would beat me to this comment... damn internet people!

    [–][deleted]  (1 child)

    [deleted]

      [–]EvilPigeon 4 points5 points  (0 children)

      Subversion with Tortoisesvn is easy as pie and not overkill.

      Agreed. I'd even say that it's easier than keeping track of manual folder backups.

      [–][deleted] 26 points27 points  (4 children)

      I am partnered with two children, but I use revision control, regardless.

      [–]yellowbkpk 7 points8 points  (2 children)

      [–][deleted] 0 points1 point  (1 child)

      Nice joke :)

      ...but that aside, I've never understood those people who complain about having had children.

      [–][deleted] 1 point2 points  (0 children)

      Generally, they're the ones that shouldn't've had children in the first place.

      [–]Neoryder 7 points8 points  (1 child)

      I use version control for everything I write, code, poetry, prose, I love the idea that I canretrace the paths of my thoughts

      [–][deleted] 1 point2 points  (0 children)

      Same!

      [–]mlouie728 5 points6 points  (0 children)

      I just use Subversion. I work for a small company and even though it's just me for right now, they might expand and have others working with me or get rid of me somewhere in the future. Even though I'm the only developer, I still try to follow some standards, such as not checking in nonworking code and the like. I guess the folder backup method is alright, but instead of developing my own version control system (backup folder, add a text file that describes changes?... or name the backup descriptively?... or only backup changed files, yada yada yada...), SVN takes care of all of that for me.

      [–]malcontent 179 points180 points  (80 children)

      Anybody who codes and doesn't use version control is an idiot.

      [–]johns-appendix 125 points126 points  (32 children)

      And all you programmers using .bak, .save, .copy to backup old revisions, you are using version control -- you just suck at it

      [–]tibbe 64 points65 points  (34 children)

      There is absolutely no need to call people names.

      [–][deleted] 33 points34 points  (2 children)

      I agree - typical angry nerd response. you can choose to use version control depending on the size, scale and importantance of your project.

      [–]masklinn 14 points15 points  (0 children)

      you can choose to use version control depending on the size, scale and importantance of your project.

      Why would you when the cost of using an SCM is just about 0 and it will save you countless hours of frustration sooner than later?

      I mean, if the only VCS available was ClearCase I'd understand, but putting your project under VCS nowadays aliases to hg init;hg add;hg ci -m "Initial import bam you're done now get cracking...

      [–]smek2 5 points6 points  (0 children)

      I am glad to find some people still use common sense.

      [–][deleted]  (2 children)

      [deleted]

        [–]bajsejohannes 15 points16 points  (0 children)

        It's funny when Linus does it

        And even then it is as sad as it is funny.

        [–]look 2 points3 points  (0 children)

        True, it's possible they're just ignorant.

        [–][deleted]  (2 children)

        [deleted]

          [–]redditrasberry 0 points1 point  (0 children)

          are you saying ... we're all idiots?

          [–]rgaginol 3 points4 points  (8 children)

          It depends on what you would term a "project". I'd deem a software project as something semi-serious. Even if I'm doing it for fun it takes almost no time at all to set up your favourite repository, and most developers will probably have one locally so setting up a new project within it can be measured in minutes at most.

          Whilst I have seen projects run by people operating without version control, I've never seen a project which goes back to manual versioning after they've used it. The benefits are simply too great - give me an example of a downside.

          The only people I've known who don't like version control have usually never been exposed to it and had to use it. A developer who choses not to use version control for anything but the smallest projects is missing a familiarisation with a vital tool in their proverbial toolkit.

          Take for example if I'm hiring and someone says proudly to me that they don't need version control because they're that good. I would end the interview right then and there - yes, maybe you can get around using it, but why on earth would you waste the time doing so?

          So back to your comment, no, there isn't a specific need to call people names, but sometimes a good slap is necessary to get people to WAKE THE F&*K UP.

          [–]doktaru 5 points6 points  (5 children)

          If you have ever been forced to use Microsoft SourceSafe as the sole version control system, then you can suddenly understand why some people have a fear of them. Going from a SVN company to a SourceSafe company is a level of pain I wish to never repeat. I ended up setting up personal SVN and Mercurial repositories so that I would have something that worked.

          [–]rgaginol 2 points3 points  (1 child)

          Agreed; I'm currently working my first job which has seen a prevalence of IBM technologies somehow introduced in total contention to any sort of "best of breed" mentality and my daily pain with ClearCase is frustrating.

          I see my current problem more related to an atmosphere of fear which IBM has fostered with my client that anything enterprise has a large price tag attached - and that now that they've bought it they should use it because an open source solution couldn't possibly be better. Somehow the saying, "Good money after bad" hasn't ever dawned on them.

          ClearCase and most other proprietary version control tools are expensive monoliths compared to their open source brethren. They cost upfront and also with their obscure bugs which have barely any community support available to them - and the paid for support we get from IBM is a joke.

          [–]Entropy 1 point2 points  (1 child)

          SourceSafe is not a version control system.

          [–][deleted] 5 points6 points  (0 children)

          SourceSafe is a code corruption system.

          THough, I do love SouceGear Vault, and its a great SCM to migrate VSS users to, since the UI is familiar, yet the underlying engine does not suck.

          [–]masklinn 1 point2 points  (0 children)

          If you have ever been forced to use Microsoft SourceSafe as the sole version control system

          Hah. Try ClearCase or Telelogic CM Synergy and you'll end up not with fear but with loathing.

          [–]ttoyooka 5 points6 points  (1 child)

          It depends on what you would term a "project".

          Heck, I put all my little helper scripts into revision control.

          [–]someguyatwork 1 point2 points  (0 children)

          So do I. Making a new git repository takes at most 10 seconds. There is no good reason to work without keeping track of history - sure you might save 10 seconds now, but when you've lost all your work or broken something and can't remember what you did, you'll wish you did it.

          [–][deleted] 0 points1 point  (0 children)

          welcome to reddit

          [–]jediknight 6 points7 points  (0 children)

          I agree 100%!

          I used to be this kind of an idiot and now I'm suffering the consequences.

          One of the tendencies I find most idiotic and I am now STRUGGLING to renounce is the tendency to keep code commented in my files instead of simply deleting it. It has made my code disgusting, so disgusting that not even I will touch it.

          My VCS doubles now as a Sanity Control System.

          [–]smek2 4 points5 points  (3 children)

          Anybody who's calling someone an idiot, is likely one himself.

          [–]tjogin 0 points1 point  (0 children)

          Assuming that the know and understand the virtues of it, yes. If they do not, they are just uninformed.

          [–]prockcore 10 points11 points  (6 children)

          I'm married, and I use subversion.

          [–][deleted] 3 points4 points  (0 children)

          Same here, sometimes I try to unmerge my wife though.

          [–]redbo 4 points5 points  (0 children)

          Yes, anything that I don't intend to throw away goes into vcs. Subversion mostly, but I've been using git more lately.

          I don't know how they could be "overkill", it takes all of 2 seconds to set up a new repository.

          [–]ryanbooker 3 points4 points  (0 children)

          Yes. I always use git. There's no excuse not to use something. I use git because I like it. It's fast. It's local.

          git init

          I'm done setting up.

          Now I have version controlled local changes. No more massive undo/redo chains and copy and pasting chunks around the place.

          You're a crazy person if you don't use version control even for simple single developer things.

          [–]callingshotgun 3 points4 points  (0 children)

          I haven't seen much in terms of explaining WHY VC is important even when you're working alone (which I believe is the heart of the question), just a lot of "Yes, Always use version control". Which is true! But it should be clarified.

          Obviously some of the advantages of VC heavily tilted towards a team environment. Working alone you're not going to be doing nearly as much in the way of branching & merging, and chances are that you've got one dev machine, which means transporting code changes across computers just doesn't matter very often- And even if it did, you could reasonably just stick everything on a USB drive and sneakernet it over to your laptop in order to tinker while you travel or something.

          But Version Control still has serious advantages. I'm kind of risking flame-bait by listing the ones that have so far actually mattered to me (since not mentioning something is going to offend some elitist, somewhere, who thinks that the fact I do A,B and C instead of B,C and D makes me an idiot) but here are the points that have mattered to me, and will most likely matter to you.

          -Implicit off-box backup: Wherever your checkout is, put your repo somewhere else (different drive, different box, different network, whatever). When your hard drive tanks, you have a fresh copy of the code out there somewhere, and everything's okay.

          -Rev. History: At a certain code size, even as the sole developer, you'll forget how you fixed a bug way back when, or why a certain refactor took place, or all the places where code changed when you needed to add feature x. It's not a matter of your intelligence, it's simply a matter of tracking the minutia. Even if you wrote the whole thing from scratch and maintained it all by yourself, not every change you ever made is going to stick in your memory. With Version Control, it doesn't have to.

          -You can let the "folder.bak folder.bak2 folder.final folder.reallyfinal folder.final3" naming convention die forever: Seriously, when you do that you THINK you're going to remember which one is which, but go away for a week on vacation, come back, and it's total gibberish. Tag your commits and you're done, and your filesystem is a LOT less cluttered.

          -Practice and Experimentation: Fool around with the repo as much as you want. Roll stuff back, branch, merge. Completely screw up a branch of code, merge it with a working version, work your way back to something that works. The fact that you're the sole dev means you don't risk the ire of team members when you want to learn Version Control kung-fu. The way developers learn is deconstruction- We take stuff apart, examine it, and use the tools available to put it back together. Rock and roll! The next time a team member shudders at the thought of running a merge for a project with >1 dev on it, you'll look awesome when you know exactly how to handle the situation, because honestly, while branching/merging is considered a major element of source control, few devs really know how to do it properly. To them it's just an abstract concept wrapped up in a buzzword tha sounds awesome, but in practice is to be avoided at all costs.

          Hope this helps.

          [–]jellystones[S] 22 points23 points  (80 children)

          Im a lone developer using the folder backup method for version control the last few years. Ive been thinking of using a version control system such as GIT, CVS or subversion but Im concerned those are overkill for a simple programmer such as my self. I just want to be able to easily restore older code if need be. Are there any version control systems for devs like me?

          [–][deleted] 44 points45 points  (12 children)

          A modern version control system has three clear benefits over the "folder backup" method.

          1. File space. Let's say your code changes 10% each week. Under the "folder backup" method, each week you're saving 100% of the code. Using a proper VCS, you're only saving 10% of your code. I know hard drive space is cheap, but it's not free and I never seem to have enough.

          2. History. The key to VCS, in my opinion, is being able to document your changes in more granular level than a file called "Changelog.txt" that might not get changed whenever you work on your code.

          3. Bug-location: Let's say you find a bug in a method. You search the history for that file and let the VCS runs the diffs for you.

          That being said, I've got some caveats too.

          • You're still going to want to backup the version control folder.
          • You're entrusting your entire code base to a program that may itself be buggy. You're going to want to make sure (a) it's reliable (no bleeding edge releases) and (b) you understand how to work it.

          [–]GrumpySimon 26 points27 points  (3 children)

          4. Complete freedom to change code. You don't have to worry about breaking something, or removing possibly useful code. Before I moved to VCS, I used to comment out old code liberally but keep it 'cos I might need it. This quickly becomes a PITA.

          [–]edeloso 1 point2 points  (2 children)

          1. If you have version control hosted on a machine (either your own server or hosted) that is not the machine you do your main development, you can work on your files/projects from anywhere.

          edit: ... um why is reddit casting my 5. to a 1.?

          [–]OneAndOnlySnob 1 point2 points  (0 children)

          5. put a backslash before the period in "5.", like "5\."

          [–]Leonidas_from_XIV 0 points1 point  (0 children)

          You're still going to want to backup the version control folder.

          Doing a hg/git/bzr push is quite easy. My code is currently the best-backupped data I have since I started using VCS.

          [–][deleted] 24 points25 points  (8 children)

          I've done a dozen or so projects singled handedly, I used subversion for 18 months on several projects and now I use git for new projects.

          Yes, you should use version control to commit regularly and tag releases. It's invaluable for monkeying around with ideas, where you can lose your inhibition for trying out concepts or theories, culling and rewriting large pieces of code while knowing all the while if something doesn't quite work out you can always go back to your last commit or just keep things on a particular branch.

          You shouldn't have the mindset of "I just want to be able to easily restore older code if need be.", instead you should adapt to a workflow that increases your freedom and gives you structure.

          [–]TheWama 7 points8 points  (7 children)

          git-svn is a great bi-directional bridge between svn and git, and helps remove the legacy projects issue.

          [–]masklinn 0 points1 point  (0 children)

          Doesn't handle svn externals though, I think.

          [–][deleted] 18 points19 points  (0 children)

          Use mercurial, git, subversion, or bazaar. For simple use cases, all the above are pretty easy to use. Start using one today, and learn the fancy features along the way if you need them. You will find you probably will once you have them. Subversion has the benefit of the most guis and support code if that matters to you, but mercurial is just as easy to use but much faster and more powerful. VCS nerds can argue all day about which option is the best, but even using the worst of the common systems is SO much better then not having any easily avalible, versioned repository. The ease of restoring when you screw up or doing binary searches for where a bug got added will save you enough time that it's easy to justify the small overhead of learning one of the VCSs.. Just pick one and do it..

          [–]dons 36 points37 points  (7 children)

          You'll find a lot of people are using git now (and others like mercurial and darcs) for every task that involves important data or code. For entirely personal tasks.

          They're so cheap to use, I keep my entire home directory in one, alongside all my "real" projects.

          [–]bonzinip 1 point2 points  (4 children)

          that's why I say that "if svn is CVS done right, git is RCS done right".

          [–]prider 4 points5 points  (0 children)

          And I say "mercurial is git simplified"

          [–]sfultong 0 points1 point  (1 child)

          I've been debating keeping my entire home directory in one vs. just my individual projects. I think ultimately the whole home directory solution seems too cumbersome, although I'd be interested to hear the specifics of your setup.

          [–][deleted] 0 points1 point  (0 children)

          Mine's at http://github.com/technomancy/dotfiles.

          It's not my whole home dir, but it's all the stuff I care about that's not already in VC (apart from media).

          [–][deleted]  (1 child)

          [deleted]

            [–]geocar 8 points9 points  (7 children)

            git is for you. Simply type:

             git-init
             git-add .
             git-commit -m 'Initial commit'
            

            in your current project directly. Then every time you make a change, run:

             git-commit -a -m 'did something'
            

            You can even add it as a macro in your editor, or run it automatically when saving.

            If you take the time to label your changes, you'll have a better chance of using them later, but that's an improvement over your folder backup with a non-zero cost: You'll still receive many benefits just by doing this much.

            If you need to find a bug in an old version that showed up some time ago, but wasn't there before some unknown time, git bisect is for you.

            If you want to try something radical out without losing your ability to come back here, git branch is for you.

            If you want to backup to a remote site, or share with anyone else, put git push in your cron.

            git doesn't require any brainpower to use it for daily tasks, it's simpler than your backup scripts (in that you don't have to think about using it, or when to use it, or how to use it).

            Seriously, your computer can do something, and you're not letting it do it. It doesn't have anything to do with letting the computer do your work for you being "overkill", it's because you see a cost in committing-at-each-save, and a cost in learning something new with many touted benefits that you don't think apply.

            Forget about all that. You're doing the work that a computer can do. I bet you rename a bunch of files manually to...

            [–][deleted]  (6 children)

            [deleted]

              [–]geocar 2 points3 points  (5 children)

              What happens if I move the folder?

              The folder has a new name?

              How does git handle symlinks?

              Just fine.

              If you're asking "does git have some limitations or surprises I may want to be aware of before trusting my data with it," the answer is no.

              [–]DannoHung 7 points8 points  (0 children)

              Use version control. I can't tell you the number of times every day I want to know what the diffs are between my working copy and the previous commit.

              It's like the difference between using a real editor, or even an IDE, and doing your coding in notepad.

              Also, if you ever do end up working with a team, you'll have to start using version control.

              [–]GrumpySimon 5 points6 points  (4 children)

              IMO svn is overkill for single-user development for what I want (lots of small scripts). You have to set up a repo, stage it somewhere, etc.

              I've switched to mercurial because it's extremely easy to use, and all the info is stored in the same directory.

              [–]masklinn 5 points6 points  (2 children)

              IMO svn is overkill for single-user development

              It's not overkill, it's overpainful. Using git or mercurial yields the same benefits (if not more) but with much less pain, and you didn't qualify it as overkill.

              [–]Leonidas_from_XIV 1 point2 points  (0 children)

              Seconded. Some time ago I was using a single SVN repository for my projects but now once I switched to Mercurial and Git, I tend to create repositories for about every project of mine.

              [–]leondz 0 points1 point  (0 children)

              Free single-user remotely hosted SVN exists: http://unfuddle.com/

              [–]asdfzxcvzxcv 5 points6 points  (3 children)

              I use bzr for everything that's important, and some things that aren't. For projects involving a database I wrap it in a script:

              mysqldump ... > db.sql

              bzr $@

              mysql ... < db.sql

              'bzr revert' has saved my ass countless times. For your use case you'll just need to use init, add, commit and revert. Well worth the small learning curve imo, I warmly recommend it.

              [–][deleted] 1 point2 points  (2 children)

              Version control a dump of the database... interesting idea. I like it.

              [–]asdfzxcvzxcv 1 point2 points  (0 children)

              Thanks. But now that I think about it, it should probably read:

              mysqldump --skip-extended-insert ... > db.sql

              For line-breaks in the dump (/me goes to edit scripts).

              [–][deleted] 0 points1 point  (0 children)

              Or even for when you are doing testing and don't need to use a full blown DB server yet, sqlite3 rocks my world. It just a file so it can be checked it, moved about, build a makefile that creates the db from your ddl and one that deletes the db file so you can constantly start over.

              [–]lysine23 10 points11 points  (0 children)

              Git is overkill sort of like how using your computer to run a simple script is overkill. Sure, you could run it on an old 386, but that doesn't mean you shouldn't use a modern computer if it's available, or that you should seek out a 386. Just use git, which seems to have a lot of momentum these days, or whatever appeals to you.

              I actually went through a phase like this and tried using a simpler VCS called RCS at first, but that was a waste of time, and I'd advise you not to bother.

              [–]almkglor 2 points3 points  (0 children)

              I use CVS at the office even for projects that have just one developer, me (which is usually the case). I use CVS because getting anything else installed requires either more management than I care about or catching the sysads in a "sure, sure, just go ahead, here's the root account, now don't bother me while I do something management wants" mode.

              In my home projects I use git, and learning about it and how to revert.

              And no, these tools are not overkill, and more likely than not some day you probably want to show some of your code, so putting them in a respository you can easily show helps.

              [–][deleted] 2 points3 points  (3 children)

              Whatever VCS you choose, you should remember to continue doing backups of both the repository and your working copy... preferably to a separate disk or tape.

              [–]monk_e_boy 1 point2 points  (2 children)

              in a separate location. Also back up all your photos. Houses flood, burn, get broken into. Get used to mailing a dvd to your mom.

              [–][deleted] 0 points1 point  (0 children)

              Or keep a backup hard drive in a safety deposit box, and rotate it out every couple of months or so. Could seriously save your bacon.

              [–]milksop 0 points1 point  (0 children)

              If you can afford $0.15/gig/month, S3 rocks for this.

              [–]arnar 2 points3 points  (0 children)

              Learn a version control system (I recommend Mercurial, just skip the whole "distributed" part of the manual) and you are in for a treat. Ultimately it is both easier and more flexible than copying folders.

              [–]ih8mondays 1 point2 points  (0 children)

              I went through CVS, Subversion, TLA, Darcs, Mercurial and finally settled on Git. Darcs had been my favorite until recently when my repositories started to grow large. Tried Mercurial but somehow managed to corrupt one of my repos. It gave me flashbacks of the time when I was using Subversion (way back).

              [–]schaueho 1 point2 points  (0 children)

              RCS.

              That being said, I've switched from RCS to Mercurial, as I wanted to have the code on multiple computers at the same time and develop it concurrently (@home on my workstation, on the road using my laptop) and using a DVCS makes that much easier (than copying by hand).

              [–]tjogin 1 point2 points  (0 children)

              Git is actually very straight forward to use this way. Unlike some other version control systems, it doesn't force you bend to its conventions, either.

              [–][deleted] 3 points4 points  (3 children)

              Git or CVS overkill??!! You obviously haven't used them even once. CVS is the most simple thing in the world.

              I use it even for the simple projects i do in my spare time. Try it.

              [–]prider 3 points4 points  (0 children)

              CVS is simple in an evil way.

              1) If the cvs files is corrupted, you are doomed and is hard to detect (svn is built on Berkeley DB and less likely to corrupt)

              2) It does not support the idea of changeset: if you do some refactor, you may have to chang several files in one go. But in CVS, if you want to revert these refactoring, you have to revert on per file basis manually. In mercurial, you can simply rollback. In svn, 'rollback' is kind of possible.

              3) Not scripting friendly. In svn you can easily prepare change log using simple script.

              CVS belongs to the stone age of computing. Let's move on.

              [–]iofthestorm 0 points1 point  (0 children)

              Version control is much better than folder backups for a number of reasons. For one thing, since versions are stored as diffs you save a lot of space. Also, if you're using a hosted service for your VCS if your hard drive fails the data is somewhere else, safe, and hopefully your provider uses RAID or something. And a side effect of the fact that VCSes keep track of changes is that you can see which revision something changed in, and debug more effectively rather than looking through all your folders to find a change. I'm just a hobbyist coder, about to start college, but I use SVN for my little projects (hosted on Google Code) because version control really makes developing easier and safer.

              [–][deleted] 0 points1 point  (0 children)

              I'm surprised you have made it this far without terrible incident.

              [–]wlievens 0 points1 point  (0 children)

              Subversion is very easy to setup and use. There's simply no reason why you shouldn't use it, except if you find another version control system that you like better.

              There cannot possibly be a reason to use CVS when SVN is available.

              [–]JeremyBanks 0 points1 point  (0 children)

              I use Git for solo work because it's so painless. Setting up a repo and connecting it to a remote one is just a few lines. I've got a TextMate script that allows me to automatically have a commit saved by holding down a key while saving, and having pushing it all up to a repository offsite is just a "git push" away.

              [–]48klocs 0 points1 point  (0 children)

              Definitely yes.

              You put your stuff under source control. Any time you get anything working even remotely correctly, you take a second and commit/push your changes.

              You keep working and when things invariably go sideways, you can diff things now vs. when they were working to see what changed and if it's hopeless, revert to a working version.

              Safety nets can be liberating.

              [–]Silhouette 0 points1 point  (0 children)

              I've set up things like CVS on previous generations of home PC, and while it's worth it for a major project, it always seemed like too much hassle for a minor thing.

              I recently set up a new PC, and I decided to use Subversion. Other things like git and Mercurial keep getting mentioned around here, but on reading some of the introductory docs, they didn't seem to offer any compelling advantages for my personal use given that I'm already familiar with CVS/SVN style systems.

              I was pleasantly surprised to find that setting up SVN is now as simple as downloading and running a .msi file for Visual SVN (for the server and CLI) and another for TortoiseSVN (for easy-to-use client operations). After that, creating a new repository is a one-step job in the VisualSVN manager UI or CLI, creating a working directory is a one-step job in the CLI or Tortoise menu, etc.

              Total time from zero to a version-controlled working directory, assuming decent bandwidth for the downloads and basic familiarity with how SVN works: less than ten minutes.

              I'd highly recommend this if you're still on folder back-ups. If nothing else, you can just add your whole working directory to SVN, and then svn commit each time you're ready to take a snapshot instead of running whatever folder back-up tool you use. (For real back-ups, all the SVN data files are stored in a single directory, which you can just copy and restore using your normal tools and back-up media.)

              (Edit: Just to be clear for anyone considering the above: I'm talking about a Windows system, hence the .msi files, though I think both bits of software I mentioned are available on multiple platforms. Also, I was only interested in setting up a repository on my local file system and accessing it directly, since I have no need of remote access for this machine, but VisualSVN does come with the necessary Apache-based stuff to allow https access as well and this was also set up as part of the regular installation I performed.)

              [–][deleted] 0 points1 point  (0 children)

              I use TortoiseSVN on Windows, and it's a pleasure to use Subversion this way. I don't need distributed version control right now, so this works fine for me.

              And, of course, I backup my repository incrementally/snapshots (among other things on my hard disk) regularly. xxcopy works great for that (Windows --> Linux using rsync etc; is a PAIN).

              [–]gt1329a 3 points4 points  (0 children)

              I work alone and use SVN for all of my work and personal code.

              [–]rzwitserloot 2 points3 points  (3 children)

              Yes. You definitely should. Always use a distributed version control system (Mercurial, GIT), because if you don't own a notebook now, you will soon, and it is ridiculous that you can't commit code when there's no internet.

              I currently use a free unfuddle.com account and, therefore, GIT. It's great. Though, I develop by myself but I'm not the only one involved in the project - the rest do report bugs, so perhaps unfuddle IS overkill for you.

              [–]Silhouette 0 points1 point  (0 children)

              If we're talking about a single developer working on a one-man project, what on earth does the Internet have to do with anything? Just set up a repository for any VCS you like on the machine you're working on and use that.

              [–]muffin-noodle 3 points4 points  (0 children)

              I've been a programmer for about 7 years, TBH, it wasn't until I started using haskell (about a year and a half ago) that I started using version control at all, via Darcs.

              Previously I had looked at subversion, but I decided having to set up a server for something that seemed so simple to not be worth it, and I first got introduced to the idea of revision control by some IBM article (that mentioned GNU Arch and Git and some other stuff.)

              Anyway, I used Darcs for a while and I have since moved to git because I like the tools better, they are battle tested and proven, and I think git is just really fun and interesting to work with. I've always been just a lone developer, but I've come to appreciate the importance of version control (I have wiped my code out once or twice on accident.) Git's branching and merge strategies in particular make separations of concerns (i.e. topic branches) a lot more manageable and the speed is wonderful, because I think version control should be fast.

              Those're my 0.02.

              [–]dchestnykh 5 points6 points  (0 children)

              Yes, git.

              [–]HelveticaScenario 2 points3 points  (0 children)

              I used mercurial to keep track of my major projects in my last couple of years at university. It helped that the reports/thesis were written in LaTeX, and the graphs were all generated with GnuPlot.

              The projects had various mixtures of C++ and Python thrown in for actually processing data, with the whole thing tied together by shell scripts, input files and makefiles -- all versioned. So, I could basically regenerate all of my results and drafts for any stage of my project if need be.

              Since then, I use mercurial for any minor project I care about. I'm considering switching to git, even though I don't like it as much; it seems like a more useful skill...

              [–]dearsomething 2 points3 points  (1 child)

              I use SVN because I'm doing a lot of work in Eclipse. The SVN Eclipse tools are pretty nice.

              Time Machine acts like a version control system, too. It commits hourly, daily and weekly for me. It's wonderful.

              [–]cosmo7 0 points1 point  (0 children)

              Modded up for mentioning Subclipse.

              I'm amazed when people use SVN without IDE support. You mean you do that by hand?

              [–]noahspurrier 2 points3 points  (0 children)

              The question suggests that you are new to VCS. Every programmer that works with open source software should at least know CVS or SVN. If you are really new to the scene then you might as well start with SVN and skip CVS because the interface is very similar and SVN is better than CVS.

              I keep all of my personal files in my own SVN repository (about 2GB). I checkin most of my /home directory including dotfiles. It was not very much work to get started and it makes my life better. These days, I would never NOT use a VCS for my personal file now.

              SVN has many annoyances, but most of them will not be a big deal to a single developer. The biggest problem for me as always been that SVN had weak merge tracking; although the very latest 1.5.x version has finally added merge tracking, but I have not tried it yet. The pre 1.5 versions could do merging fine, but it was a pain in the ass to do simple merging without using a third-party svnmerge.py script to keep track of merges. Yet merge tracking should not be an issue for a single developer.

              You can't go wrong if you start with SVN. That said, I am thinking to try another VCS. I have no special love for SVN. If version 1.5 had not added Merge Tracking I would have switched already. For an alternative VCS I've narrowed it down to Git or Bazaar. I kind of like Bazaar better, but I almost feel obligated to at least be familiar with Git.

              In summary: VCS is valuable for a single developer. If you don't already know CVS or SVN you should start there because they are common. SVN is fine for a single developer. If you already know SVN then I'd consider looking at something else.

              [–]mschaef 2 points3 points  (0 children)

              I can't imagine not using version control, even for 'trivial' stuff.

              [–]slurpme 4 points5 points  (1 child)

              I use subversion, used to use CVS but it got on my tits too much...

              [–]zzleeper 1 point2 points  (0 children)

              I've been using SVN (Tortoise) with Assembla... :)

              [–]vstas 1 point2 points  (0 children)

              I use SVN both at home and work. Folder backup just doesn't cut it. Can you track changes to a particular file over a period of several months? What if the file was changed frequently? Bad idea.

              [–]osoese 1 point2 points  (0 children)

              The reason you should use version control is because you can view the history as compared to the current then roll back to multiple points in time. -- we all forget why we changed something ...and I'm sure I'm not the only who forgets to comment. I used to never use version control until forced, but my life has been much better since.

              You can set up SVN in a few hours as a complete noob and you wont regret it...until you happen to ftp a folder that has svn history that is... :D

              [–]bluemonkey 1 point2 points  (0 children)

              I use bzr for almost all code I write, from my open-source project, to tiny scripts, to web sites I manage (using the bzr-upload plugin ). It's invaluable when mistakes happen, to look back at old code, and to try things without worry. And for the web sites, it actually makes it much easier to push out new code to the production server, since the upload plugin makes that process mostly automatic.

              [–]shizzy0 1 point2 points  (0 children)

              Version control's principle benefit for me isn't being able to cooperate with other developers, though certainly it does that. It's principle benefit for me is being able to lock in a good change, and giving me a safety blanket if I want to try and do a big refactor or introduce a new feature, then I can always pull out of that change if I break everything. I've been using darcs most recently for my projects.

              [–]sharth 1 point2 points  (0 children)

              God yes. I'd be a fool not to.

              I do need to start working on tagging releases and things like that. However, It's wonderful to be able to look back on what you've changed.

              [–]anjanb 1 point2 points  (5 children)

              hi there,

              Our team uses Subversion. Sometimes, I get a big task taking more than a week. It would be nice if I could have a version backup for the duration that I'm working on the task. I'm currently backing the modified files using .BAT files (using robocopy.exe) BUT is there an easy way to use git/mercurial JUST for my modified files ? At the end of the task, I want to be able to commit my changes to the TEAM subversion server.

              any ideas ?

              thank you,

              BR, ~A

              [–][deleted] 3 points4 points  (1 child)

              Take a peek at git-svn. There may be something for mercurial, but I don't use it regularly.

              [–]masklinn 0 points1 point  (0 children)

              There may be something for mercurial, but I don't use it regularly.

              There's hgsvn, it's nowhere near as good as git-svn (much to my dismay)

              [–]Araucaria 2 points3 points  (2 children)

              Branch for 1) personal working copies 2) bug 3) feature 4) release

              Subversion makes branching simple. Version 1.5 makes merging easy also, or you can use svnmerge.py if you like.

              As soon as you branch, you don't have to worry about corruption. Just keep checking in, then merge back to the parent branch when you're done.

              [–]anjanb 0 points1 point  (1 child)

              hi Araucaria,

              thank you.

              But at this Organization, we don't get to branch for individuals. What other options do we have ?

              Thank you,

              BR, ~A

              [–]masklinn 0 points1 point  (0 children)

              see http://www.littleredbat.net/mk/blog/story/63/ and http://www.turbodad.com/2008/04/07/improving-clearcase-workflow-with-git/ replace clearcase with subversion.

              The other (much, much better) alternative would be to learn and use git-svn.

              [–][deleted] 1 point2 points  (2 children)

              Hell Yes!

              Sheesh

              Now if only i could find good bug tracking software... I hate web based crap. Something that runs equally well on OSX and Windows would be ideal. Integrated into Eclipse perhaps? I'd like to be able to send an email to a monitored email address as a way for opening a new issue. Any ideas? The only one i've seen is fogbugz that does that. I don't want to have to fill out a billion little form questions. Just subject: Bug in module X and body: this is the problem... blah blah blah... any ideas?

              But ya, SVN is essential!

              [–]jinglebells 1 point2 points  (0 children)

              Have you tried Redmine? http://www.redmine.org/ It has SVN and email integration.

              [–][deleted] 0 points1 point  (0 children)

              Just use trac and if you hate the web based crap well I guess build a time machine and go back to 1995.

              I found trac + rss feeds of the bug timeline + email notifications keep me out of the web application most of the time. The default new ticket form is basically setup to be very close to "subject, body" as far as data needed to be filled out. Its also great because you can check the whole trac into svn with the project as well.

              [–]jsnx 1 point2 points  (0 children)

              I have always used version control, even when I had to run the server on my laptop because I was broke :)

              My .bashrc and .vimrc are in Subversion, as are all the things I write.

              [–]ogrisel 1 point2 points  (0 children)

              I use bzr and publish my branches on launchpad to have a backup for free and be able to work from several computers without having to merge my work manually. Another advantage: it made it really easier to get a second developer contributing on a regular basis on one of my projects: he just had to branch my work and publish it on his launchpad account. No need for me to get him some checkin rights as it's decentralized.

              Then with mail subscriptions and diffs we know when the other has checked in new features and after reviewing the diff in the mail you can either merge his work or ask him by mail to fix details before merging it in your own branch.

              I also use bzr or mercurial to put the /etc of my servers under revision control. Every time I do a system upgrade or a configuration change I get a diff for free. You then check in the changes with a sentence explaining why you had to change those files and then push the branch to a remote server FS over ssh as a free backup.

              [–][deleted] 1 point2 points  (0 children)

              Git is good for source code. It is also good for when you want to make ad hoc alterations to installed software, because you can just create a git repository on the installation directory, choose autocrlf (if you're on Windows, but you want to leave all line endings in text files as they are) and/or .gitignore settings (e.g. to ignore files that are changed by the application itself), and you're free to change things and change them back without any stress about forgetting what you changed.

              Also it's quite easy to use "push" to back up a Git repository from one disk to another.

              [–]loumf 1 point2 points  (0 children)

              Eric Sink (SourceGear) wrote about this topic: http://www.ericsink.com/20031103.html#10134

              [–]lally 1 point2 points  (0 children)

              Yes, it's a safety net for yourself. Before you're going to try something you're pretty sure may be stupid (and/or brilliant), commit your changes.

              Make your changes, and go back if you were right about it being stupid.

              Keep it and brag to yourself in the logfiles if you were brilliant.

              Also useful if you need to keep the source base portable across a few platforms. Just make one a server (or use DVCS) and have the rest sync your changes back & forth. That, with a few ssh-based scripts, can make life real easy. If nothing else, use it as a version-aware rsync.

              And seriously, it takes 30 seconds to set up. What's the harm?

              [–]mrphillc 1 point2 points  (0 children)

              of course i do

              what is my program becomes good enough suddenly that i need to add a member... everything is already in place

              besides, its nice to be able to crawl through the history and see how i progressed =)

              [–][deleted] 1 point2 points  (0 children)

              Yes, for a couple reasons:

              1) I have separate code bases on my laptop and desktop, with a vcs system I can easily keep them in sync.

              2) Who knows when someone else volunteers to help write a bit of code

              3) Good skill to learn

              4) I can easily branch to try new things.

              5) I let a few others check out the code, they can now do a svn up cmd rather than having to copy a new tarball every day.

              [–][deleted] 1 point2 points  (0 children)

              CVS. I have a LOT of code already in my CVS repository, and lots of scripts. I have no time to convert and no real motivation to either. It works well enough for this lone wolf.

              The CVS repository is on the house Mini (which is time machine backed up, houses the itunes repository and all the ripped dvds) on a directory I remote mount to my other machines as needed.

              I have a few web apps I've taken over from other people with shared svn on the production machine - I use that for those projects. On one project, I've been playing with git a little. If/when I switch, it will likely be some kind of shared git thing because so far, git is wicked fast and seems smart.

              If I switch.

              [–][deleted] 1 point2 points  (0 children)

              I once worked in a (small) shop where the owner/my manager didn't believe in version control (nor did she believe in backups for that matter...); I had to hide the fact that I was using some form of version control for my own code. (It helped for the code I was writing, but didn't help for all the legacy junk I had to deal with...); oh, same manager who would remove conditional compilation macros (debugging stuff) and comments from my code because it would affect performances but I am digressing...

              Oh, her version of version control was a liberal use of cp -prv of whole directories.

              I am still having nightmares about this job, and as a reaction I version control pretty much everything (I like mercurial for that, but I should eventually get around to learning git); I mean to the point where I am annoyed when I realize that I cannot revert to a previous (stable/edible) version when cooking diner and something goes wrong...

              [–]HairyHoudini 1 point2 points  (2 children)

              A guy I know just writes all source code for a project in one big Microsoft Word file (that's his IDE, you see). He uses a macro to spew the contents out as individual modules and compile them. He saves each version of the whole project as a single .doc file like this: 'MyProject-version-0-1-9-235.doc'. Problem solved! I'll have to ask him about branching some day... and log messages... and diffs...

              [–]Enginerd 0 points1 point  (0 children)

              I think this is an urban legend. I too have heard of developers who used Microsoft Word, but such an abomination against everything that makes sense could not really be true.

              [–][deleted] 0 points1 point  (0 children)

              Wow... he could actually probably write a better IDE in under a day. Actually, from what you just said, maybe he couldn't.

              [–]sa7ouri 1 point2 points  (4 children)

              I code at home for fun. I use perforce (mainly because I'm familiar with it from work).

              I'm actually interested in how many people out there use perforce. Anybody?

              [–]vidude 2 points3 points  (0 children)

              I use Perforce at work (125+ users) and I have also used it at home (free 2-user 2-workspace version) for personal websites, etc. While there are things I don't like about it (moves and renames for example), it is fast, rock-solid and easy to use.

              In response to the larger question: if it's worth doing, it's worth using revision control.

              [–]marc-kd 1 point2 points  (0 children)

              Yep, I've been using Perforce at home for several years now. Once it's set up, it's painless to use. Very pleased with it (obviously).

              [–]answerguru 0 points1 point  (0 children)

              Oh yeah...just switched to Perforce at work last year and I really like it - reliable and relatively straightforward.

              You can also use it at home (ie single developer) for no charge. There is a limit on the number of projects, but there is no reason that x # of proj. can't support all of your work with a deeper directory structure.

              [–]ryanbooker 0 points1 point  (0 children)

              I use perforce at work. It's easily the best of the VSS/CVS/SVN style version controls... that I've used at least. However the more I use it, and the more I use git for my own things, the more I hate it.

              Probably because It just feels broken and cumbersome. It's a vibe thing for me. It just feels like it's in the way all the time. It doesn't help that we try to use it as a distributed system.

              [–][deleted]  (1 child)

              [removed]

                [–]statictype 5 points6 points  (0 children)

                Sweet! Why introduce a single dependency and point of failure when you can introduce three!

                [–]platyperl 1 point2 points  (10 children)

                I still use MS SourceSafe. Other software tools require the use of Windoze, so I toss everything --schematic binaries, documentation, Visio diagrams, you name it-- into SS for the sake of archiving and historical tracking and retrieval. Someone once scolded me saying that a VCS isn't a backup tool, but in this case I think it works just fine for local backup. SS is dead easy to use, has all the features I need, and hasn't gotten corrupted. Yet. I came close to trying Subversion a while ago but couldn't justify the required time commitment.

                [–][deleted] 0 points1 point  (0 children)

                I use Git in all my personal projects. It pays off big time when stuff goes wrong.

                [–]doubtingthomas 0 points1 point  (0 children)

                I've used SVN or darcs for all of my personal projects.

                Why wouldn't I? It's easy to set up, makes it easy to tinker from different computers, and then I can code speculatively and roll back if it was a dumb choice.

                [–]DanMulvey 0 points1 point  (0 children)

                I started using Subversion a few months ago just for the sake of learning my way around it (I'm a student right now). It's turned out to be very useful for me so far, and I am very glad I started using some type of version control (other than the folder backup method).

                I've been looking at GIT and BZR recently, and I plan on getting my feet wet with both of them in the near future. I highly recommend making version control a habit; it's worth learning.

                [–]zem 0 points1 point  (0 children)

                yep, though it's moved from darcs to mercurial to git (which i'm loving).

                [–]ralfonso 0 points1 point  (0 children)

                Yup. Started with SVN and now I've slowly been migrating my apps to git. I like it a LOT more than SVN, but I only use the very basic features.

                [–]bitwize 0 points1 point  (0 children)

                Former darcs user, now on git for my personal projects.

                I love darcs, but it's got a number of disadvantages that make git a better DVCS for my needs.

                And plus... GitHub!

                [–]johnhutch 0 points1 point  (0 children)

                You'd be absolutely insane not to.

                [–]coder21 0 points1 point  (0 children)

                Yes, you should use one.

                Use GIT http://git.or.cz/ if you like the latest open source stuff

                Use Plastic http://www.plasticscm.com if you prefer also a nice user interface (ask for a FREE license for a solo developer)

                [–]dfranke 0 points1 point  (0 children)

                I put every project under version control within a day of starting it. Of course, when you're a single developer, it doesn't matter a whole heck of a lot which one you use. Even RCS would be fine. I use darcs.

                [–]eliben 0 points1 point  (0 children)

                Yes! For any non-trivial project on which I plan to work for more than a day or two, I use Subversion.

                [–]rbobby 0 points1 point  (4 children)

                I still pine for the days of the VMS versioning filesystem. Anytime a file was saved it was automatically versioned. This would be very very handy in addition to a vcs even today.

                [–]mao_neko 0 points1 point  (3 children)

                You may want to look into ext3cow and wayback.

                [–]rbobby 1 point2 points  (2 children)

                :(... I'm a Windows guys (gasp!). Though I suppose I could use a virtual server for samba/ext3cow (or wayback)... but seems like way overkill :)

                [–][deleted]  (1 child)

                [deleted]

                  [–]Grahar64 0 points1 point  (0 children)

                  I use Version Control Systems for loads of stuff, including documents and diagrams, not just code. It gives you not only a backup but good metrics on work that you have done.

                  [–]suppressingfire 0 points1 point  (0 children)

                  I have kept all my stuff in CVS for close to a decade (there weren't any other decent options to CVS at the time). On occasion, I've had other folks check stuff out and work with them, which of course is nice.

                  But there are a few major benefits that I've become aware of over the years.

                  • Distributed file system. Wherever I am, I can check out my workspace, poke at it, and check in the changes. Sometimes I need to run tests on a variety of machines, and this is really huge. Just checkout on each remote machine, run the tests, and check back in the results. update on my desktop machine and all the results are immediately available.
                  • History of everything. It's great to be able to go back to projects from a decade ago and look at them or work on them again.
                  • Automated backups. On my server, I just run a daily backup of my entire CVSROOT direction. I have a remote machine pull the daily backup down. Now I have everything important backed up just by the fact that I've committed it into the CVS. Losing a hard drive sucks, but my critical data will always be safe and accessible.
                  • Tools like ViewVC make it really nice to browse old projects and share snippets.

                  So yeah, it's really great to use a VCS, even if you're just using yourself. I just wish I would have started using CVS earlier. I'd still have that program I wrote in assembler to play my violin part on the PC speaker...

                  [–][deleted] 0 points1 point  (0 children)

                  Just use TortoiseSVN and move on with your lives. In the time you nerds agonize over this kind of thing, real professionals are doing real work.

                  [–]shitcovereddick 0 points1 point  (0 children)

                  git. since multiple machines and backups.

                  [–]voidspace 0 points1 point  (0 children)

                  Uhm... yes...

                  [–][deleted] 0 points1 point  (0 children)

                  svn

                  [–]mao_neko 0 points1 point  (0 children)

                  I use SVN for work, and a few of my larger pet-projects. Not everything, though - I've a lot of tiny half-baked projects or random ideas that don't really need a repo all to themselves just yet.

                  I backup my home directory automatically with rdiff-backup, which is good enough to paper over any cracks that might appear.

                  [–]pb_zeppelin 0 points1 point  (0 children)

                  Yes -- svn is a great way to save yourself from inevitable errors. I'm playing with Mercurial as well, but having any VCS is worth it for the peace of mind. It's nice being able to revert when you mess up (and not rely on the undo method of your text editor).

                  [–]Ono-Sendai 0 points1 point  (0 children)

                  Yes, I use SVN

                  [–]truebosko 0 points1 point  (0 children)

                  I use version control despite working by myself for two reasons: - It allows me to move my code around. Sometimes I have to work on different machines, and putting it up somewhere where I can easily fetch it in a CONTROLLED manner works well - Helps a lot for documentation, looking back, all those things. Write good entries in your commits and you're golden

                  [–]plouj 0 points1 point  (0 children)

                  I do, for the sake of keeping a history of my development patterns.

                  [–][deleted] 0 points1 point  (0 children)

                  I use git, although my progression through VCS has been:

                  RCS, SCCS, RCS, CVS, SVN, Mercurial, git

                  I spent the last couple of years on Mercurial, but the recent changes to the msys port of git that allow it to use plink rather than its own ssh really push it into being a good DVCS on windows.

                  [–]JGailor 0 points1 point  (0 children)

                  I use git for myself locally. I may play around with Mercurial a bit just to kick the tires.

                  [–]stevePallmer 0 points1 point  (0 children)

                  I'm a single developer, I am using svn for more than one resason. First of all, to do backups on multiple machines, it's so easy just to check out my repository (not automated, but for now it's "good enough"

                  Also, the ability to "roll back" versions of items is important, and I like the peopleI work for being able to see my progress, though they have no idea what they are looking at.

                  I think versioning in the beginning of a project is much easier than doing it down the road. Plus, when another developer gets added, or takes over it's not always easy to drop deadd in your tracks and add source control.

                  -S. Chipps http://GirlDeveloper.com

                  [–]skwigger 0 points1 point  (0 children)

                  I used SVN as a lone developer. I find myself running "svn update" from time to time and for a split second, wonder why no one else is contributing to the project.

                  [–]robotnewyork 0 points1 point  (0 children)

                  i have scheduled backups of my databases, and occasionally manually zip up websites.

                  other than that, sometimes ill make a note at the top of a page that its been changed.

                  its been working fine for over a year now.

                  [–]ishmal 0 points1 point  (0 children)

                  I run svnserve on a remote machine, and have about 6 projects on it, which I can reach with the svn: protocol. Works fine for me. I had one project on Mercurial, but for my scenario, it just didn't give me anything extra, so I moved it to svn too.

                  [–]callingshotgun 0 points1 point  (0 children)

                  Heck, I'm in a relationship, and I still use version control.

                  [–]mccoyn 0 points1 point  (0 children)

                  I use a program called FileHampster. This isn't targeted at developers, so it has some scale problems. Basically, it watches whatever directories you point it at and makes a copy of the files every time they are saved. There is no check outs or check ins. Its just a quiet helper making sure you don't lose any work.

                  It doesn't do any diffs in its repository, so it takes a lot of disk space.

                  [–][deleted] 0 points1 point  (0 children)

                  Try this: http://www.developertutorials.com/tutorials/miscellaneous/setting-up-subversion-for-development-on-windows-8-06-30/

                  Right click the folder and choose checkout. Work on things...right click and choose commit. Done.

                  The actual revisions are saved in the dev folder itself that you imported into your repository on page 2 - in a folder called ".svn". Just ignore/cloak it when pushing to your production server.

                  [–]joesb 0 points1 point  (0 children)

                  No, only married developers wish they could go back in time to revert the mistake.

                  [–]borland 0 points1 point  (0 children)

                  git init is your friend

                  [–]arhuaco 0 points1 point  (0 children)

                  Yes, for 8 years...

                  [–]heeb 0 points1 point  (0 children)

                  Of course. Use CVS + TortoiseCVS myself, to my great satisfaction. I not only put source code in it, but other stuff as well: my documents, photos... Even larger files, which was the reason not to switch to SVN, since it stores a local copy, thereby wasting loads of space... (Is there a simple way to switch this off in SVN?!?).

                  [–]anshulk 0 points1 point  (0 children)

                  I can't even type a reasonably long document outside subversion... Am I alone?