Using CVS with Multiple Developers
A D V E R T I S E M E N T
To simulate multiple developers, first create a directory for your second
developer.
Call it devel2 (Create it in your home directory).
Next check out another copy of project.
- HINT: cvs checkout project
Next, in the devel2/project directory, add a printf("YOU\n");
after the printf("BAR\n");
[Or copy /class/bfennema/project_other/bar2.c to bar.c]
Next, check in bar.c as developer two.
- HINT: cvs commit -m "Added a YOU" bar.c
Now, go back to the original developer directory.
[Probably /class/'username'/project]
Now look at bar.c. As you can see, the change made by developer one has no been
integrated into your version. For that to happen you must
cvs update bar.c
CVS should respond with
U bar.c
Now look at bar.c. It should now be the same as developer two's.
Next, edit foo.c as the original developer and add printf("YOU\n");
after the printf("FOO\n");
[Or copy /class/bfennema/project_other/foo2.c to foo.c]
Then check in foo.c
- HINT: cvs commit -m "Added YOU" foo.c
Next, cd back to developer two's directory.
Add printf("TOO\n"); after the
printf("FOO\n");
[Or copy /class/bfennema/project_other/foo3.c to foo.c]
Now type
cvs status foo.c
CVS should respond with
===================================================================
File: foo.c Status: Needs Merge
Working revision: 1.1.1.1 'Some Date'
Repository revision: 1.2 /class/'username'/cvsroot/project/foo.c,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
The various status of a file are:
Up-to-date
The file is identical with the latest revision in the repository.
Locally Modified
You have edited the file, and not yet committed your changes.
Needing Patch
Someone else has committed a newer revision to the repository.
Needs Merge
Someone else has committed a newer revision to the repository, and you have
also made modifications to the file.
Therefore, this is telling use we need to merge our changes with the changes
made by developer one. To do this
cvs update foo.c
CVS should respond with
RCS file: /class/'username'/cvsroot/project/foo.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
Merging differences between 1.1.1.1 and 1.2 into foo.c
rcsmerge: warning: conflicts during merge
cvs update: conflicts found in foo.c
C foo.c
Since the changes we made to each version were so close together, we must
manually adjust foo.c to look the way we want it to look. Looking at foo.c we
see:
void foo()
{
printf("FOO\n");
<<<<<<< foo.c
printf("TOO\n");
=======
printf("YOU\n");
>>>>>>> 1.2
}
We see that the text we added as developer one is between the ======= and the
>>>>>>> 1.2.
The text we just added is between the ======= and the <<<<<<< foo.c
To fix this, move the printf("TOO\n");to after the
printf("YOU\n");line and delete the additional lines the
CVS inserted. [Or copy /class/bfennema/project_other/foo4.c to foo.c]
Next, commit foo.c
cvs commit -m "Added TOO" foo.c
Since you issued a cvs update command and integrated the changes made by
developer one, the integrated changes are committed to the source tree.
|