How do you handle changes in source code???
by John Eric Miller · in Torque Game Engine · 03/23/2004 (8:35 am) · 4 replies
What methods do you use for incorporating changes in HEAD to your games codebase? What process do you use for doing this? What tools do you use? Is it even important to do this? Are major changes made to the engine at this point? It appears that the only "major" additions are the resources that the community submits.
Also, I would like to remove any projects that aren't part of the engine itself like the plugin stuff for max etc. Which projects can I safely remove that don't effect the engine?
Thanks!
Also, I would like to remove any projects that aren't part of the engine itself like the plugin stuff for max etc. Which projects can I safely remove that don't effect the engine?
Thanks!
#2
Basically, it will compare 2 directory structures and show you the differences in the files, then you can open the files and it will show you the differences between files in beg red highlights. You can then move the changes over if you want to.
But yeah, best way would probably be to use subclasses etc so you dont make it impossible to merge the differences.
03/24/2004 (3:12 am)
As for tools, I recommend WinMerge. Its free and very good.Basically, it will compare 2 directory structures and show you the differences in the files, then you can open the files and it will show you the differences between files in beg red highlights. You can then move the changes over if you want to.
But yeah, best way would probably be to use subclasses etc so you dont make it impossible to merge the differences.
#3
I do all of my development work on my own branch, and use "cvs update -j" to indentify what to pull into my branch from the vendor branch. Most often CVS will automatically handle the merging with no manual editing.
My local CVS repository is on a separate system, accessible by my primary development box (linux), my Win2K box, and my Powerbook.
This process (as well as good CVS practice of tagging my branch before and after I commit) makes it straightforward to generate patches for changes that I make.
I've used CVS for many years now, and this just seemed like the right way to do it. On a previous non-game project, I used BitKeeper, and I really liked it once I got used to it.
Here's the import script that I use -- it may not work for anyone else, but this is an example of how to import a "cvs export"ed Torque tree into your repository:
03/24/2004 (3:34 am)
I have a local CVS repository that I work from, and I import tagged releases (and sometimes HEAD) into my local CVS repository on a vendor branch. When something major changes in the garagegames CVS repository, I "cvs export" from their repository into a directory on my system, and then import that directory onto the vendor branch of my local CVS repository. I have a stupid script (somewhere) that I actually use to do the import so that all of the various binary files have the -kb option set correctly and preserves the garagegames cvs keywords.I do all of my development work on my own branch, and use "cvs update -j" to indentify what to pull into my branch from the vendor branch. Most often CVS will automatically handle the merging with no manual editing.
My local CVS repository is on a separate system, accessible by my primary development box (linux), my Win2K box, and my Powerbook.
This process (as well as good CVS practice of tagging my branch before and after I commit) makes it straightforward to generate patches for changes that I make.
I've used CVS for many years now, and this just seemed like the right way to do it. On a previous non-game project, I used BitKeeper, and I really liked it once I got used to it.
Here's the import script that I use -- it may not work for anyone else, but this is an example of how to import a "cvs export"ed Torque tree into your repository:
#!/bin/sh
vendor=garagegames.com
product=torque
version=head-2004-02-06
# version=1.2.0
release_tag_prefix=import_
vendor_tag='echo $vendor | tr [:punct:] _'
release_tag='echo ${release_tag_prefix}${version} | tr [:punct:] _'
import_message="Import ${vendor} version $version of ${product}"
import_to=${vendor%.*}/${product}
cvs import \
-m "$import_message" \
-ko \
-I "!" \
-W "*.exe -k 'b'" \
-W "*.mcp -k 'b'" \
-W "*.gif -k 'b'" \
-W "*.jpg -k 'b'" \
-W "*.rsrc -k 'b'" \
-W "*.icns -k 'b'" \
-W "*.dll -k 'b'" \
-W "*.png -k 'b'" \
-W "*.gft -k 'b'" \
-W "*.ter -k 'b'" \
-W "*.qrk -k 'b'" \
-W "*.dif -k 'b'" \
-W "*.dts -k 'b'" \
-W "*.max -k 'b'" \
-W "*.ms3d -k 'b'" \
-W "*.dsq -k 'b'" \
-W "*.ogg -k 'b'" \
-W "*.wav -k 'b'" \
-W "*.psd -k 'b'" \
-W "*.lib -k 'b'" \
-W "*.ppm -k 'b'" \
-W "*.LIB -k 'b'" \
-W "*.so -k 'b'" \
-W "*.so.0 -k 'b'" \
-W "*.a -k 'b'" \
-W "*.pbxproj -k 'b'" \
-W "*.doc -k 'b'" \
-W "*.opt -k 'b'" \
-W "*.ico -k 'b'" \
-W "*.suo -k 'b'" \
$import_to $vendor_tag $release_tag
#4
03/24/2004 (3:36 am)
Gak! Those "´" don't appear in my script...they are supposed to be a single quote. (')
Torque Owner Markus Nuebel
Try to do a subclass, when doing changes to an engine class and keep it seperate as well.
If you cannot do a subclass, mark your engine changes with some comments.
(This will help you when merging with a newer engine version.)
I removed all project from the workspace except the Torque Demo one.
(This compiles the engine and is the only one needed for game coding)
-- Markus