SPECIAL NOTICE
Malicious code was found on the site, which has been removed, but would have been able to access files and the database, revealing email addresses, posts, and encoded passwords (which would need to be decoded). However, there is no direct evidence that any such activity occurred. REGARDLESS, BE SURE TO CHANGE YOUR PASSWORDS. And as is good practice, remember to never use the same password on more than one site. While performing housekeeping, we also decided to upgrade the forums.
This is a site for discussing roleplaying games. Have fun doing so, but there is one major rule: do not discuss political issues that aren't directly and uniquely related to the subject of the thread and about gaming. While this site is dedicated to free speech, the following will not be tolerated: devolving a thread into unrelated political discussion, sockpuppeting (using multiple and/or bogus accounts), disrupting topics without contributing to them, and posting images that could get someone fired in the workplace (an external link is OK, but clearly mark it as Not Safe For Work, or NSFW). If you receive a warning, please take it seriously and either move on to another topic or steer the discussion back to its original RPG-related theme.

using a Version Control System to develop game projects

Started by walkerp, October 12, 2007, 10:29:56 AM

Previous topic - Next topic

walkerp

I'm learning about Version Control software, like CVS and Subversion, in my computer science program.  I have a couple of adventures that I am in the process of writing up and I keep forgetting which version is where on the 3 different computers I tend to work on.  I email it to myself, or ftp it up to my server, with an inconsistent naming protocol.  I just realized, why couldn't I use Sourceforge and actually track my changes and progress.  Is this even worthwhile?  Will it track changes to a Word document?  (I know Subversion handles binaries).  I really don't need all the true power of branching and tags and reverting.  It's more just to have a single document where I can see all the changes I've made and where I have to work.  Also to have access to it from anywhere.

I'm not even collaborating, but if you were, I imagine this could be helpful.

Any suggestions from those experienced with software development?
"The difference between being fascinated with RPGs and being fascinated with the RPG industry is akin to the difference between being fascinated with sex and being fascinated with masturbation. Not that there\'s anything wrong with jerking off, but don\'t fool yourself into thinking you\'re getting laid." —Aos

arminius

Doesn't Word itself have a version tracking feature? I think I've heard that if you use it through too many versions, you can corrupt your document, but if M$ has worked out the bugs, it might be a worthwhile tool.

walkerp

I think you are referring to track changes.  That's okay, but I don't think it accounts for sharing a single document in a repository somewhere that I can access from anywhere.  And also that repository should track my changes outside of the document. I'm not so concerned with the changes themselves, but with having a log of what I have done when, which is what Version Control does for software.
"The difference between being fascinated with RPGs and being fascinated with the RPG industry is akin to the difference between being fascinated with sex and being fascinated with masturbation. Not that there\'s anything wrong with jerking off, but don\'t fool yourself into thinking you\'re getting laid." —Aos

jrients

Have you considered just using google for your documents?  Then you can edit the same doc from any station with a web connection.
Jeff Rients
My gameblog

James J Skach

I haven't used Sourceforge, or CVS in a while.  One of the product we use now, and forgive me but I don't remember the name off the top of my head so I'll have to check it out on Monday - maybe SVN? can track the changes in files, but we use it for text files - huge files of text (hundred of thousands, even millions, of lines of EDI information) and it does a great job.

I see no reason why you couldn't do that with Word files, but I'll have to check on the specifics...
The rules are my slave, not my master. - Old Geezer

The RPG Haven - Talking About RPGs

Halfjack

Walkerp, I have plenty of experience with version control systems both for software and for document management.  Right now, in our Spirit of the Far Future project we use the intrinsic version control. capabilities of the wiki, which lets you comment each edit, compare multiple versions, and roll back changes.  Access by multiple users is handled adequately though extensive branching is not possible.

For components that don't logically go into the wiki (like the source data for generated maps, SVG images, and any software supporting things) I use CVS -- its update/modify/commit cycle is far more effective in actual use than the old RCS/SCCS lock/modify/put model which is prone to all kinds of problems the more distributed your dev team is.  CVS elegantly handles extensive branching (not a feature I use, but it could be in future) and happens to double as an excellent way to sync work on multiple media (I sometimes take a copy of the repository with me on a USB drive and I can take any edits I make there and commit them back to the main repository when I get it home).

