Wilcox Development Solutions Blog

CVS Is Dumb (Sometimes)

August 08, 2003

I finally finished merging vendor code with our code. Along with the ordinary fun cvs conflicts, several dozen files also had this problem

`// FileHeader.h >>>>> 1.2.1


That folks is what a cvs conflict looks like. Of course, this won’t compile (that’s part of the point, I think).

But it’s also conflicting on a autogenerated keyword!

You see, CVS will replace keywords (“stuff betwee $s”) with Useful Information it figured out during commit time.

Of course, these two files were committed at different times with differnet versions. Because they were (and that’s the point).

None of these lines contain useful information (because CVS will replace it with real information when it does a commit). So I wrote a script to un-expand those keywords.

Of course, it still probably added a half hour to the job, as I had to locate the files that had those kind of conflicts and run the script on them. Plus I’ll have to check in these “changed” files to the repository.

In Summary: CVS conflicts and merging are fun. Especially when its CVS that causes the conflict in the first place