SVN

From The DarkMod Wiki
Jump to: navigation, search

So what is this SVN thingy then?

SVN stands for SubVersioN. It's a framework originally developed for distributed coding projects, often with multiple programmers working on the code at the same time.

The Dark Mod is a project distributed over the whole world, that's where SVN comes in handy. It allows all Team Members to work on the Mod at the same time without coming in the way of each other.

DarkMod SVN Infrastructure

The graph below shows The Dark Mod's SVN infrastructure:

Svn layout.png

Basically, we have one central SVN server run by sparhawk. It is accessible for all Team Members, Contributors and Beta Mappers alike, but not everybody has write access rights.

Everybody runs his or her own copy of the mod repository on his local hard drive and the SVN Client Software (recommendedly TortoiseSVN) provides some convenient functions to keep the copies in sync with each other.

Looking at the graph, you'll notice several repositories, each serving a specific purpose:

  • darkmod: This is the mod itself. It contains all files needed to run the Mod on a regular Doom 3 installation. This includes the compiled code, the textures, the entity and material definitions, skins, models and whatnot.
  • darkmod_src: The coder's realm. This is where our C++ sources are kept. From the files in this repository, the code (the gamex86.dll) gets compiled and wrapped up in a PK4 file and is uploaded to the darkmod repository in regular intervals.
  • darkmod_hires: This is meant to be a backup repository for losslessly compressed texture files. As the main mod diffuse textures are stored in DDS format (a lossy compression format), we want to keep a backup of these files in TGA file format (see also How to add Textures to The Dark Mod).
  • texture_src: The place for texture source/working files, like Photoshop .psd files, Gimp files - everything including layers.
  • model_src: The repository for Blender, Lightwave, MotionBuilder, Maya, 3DSMax source files, everything needed to re-export models and animations from scratch.
  • sound_src: The location where all sound project files or WAV files can be stored.
  • betamapper: This is a separate repository for our beta mappers and contributors. They are encouraged to upload their files (maps, textures, models, etc.) to this repository (each mapper can have his/her own folder). This way they can take advantage of SVN's versioning system and also have a nice backup of their work.

What are those red and green icons for?

TortoiseSVN has a nice feature showing you the current state of the files in your working copy:

SVN icons.jpg

The most common ones will be green, red and blue:

  • green stands for normal, not locally modified by you. No changes waiting for commit. The file might have been changed on the server, though.
  • red (exclamation mark) means that the file/folder has been modified by you. The change is waiting to be committed to the SVN server.
  • red (x symbol) means that the file is marked for deletion. It will be deleted on the SVN Server the next time you commit.
  • blue means that the file has been marked for addition. It will be uploaded to SVN the next time you commit.
  • yellow indicates a conflict (usually after an SVN Update).

You lost me there, I need an example!

All right then, here you go:

SVN Glossary

The SVN terminology can be confusing at times, this is a (probably incomplete) list of terms explained: SVN Glossary

SVN Troubleshooting