These systems work best on text files for two reasons.  First, they mostly use a original plus diffs storage model -- they store the first version and then only the differences between versions.  This is very spce effective and simplifies version comparisons.  You can't store binaries that way because there's no record boundary to calculate difference from (with text you use the line end as the record boundary).

Second you can ember version information in the text file with macros expanded by the version control system so that each file contains accurate information about which version it is and who is responsible for it.  This helps prevent confusion about who is using which version even in the absence of the version control system proper (a file alone in space carries its version number in it) without relying on a human to provide the number accurately and consistently.  Doing this in binary data requires knowledge of the format that may not be reasonable to expect.

So, if you want to use version control (and I highly recommend it even if you are the only developer), CVS is an awesome choice for many reasons (it works, it's easy, you can centralise the repository and get at it over the net, it's featureful, and it has valuable side effects) but you will want to choose a source file format that is plain text.  For documents you can use any XML storage format, RTF, HTML, or even just text.  For images I use SVG and generate binary images as a target, keeping the SVG strictly as the source.
One author of Diaspora: hard science-fiction role-playing withe FATE and Deluge, a system-free post-apocalyptic setting.
The inevitable blog.

jhkim

I also use CVS for all my gaming stuff.  For the most part I don't use branches, but it feels infinitely more secure than just having a bunch of files around that I might accidentally move or delete.  I will sometimes edit on other computers and then merge changes with HTML or text files.

John Morrow

Quote from: walkerpWill it track changes to a Word document?  (I know Subversion handles binaries).

The main issue that you are going to have is that Subversion, for example, has some very nice tools for visually showing the diffs between two source files and for merging source files but I don't think they work on binary files the same way that they work on text files.  Word files will probably look binary to the software.  So while you can do it, I think you lose a lot of the benefit of a text source control system if you aren't saving your work in some sort of text format.  A middle-ground that might work OK is to save your files in RTF format, which is close enough to text that it should be handled as text by Subversion (not sure about CVS) but it will retain most of your formatting, as long as it isn't too fancy.
Robin Laws\' Game Styles Quiz Results:
Method Actor 100%, Butt-Kicker 75%, Tactician 42%, Storyteller 33%, Power Gamer 33%, Casual Gamer 33%, Specialist 17%

VBWyrde

Quote from: walkerpI'm learning about Version Control software, like CVS and Subversion, in my computer science program.  I have a couple of adventures that I am in the process of writing up and I keep forgetting which version is where on the 3 different computers I tend to work on.  I email it to myself, or ftp it up to my server, with an inconsistent naming protocol.  I just realized, why couldn't I use Sourceforge and actually track my changes and progress.  Is this even worthwhile?  Will it track changes to a Word document?  (I know Subversion handles binaries).  I really don't need all the true power of branching and tags and reverting.  It's more just to have a single document where I can see all the changes I've made and where I have to work.  Also to have access to it from anywhere.

I'm not even collaborating, but if you were, I imagine this could be helpful.

Any suggestions from those experienced with software development?

Beware of adding new complications to solve old ones.   The use of source control can be problematic if you aren't used to it, and might be overkill in your situation, since you're the only developer.   Since your problem is a specific one of losing track of the most recent changed files, I would suggest that the simplest solution is to purchase a little keychain usb drive and keep your files on that.  When you want to work on your stuff on any given machine then just pop it in the usb port and you're good to go.  They are cheap and your overhead in terms of administration is minimal.  

On the other hand, if you're purpose is to be able to compare differences (which you would no longer need to do with the usb drive solution) then that's where software like BeyondCompare can help.   Look it up and download it and try it out.  That is a handy, and simple, utility for looking at file differences.   The only problem is that for Word Docs it shows you the raw contents (meaning the Word header machine code), but even then i can still always easily find my text and from that figure out which file has which stuff that I want.   BeyondCompare is very handy overall.    

Lastly, if you feel you will need to Roll Back your changes across multiple versions, which I've never needed to do so far after ten years of working with souce control systems at work, THEN consider Source Control.  The usual case for Source Control is wherre you have multiple people working on the same files and you need to merge changes, and/or will potentially need to roll back changes.   It doesn't sound like this is the case for you.

Keep it simple as possible, is my best advice, and only solve for your actual problem.   Often what happens is you think your solving something by upgrading to more advance software, only to find that your new problem, the new software, is a bigger problem than what you had before.  I would recommend avoiding that.   Best bet:  Keep it simple.

