Skip to main content
gamedev.net
🔒 Locked

Source Control

Started by wunderk1nd May 3, 2004 at 10:22 PM 10 replies 1.4k views
Original Post
wunderk1nd
wunderk1nd
I''m making a game.. blah blah, you know the routine.. anyways, so i''m pretty far along, and i''ve got 3 separate parts of the project, client, server, engine. I compile engine as a static lib, and the client and server build off of that. I want my friend to join in the fight, and help me with the physics aspects of the engine, but he also needs access to the client/server in order to test his code. I installed CVS, but i''m wondering whether i should put all 3 projects under source control, or just the engine. I''m afraid if all of it was there, it would be a pain to have to keep the client/server synced, if my friend and I are both going to be testing different things at different times. I''m also afraid that if i change the engine too dramatically, it will affect his version of the client/server if it''s not source controlled. Thought''s? Suggestions?
=-=l33t hax0r? logitank.net
wunderk1nd
wunderk1nd
[ Your other post was deleted. --Sneftel ]

[edited by - sneftel on May 4, 2004 1:02:41 AM]
=-=l33t hax0r? logitank.net
krez
krez
in the other post (the one with no replies), click the "edit" button, and check the "oops! i double posted! delete this post!" checkbox, and then submit.
--- krez ([email="krez_AT_optonline_DOT_net"]krez_AT_optonline_DOT_net[/email])
sthomas
sthomas
If it''s just the two of you, and you''re going to be working in separate areas of the code, then it''d probably be easier to just keep everything synchronized manually. Then you''d just need a good diff''ing tool, preferably one that can diff entire directories. I recommend Araxis Merge, but I think it cost $100 the last time I checked. Alternatively, you might want to try Beyond Compare... it''s cheaper ($30) and has a 30-day free trial.

Having said that, using a source control system would be good practice if you ever intend on working for a large company with lots of developers. It really isn''t too much of a pain, once you get used to the check out/edit/submit process. If you want to go this route, you might want to try Perforce as an alternative to CVS. If I remember correctly, you get to set up a server and two clients for free, and anything beyond that costs a fortune. It''s much nicer than CVS, but probably overkill for your project. Worth a look anyways. Good luck.
JohnBolton
JohnBolton
If you have more than one person working on the same code, then you have no choice but to use a source control system. You can choose to do it manually (a huge mistake), or create your own (a huge mistake) or get something like CVS to do it for you.

CVS is not my favorite, but it''s free and there are plenty of tools and add-ons for it. SourceSafe is ok for small projects. You might try Subversion -- it is new and it is open-source. Perforce is probably too complicated for what you need.

Here''s a web page comparing several source control systems: Version Control System Comparison




John Bolton
Page 44 Studios
Current project: NHL Faceoff 2005 PS2
John BoltonLocomotive Games (THQ)Current Project: Destroy All Humans (Wii). IN STORES NOW!
Wuntvor
Wuntvor
Yup, I''d suggest Subversion for this as well.. Keeping stuff in sync should be pretty easy, as both of you can just work on their own copies and commit them when you''re done, you may have to manually merge a file every now and then but all in all this works pretty well.
If you use TortoiseSVN (assuming this is under windows), it is very easy to use as well, at least after you are familiar with the basic principles.
Arild Fines
Arild Fines
Subversion!!!!!

And yes, you should keep *everything* under source control. In fact, your whole project should *always* be buildable from a clean checkout from your source control system.

--
AnkhSVN - A Visual Studio .NET Addin for the Subversion version control system.
[Project site] [Blog] [RSS] [Browse the source] [IRC channel]
--AnkhSVN - A Visual Studio .NET Addin for the Subversion version control system.[Project site] [IRC channel] [Blog]
wunderk1nd
wunderk1nd
How do you recommend setting up the test builds though?

I mean, when i''m testing the networking code and my friend is testing the physics code, we''ll want two pretty substantially different versions of the client/server.

Is this not as big a problem as it seems?
=-=l33t hax0r? logitank.net
Arild Fines
Arild Fines
Try to explain your requirements in a little more detail - I''m not sure I get it.
--AnkhSVN - A Visual Studio .NET Addin for the Subversion version control system.[Project site] [IRC channel] [Blog]
Wuntvor
Wuntvor
I think this really shouldn''t be any problem at all.. I am assuming that you are the one developing the main stuff and he''ll just have to make sure his code works with that. Sure, it can always happen that some of your modifications break his code, but in the end the physics will have to work with it anyway.

As long as it is because both of you modified the same part of the code, that''s no problem as Subversion would notify him of the conflict and he''d have to merge those changes. It is definitely easier for him to keep his version up-to-date this way than if he had to manually copy over the files and check which ones have been modified and whether there are any conflicts.

Obviously, some of these conflicts can''t be avoided. I mean, if you were to try out really major things that he shouldn''t get, I guess you could create a branch and later merge it, if necessary, but I don''t really have much experience with that.
wunderk1nd
wunderk1nd
Okay, I think I understand now..

I only want to commit changes into the repository once they are permanent, right? As in, my testing code shouldn''t make it all the way to the repository, it should be part of my working copy while I''m editing the functionality, and be removed once i commit the functionality.

That should solve whatever problems I was thinking I would have, thanks.
=-=l33t hax0r? logitank.net
markr
markr
Testing code should definitely be in the repository, even if it''s not included in (non-debug) builds.

Specifically, if you are working with a reasonable sized team, you should consider making regression tests.

If you can do automated builds, regression tests are the next stage. A very good idea.

So then your process could be:

1. Checkout / synchronise
2. Build & Test (to ensure that nobody else checked in bust code by accident)
3. Write tests for new code mods
4. Write code for new mods
5. Repeat 3&4 until happy, and tests pass
6. Resynchronise with changes in repository
7. Rerun tests & fix any problems arising (i.e. from other peoples'' commits)
8. Commit changes

You will tend to discover that you end up checking in all sorts of non-production stuff, such as test data patterns (example: test levels to test the engine). That is good though.

Mark

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.