08-08-2008, 03:42 AM
|
[TServerDeveloper]
|
Join Date: Jun 2006
Posts: 448
|
|
Version Control?
Version Control is necessary in any dynamic ever-changing system. It allows for developers to experiment with code and continuously develop without fear of deleting things by accident. Additionally, it'd serve as an ever-lasting backup.
How it can be implemented... For this, I'll use GIT, as it is my personal preference.
Alright -- In GIT, you are given a distributed repository. In the sense, you can develop in different environments. So... First, you'd declare a server a 'working copy' That is to say... The npcs, scripts, and weapons folder are added to the git repository. To make things clean, you'd add a .git-ignore file to the npcs system that would ignore local npcs.
Then, add to NC GIT commands. That is to say... 'git commit -a -m "Fixed bugs"' would be '/git commit -a -m "Fixed bugs"' in RC.
This way... The server can do a wide variety of things supported by git. For instance, /git merge debug, /git log, /git pull, /git push
This way... You'd be able to sync work done on debug and main without having to constantly work on the overhead of keeping both servers up to date. It also solves the problem of merging common fixes to both debug and main.
To add to this flexibility, you can easily allow external editors: They just work with git's system: git pull to get the latest changes from the server, then edit edit edit, and git push to put their work back onto the repository... where they can easily git pull from the server to see the work displayed.
I know that most people don't understand and use version control, but its a blessing when complexity within an environment is too high to work with: Changing massive systems on Zodiac requires delicate and thoughtful edits... And doing anything substantial requires it to be done in large chunks. The turn-off is that Zodiac-Debug is always out of sync with Zodiac... So work is lost when some people edit vital components of the system on Zodiac and don't remap it to Zodiac-Debug. In the end, it just makes bugs appear out of no-where. (Half-implemented systems due to overwriting changes in one system)
This is actually my single-most wanted feature. It is an eye-opener when you start using version control effectively... And additionally, serves as a way that new programmers can understand how things work: By looking at the commit message, they can then see the changes required to make the commit message... This serves as a self-documenting 'how-to' guide. |
|
|