I think I'm being a bit daft here. Can anyone point to a Version Control System that works best with an UO Shard?

I'm basically trying to keep track of changes that multiple people make, but I also want to be able to run the shard from newly commited files.

I set up an SVN repo, but with the way SVN stores repositories I can't actually see the files and start the server. Do I have to create a local Working Copy on the server that my shard is running from and Update it whenever there's a Commit (or have some kind of a script do it automatically)?

Does CVS work the same way?

Is there any version control which would allow me to run servuo directly from repository, or if it's not a good idea, which would be the best solution?

I was thinking about GitHub, but private repositories are paid for and my shard's budget of and old shoe and rusted spanner doesn't account for that
 
BitBucket allows private repo's at no cost, it's who I've been using along with GitKraken for a Git GUI.

It's probably always best to have separation from a dev branch and production branch of your code. Introducing serialization or other catastrophic errors into a live server can spell disaster with your save files if not caught in time.
 
Thanks m309, I'll have a look at them, access to the repo via web would have been handy.

Normally I'd separate things and have a test branch, too - a change is first tested locally by a person who makes the change. Then Commit and tested on the test branch. If all is fine it's applied to the live branch. But, with just 2 people editing scripts and testing everything themselves before commiting I really don't see the point.

I ended with SVN and a post-commit hook to Update a working copy on my remote server which servuo is running from - simple and works like a charm. Maybe I'll hook an automatic backup of "Saves" folder on the pre-commit hook - if someone has fat fingers there's always a backup just before the commit.
 
For anyone who was looking for it for ages like me ;) A rough guide:

On your server:
- create an empty svn repository on your server.
- set up users' access and add one more user for auto-updating, e.g. user 'AutoShardUpdate' with 'AutoShardUpdatePassword' password

On your computer:
- checkout your repository to an empty directory on your computer, e.g. 'C:/servuo'.
- copy all servuo files to 'C:/servuo'
- you can add all servuo files to your repo, but for faster updates/commits I'd exclude 'Backups', 'Logs' and 'Saves' folders.
- once added, Commit your changes to the repo on your server.

On your server:
- where you created an svn repo there will be a 'hooks' directory inside. Open it.
- create an empty file named 'post-commit' in 'hooks' directory.
- open the file and copy-paste the code below.
Code:
#!/bin/bash
/usr/bin/svn update /root/servuo/server --quiet --username AutoShardUpdate --password AutoShardUpdatePassword

- change your auto-update user name and password to what you set up before.
- checkout your repo to a local directory on your server - this is where your shard's files will be.

Now every time you commit changes, the 'post-commit' hook will execute an Update for your shard's files.

A very simple solution and if you're running a Linux server you have all the tools you need (you may need to install SVN, though).
 
Back