Search code examples
svnbatch-fileassembla

How do I automate subversion, tortoisesvn and Assembla.com?


I am new to subversion, or I have used it a tiny bit, but don't understand how to check in/out files, like I used to do with VSS or QCVS.

But since this new project is for a private mmorpg server, I want to automate check in/out update of the assembla.com repository.

Perhaps using batch files, and through scheduled tasks, to move all my changes to the assembla.com hosted repo, and move all changes others make to my version.

I have the repository on my pc, and assembla all setup, just don't know how to use it, and then instruct my team-mates how to work with it :P

So it's a lot to learn for me, any suggestions, or tutorial links to make sense for someone who doesn't know svn or assembla that well?

I'd appreciate it even more so, with some example batch files.

Thank you for your time..


Solution

  • SVN differes a little bit from VSS with the check out part. VSS locks a file when you check it out. Subversion uses optimistic offline locking instead, that means you can edit any file and then try to commit the file. If someone else has changed the file in between you are not allowed to commit the file, you have to update your local file and resolve any conflicts before you can commit.

    The typical SVN commands you use are svn update to get all remote changes to your local working copy.
    And svn commit to submit your local changes to the remote repository.

    If you are on Windows I really suggest you use the TortoiseSVN client instead of the command line tools.

    Edit
    If you want help with knowing when there are new updates available to svn update you can have a look at SVN Notifier.

    Edit 2
    If you really want to update periodically you can create a windows scheduled task that does just svn update in your working copy.
    I really can not recommend anyone to autocommit to svn, but given the above sentence you can probably figure out how to schedule svn commit too, but be warned you will miss any error messages if the commit does not succeed.