= Tricks and tips Using CVS = == How to list all files which are not the same in the leading edge as in a specific branch == Assumed that you are in the main directory of the leading edge, and you want to see all files which are not the same as in branch V11_6_PROD-BRANCH: {{{ cvs -q diff -kk --brief -rV11_6_PROD-BRANCH app lib }}} == How to merge files from a branch into the leading edge to avoid the conflict in "$Id: $" line == Assumed you want to merge changes between 1.2.1.1 and 1.2.1.2 into the leading edge (CAUTION: this does not function in branches and with binary files, because all '''sticky flags''' are deleted): {{{ cvs up -kk -j 1.2.1.1 -j 1.2.1.2 file cvs up -A file }}} == How to see all the files which are not the same as in the repository == Assumed that you are in the main directory of the project, and you want to see all files which are locally modified or needs update: {{{ cvs st app lib 2>/dev/null | app/etc/filterCVS.sh }}} == How to checkout a file created newly in the leading edge into a branch == Assumed that the file 'filterCVS.sh' was added in the leading edge, and you want to use it also in branch V11_3_PROD-BRANCH: {{{ cd ... # be in branch V11_3_PROD-BRANCH cvs tag -b -r 1.1 V11_3_PROD-BRANCH filterCVS.sh cvs up filterCVS.sh }}} == How to checkout a file created newly in a branch into the leading edge == Assumed that the file 'DashBoardBT.php' was added in the branch V11_3_PROD-BRANCH, and you want to use it also in the leading edge: {{{ cd ... # be in leading edge cvs up -jV11_3_PROD-BRANCH DashBoardBT.php cvs ci -m'.....' DashBoardBT.php }}} == How to make cvs merge between branches of different character sets == Assume that we have the file Message.txt already in character set '''UTF-8''' and we want to merge changes from another branch between versions 1.84 and 1.84.2.36 but the Messages.txt is still in character set '''ISO8859-1''' on that branch. The key issue is that the file should be converted first to the character set of the version to be merged from. {{{ iconv -f UTF-8 -t ISO8859-1 Messages.txt > Messages.txt.iso8859-1 # convert from UTF-8 to ISO8859-1 mv Messages.txt.iso8859-1 Messages.txt cvs up -j1.84 -j1.84.2.36 Messages.txt # cvs merge iconv -t UTF-8 -f ISO8859-1 Messages.txt > Messages.txt.utf-8 # convert from ISO8859-1 to UTF-8 mv Messages.txt.utf-8 Messages.txt vi Messages.txt # resolve conflicts cvs ci -m'Merged from 1.84-1.84.2.36' Messages.txt # commit changes into CVS }}}