Changing stuff into subdirectories has several problems:
1. There are files that are copied 
2. You may need to change
3. git submodules don't automatically work the way you think they should - you have to add a git hook manually. Unfortunately, there is no hook at all for git reset --hard (use git checkout -B instead)

problem 2 will be solved (or at least ameliorated) by creating scripts in the root (which may conflict with existing names, but hey! I need your attention)
problems 1 and 3 should be solved by running a script
Stuff to do manually:
* put login-server, char-server, map-server binaries in /usr/local/bin (or some other location callable from the scripts)
Stuff to do later:
* change the client-data submodule to track the main project and delete the testing repository for client data

Stuff to do much later:
* move login/ to the server repository
* Store stuff in a well-known directory
* create a 'make install' target
* create /etc/init.d scripts and get packaged

-o11c


Useful commands:
git submodule update            lose changes in submodule and reset to upstream
git submodule update --merge    merge changes in submodule from upstream
git submodule update --rebase   rebase local changes on top of upstream
        (use this, for the same reason you should use git pull --rebase instead of just git pull - but remember that it's dangerous)
git submodule sync              change the url of the submodule (when testing is deleted)
git config --global url.git@gitorious.org:.pushInsteadOf git://gitorious.org
                                for people with push access: don't pull via ssh (which is slower anyway), required for submodules to work properly
git checkout HEAD^ -B master    completely roll back the latest commit
git reset HEAD^                 undo the last commit but keep changes