Solution for Eclipse CVS merge conflicts

Problem: Eclipse's CVS merge feature (despite all your efforts) keeps showing tons of pseudo-conflicts (red conflict symbol with a superimposed white plus or cross sign, whatever it might mean). Solution: don't use Eclipse (for merging). Instead, fall back on the good old command-line CVS client; it's not that difficult.

Change to your project directory and issue a command like:

cvs -q update -d \
    -j "VERSION_2_2:2008-11-24" \
    -j VERSION_2_2 &> /tmp/merge.log

Here VERSION_2_2 is your source branch, from which the merging should occur. The first -j also contains a start tag (or date).

Inspect merge.log for mentions of "warning" and "conflict". Inspect the reported files and merge manually around the standard CVS conflict markers, i.e. >>>>, ==== and <<<<). Finally, delete all files whose names match the pattern .#* (created by the CVS client to indicate which files were affected by merge).

There is one catch here - the extssh access mode routinely used by Eclipse is not recognized by the command-line CVS client, so you will have to replace :extssh: strings by :ext: in all CVS/Root files within your project and set the environment variable CVS_RSH=/usr/bin/ssh to emulate Eclipse's behavior (after you're done revert the replacements).

No comments:

Post a Comment