Results 1 to 8 of 8

Thread: Implementation of SVN

  1. #1

    Default Implementation of SVN

    SVN, or CVS, has been rumored for a while now that when we migrate to new hosting, it will be set up. I have no idea if that is true or not (it certainly was an aim initially when we set up hosting), but for the time being, I think we can set up a plan for implementation, and explain what it is. When we finally transfer to new hosting, we'll find out if we'll have SVN for the modders (I'd sure hope so).

    First, I suggest you all read the Wikipedia entries for SVN (Subversion), and CVS in general (Concurrent Versioning System). It will sound confusing, but read through them.
    http://en.wikipedia.org/wiki/Svn
    http://en.wikipedia.org/wiki/Concurrent_Versions_System

    Quickly, what it does:
    Keeps a record of changed files
    Records all file changes
    Allows all users to synchronize files with the server, making sure they are all using the same version
    Provides a repository for files

    Obviously, SVN (and CVS before that) was developed with software development in mind; allowing any number of people, over any distance, to keep track of what other team members are doing, and it also provides versioning control and fallbacks (meaning if a new change crashes the application, you can revert to an older version).

    So how does this apply to game modding, as opposed to game development?

    Imagine you have an FTP, basically, some server space where you can put files. You can organize this any number of ways; each developer can have their own folder, you can just throw all your crap into one folder, you can keep a replica of a RTW/Data folder, and, on top of all that, you can TRY and keep a change-log of all files that were uploaded, when, and by whom.

    Sounds like hell, or what you are currently doing (or do you not even have storage space and are just uploading files to free servers and sending them over MSN!?)? Well, that's why we have SVN.

    What you can do is, essentially, set up a skeleton (or entire, depending on your storage) Data folder on your Hard Disk. You download an SVN client (probably Tortoise), and specify the settings and whatnot for your SVN server, and it will upload whatever is in your project folder you specify onto the SVN server (essentially creating a mirror of whatever folder you specify). Whenever someone changes a file, or adds a file, it will record who, what, and when. This applies to text files, database files, textures, models, anything. Then, to get the changes, you just tell your SVN client to download any new files. When you are ready to commit changes you've made, you just press a button and it uploads any new files. Powerful, eh?

    It takes much of the legwork out of organizing a mod team, especially in regard to file control and updates, which can be a real *****. SVN has become a staple of software development, especially amongst online groups.

    So, what I would like to discuss:
    1. Are there any here with more experience with SVN that can give some more details? I don't use it myself, but the programmers on my development team do.

    2. What is the best way to structure the SVN? I've given but one example, by having a Data folder, basically, as the project. What about art development? Can we figure out a way to version in-progress PSD and .MAX files, instead of just having the finished .texture and .model files in the Data folder? Or is there a wiser way to structure the project folder entirely?

    3. Etiquette. Experience with SVN will come in handy here; what are the do's and don'ts? Obviously, only commit files that you are sure work (this goes for artists as well, unfortunately). Also, make sure to comment your commits appropriately.

    4. Coordination. How will SVN accounts be handled? How will commit legs/messages be handled (an email forwarding account?). For my SVN, I have all logs sent to whatever@bloodandirongame.com. From there, I forward the logs to whoever needs them (all programmers), myself (the team leader), and an email repository (permanent logs of all commits).

    5. Size. What are your current bandwidth and storage space needs, if you own an FTP already? What size is your data folder? How many people are on your team that would need constant SVN access? I do not mod M2TW (actually its still on reserve at Gamestop), but how much larger are the files in general, and the files in total, than RTW?

    Anyway, even though SVN isn't a reality yet, I think discussing, getting input from the modders about what they want and would like to see, and planning a bit, would not hurt.
    Count no man happy until he is dead.


  2. #2
    Simetrical's Avatar Former Chief Technician
    Patrician

    Join Date
    Nov 2004
    Location
    θ = π/0.6293, φ = π/1.293, ρ = 6,360 km
    Posts
    20,154

    Default Re: Implementation of SVN

    I use SVN on an all but daily basis for MediaWiki. I plan to install it once we get the site moved to the new server, time permitting. Basically, it's very simple: you install a program called TortoiseSVN, which is a lovely application that works itself into Windows very nicely. You pick a folder, right-click, and click Checkout. Then you specify the desired URL, and add any authentication info needed.

    That downloads all the files in the repository to your hard drive. From then on, you can right-click anywhere in the folder and select "Update", to update your copy to the latest version, or "Commit", to add your changes to the repository. In the event of a conflict, it will show you what lines each change added, and you can manually resolve it. Any file that's modified will be automatically marked with a special icon, as will any directory containing such files.

    A mailing list can be set up to send out e-mails on every commit. All commits have a summary, and can be made available on the Web (again, possibly passworded or otherwise protected). There are lots of miscellaneous features too: for instance, if you find that some line is wrong, you can use the "blame" feature to figure out what revision it was last changed in, to see who added it. All revisions are numbered for easy reference.

    Multiple branches of code can be maintained. Typically you may want to branch off the latest development version when you want to prepare for a release, and then backport any bug fixes to the branch while keeping it feature-locked for stability. Individuals can also make private branches to be later merged to trunk (the main branch).

    So that's #1. As for the rest:

    2) The way to structure it is to simply follow the structure of the game's directories. Then when you check out a copy, everything will go to the right places, ready to use.

    3) No comment here. Any bad commits can be reversed easily.

    4) Ideally I'd like to set up an admin or two for every team to handle their own repository, so I won't have to personally involve myself much.

    5) The only major bandwidth cost is in checkouts. Commits and updates work with delta compression, so they aren't a big issue, except for committing new graphics files. I don't anticipate any problems with allowing people to upload the full M2TW (minus the EXE!), assuming the SVN copy is private, although they'll probably want to leave out stuff they haven't touched to save bandwidth for themselves.
    MediaWiki developer, TWC Chief Technician
    NetHack player (nao info)


    Risen from Prey

  3. #3

    Default Re: Implementation of SVN

    Well as we may be moving to the new server within 48 hours I think it is time we started discussing this again. Personally I think it is a great idea and something that will attract people to TWC.

  4. #4
    Simetrical's Avatar Former Chief Technician
    Patrician

    Join Date
    Nov 2004
    Location
    θ = π/0.6293, φ = π/1.293, ρ = 6,360 km
    Posts
    20,154

    Default Re: Implementation of SVN

    Don't get too excited about moving within 48 hours, there's a lot to work out. And stabilizing the forums comes well before installing any fancy widgets like wikis or SVN. Ask me about it in, say, a month.
    MediaWiki developer, TWC Chief Technician
    NetHack player (nao info)


    Risen from Prey

  5. #5

    Default Re: Implementation of SVN

    I think we all appreciate the idea of aiming for stability first

    Is there anything on this we should be discussing or investigating in the meantime, though? Repman's post that brought this up again mentioned a few different options:
    Examples of free (some you have to pay) Platforms: sourceforge, berlios, cvsdude, subversion, groove.....
    Both Professor420 and Simetrical seem to be talking about SVN (tortoise), is there a reason why that's the obvious choice or do pro's and con's of others need looking at?

    I'm not pretending to know anything about this, just think it sounds promising and am hoping someone's going to explain to me how to use it (in words of one syllable) when we do get it....

  6. #6

    Default Re: Implementation of SVN

    Quote Originally Posted by makanyane View Post
    I think we all appreciate the idea of aiming for stability first
    Of course, if we don't have stability we don't have a site.

    Is there anything on this we should be discussing or investigating in the meantime, though? Repman's post that brought this up again mentioned a few different options:
    That is why i brought this thread up again, we need to discuss what software we are going to use and who gauge who wants to use it so if Sim is ready to implement it we have people wanting to use it and ideas on what software we want.

    Both Professor420 and Simetrical seem to be talking about SVN (tortoise), is there a reason why that's the obvious choice or do pro's and con's of others need looking at?

    I'm not pretending to know anything about this, just think it sounds promising and am hoping someone's going to explain to me how to use it (in words of one syllable) when we do get it....
    I have no idea about SVN either, but like you I think it sounds like a good idea. Is there only one type of software? Limits on how many mods can use it? etc.

  7. #7
    Simetrical's Avatar Former Chief Technician
    Patrician

    Join Date
    Nov 2004
    Location
    θ = π/0.6293, φ = π/1.293, ρ = 6,360 km
    Posts
    20,154

    Default Re: Implementation of SVN

    Quote Originally Posted by makanyane View Post
    Both Professor420 and Simetrical seem to be talking about SVN (tortoise), is there a reason why that's the obvious choice or do pro's and con's of others need looking at?
    Sourceforge is for open-source software only, and I'd be surprised if it accepted simple mods. It's a site, not a software package that I know of.

    CVS is essentially a predecessor to Subversion. It's only used anywhere for historical reasons, pretty much. Subversion has all of its features plus additional things like atomic commits, proper renaming, etc.

    I haven't heard of the other two, but I suspect that we're best off going with the more familiar and better known software. Subversion is generally the most highly-recommended source control software at the moment.
    MediaWiki developer, TWC Chief Technician
    NetHack player (nao info)


    Risen from Prey

  8. #8
    Halie Satanus's Avatar Emperor of ice cream
    Join Date
    Nov 2005
    Location
    London
    Posts
    19,998
    Blog Entries
    1

    Default Re: Implementation of SVN

    Copied from the Curia.

    Hopefully this will be possible in the future it sounds to me like a great idea and must for mod teams, i know it would have saved myself and makanyane a lot of messing about.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •