Game Development Community

dev|Pro Game Development Curriculum

Plan for David Michael

by DavidRM · 06/21/2002 (8:49 am) · 7 comments

Paintball Net continued its forward progress this week. Development Phase 1 (of 5) is nearing completion. Shouldn't be more than a few weeks now, before it's done.

Though Phase 1 hasn't progressed as quickly as we had hoped, it has proven a valuable learning experience, as the team became more familiar with the engine, scripting, and the various tools. With the foundation built in Phase 1, the other development phases should go much quicker.

This week, I also learned more than I ever wanted to learn about CVS. After struggling with how to keep a current HEAD version of Torque available on my PC, as well as using the HEAD to keep the engine for our own project current, and keeping the project up-to-date as more than one programmer worked on it...I decided it was time to learn how to *really* use CVS.

We already had a CVS server running for the project, I just hadn't figured out the best way to use it.

With the exceptional help of Jeremy Noetzelman (from the Garage Games community) I was able to figure out how I wanted CVS to work--and how to get it to work that way.

In summary:

1. On our Linux server, I checked out the latest Torque HEAD from Garage Games.

2. Then I created a module (torque-head) in my own CVS server by importing the module from #1.

3. Based on Jeremy's advice, I also created a stripped-down module (torque-head-source) which has all the examples and a few other things I didn't need "ignored".

4. Then, I used (torque-head-source) to create a module for the Paintball Net project.

5. The final step in getting setup was in merging what we had in our project thus far with the module in #4.

What this setup buys then, is a simple way to keep our project up-to-date with Torque. Each day I can now run a shell script that:

A. Does a "cvs update" of the module checked out in #1. (Since CVS stores the login information with the checked out module, this is very easy to automate. And since it's only an update, it doesn't tax the GG server significantly.)

B. Merges the update from #A with the torque-head module, and then the torque-head-source.

C. Merges the torque-head-source module with the Paintball Net module.

D. Emails me the list of updates and possible conflicts.

Again, I would like to thank Jeremy Noetzelman for his help in getting this done.

Have fun!

-David

#1
06/21/2002 (9:08 am)
Have you looked into CVS vender branches at all? It sounds similar to what your doing, but I though CVS supported it more directly using the vender branch.
#2
06/21/2002 (9:50 am)
#3
06/21/2002 (10:23 am)
Tim...no, I haven't. Or at least, I don't think I have.

I do use vendor tags during the merging:

cvs -d /my/cvs/root import -I ! -I CVS -I example -I cw -I pb -m "Daily CVS Merge" my-source GarageGames $DATE

I have a pretty good idea of how it all works...but, like I said above, I'm mostly just following instructions.

CVS-by-Superstition. ;-)

-David
#4
06/21/2002 (10:46 am)
Tim-

It is using vendor branches ... the script I sent him is pretty straight forward, and uses cvs import to merge, reporting any conflicts via email. I can send it to you if you're interested.
#5
06/21/2002 (10:51 am)
This seems like a pretty common problem, it would be nice to write up a short tutorial on it. Can you send me the scripts Jeremy?
#6
06/21/2002 (4:26 pm)
I wrote up a fairly lengthy post a bit ago ... I'll rewrite it in tutorial form and append the script.

Anything else anyone would like to see in a CVS tutorial?
#7
06/21/2002 (6:42 pm)
Very cool, thanks Jeremy :) Can't think of anything else off hand. If there's any new installation or general usage information, it should probably be added to the current "Using CVS" doco.