- Mark
* Aspire to Inspire *
Elthos RPG

estar

Quote from: walkerpAny suggestions from those experienced with software development?

Yes It can work particularly for structured documents like adventures. The closest thing in programming is using version control for writing help files and/or manuals for the software.

The only downside, if you can call it that, is that the difference tool isn't as good when you make wholesale changes like in the editing process. Plus you need to pay attention when merging other people's changes.

Also version control works better when you are dealing with text files as opposed to formats like MS Word. I used it with HTML files (for HTML help files) and while not a straightforward it was fairly easy to see what changes there were. If you stick with RTF files in MS Word then you should be ok.

On the  upside doing things like Stat Block correction lends itself very well to version control.

walkerp

Hey thanks for all the really helpful responses.  I'm definitely following this thread, but I don't have enough info or experience to add much yet.  

VBWyrde, you make a good point about unecessarily adding complexity to a situation.  My main goal is to have a single file in a centralized location that I can access from anywhere at any time.  The USB key is pretty close to that, but I'm the kind of guy who often forgets to pack something or runs out of the house with nothing only to find myself in front of a strange computer and an hour to kill. That's why I am looking for a centralized, universally accessible repository.  The version control isn't even all that important.  

I guess I could just FTP back and forth, but when I do that, I end up leaving a copy somewhere and starting to do work on that one instead.

Maybe this is more about my personal discipline than any software solution!:p
"The difference between being fascinated with RPGs and being fascinated with the RPG industry is akin to the difference between being fascinated with sex and being fascinated with masturbation. Not that there\'s anything wrong with jerking off, but don\'t fool yourself into thinking you\'re getting laid." —Aos

estar

A subversion server would do the trick as long as you had internet access.

dar

What you are describing is what GIT set out to solve.

I'm an old CVS hack, used it for years. Subversion sounded good, and others were close, but the golden fleece for me is GIT.

It does FAST whole tree operations. Every clone is just that, a version control clone that I can take with me and work with, I can branch, and check in, and switch branches, to my hearts desire, then easily sync up to the original clone when its available again. I can do independent development until I'm ready or others are ready for my changes.

Its gone through some rough iterations but version 1.5 is pretty sweet. It does binaries and is meant really for source code (i.e. text, though it does have support for tracking Open Office documents).

Git is growing fast and support, third party software, and documentation is blooming out there on the net.

The GIT site is a great place to start.

VBWyrde

Quote from: walkerpMaybe this is more about my personal discipline than any software solution!:p

Perhaps, yes, but it is also the case that setting up an easy to use infrastructure is key to success, given that we are only human.  I also find that in situations like yours I wind up doing the same thing, multiple times, and for no other reason than "I forgot... again".  

Try this:  http://www.xdrive.com/

I did a search in google for 'internet file storage free'.   There's a bunch of options.   See if any of those work for you.  

For me the USB drive solution has worked out well.   I keep it on my keychain, which I'm very unlikely to leave someplace since my car keys are on it.   I got the secure one that has a password in case I do lose it.  

I also got "Handy Backup Pro" which is backup software that is scheduled to run once a night.   It backs up folders on the machines on my network (I have several for different purposes) into password protected zip files, and then loads them onto my usb drive at the end, so every night I get a backup of all my stuff to take with me.  

Between these and BeyondCompare I've found that I'm good to go, and don't loose my stuff anymore.   I just make sure to always work off the files on the USB Drive.   It's a habit worth remembering, I've discovered.   :)

All that said, maybe the simplest solution is to use  http://www.xdrive.com/
or something like it.   I might even switch over and make my life even easier.  :)  

- Mark
* Aspire to Inspire *
Elthos RPG

Halfjack

I agree re: using a USB drive.  That's why I re-started my CVS habit though -- now if I leave my USB drive at work or seomthing I can still work against the main repository on my desktop (or wherever) and, even if I have uncommitted changes on the USB drive -- reconcile it all trivially when the two come back together.

I've also put together a USB drive with the CVS repository on it for a co-developer who doesn't know about version control.  When we meet I plug it in and sync it up for him and all changes are shared.
One author of Diaspora: hard science-fiction role-playing withe FATE and Deluge, a system-free post-apocalyptic setting.
The inevitable blog.