Goody #2: (People probably came up with something like this for Subversion 1.7 already... anyway...)

Our company currently uses Subversion 1.6 and at first I thought 'duel-Subversioning' 1.6 and 1.8 would lead nowhere except headaches. As it turns out, the fact that a Subversion 1.8 client cannot directly work with a Subversion 1.6 working copy is no problem at all, at least not on GNU/Linux in a shell or GNU Emacs.

First, make sure you have both Subversion versions installed and that you have links on your $PATH named svn-1.6 and svn-1.8 that link to the respective binaries. Then create a shell script called svn with this content: (work in progress)

--- snip ---

#!/bin/bash

# check whether the command uses Subversion 1.8 features:
usesNewFeature=0
for arg in "$@"; do
if [[ "$arg" = "--search" || "$arg" = "--diff" || "$arg" = "--new" || "$arg" = "--old" ]]; then
    usesNewFeature=1;
    break;
  fi
done
if [[ "$1" = "upgrade" || ( "$1" = "help" && "$2" = "upgrade" ) ]]; then
  usesNewFeature=1;
fi

# decide which Subversion version to use:
if [[ $usesNewFeature = 0 && -f .svn/entries && "`head -1 .svn/entries`" != "12" ]]; then
  cmd=svn-1.6
else
  cmd=svn-1.8
fi

# debug logging:
# echo `date` "[PWD=$PWD]" -- $cmd "$@" >>~/.svn.log

exec $cmd "$@"

--- snip ---

There you go. A svn command that is able to deal with 1.6 and 1.8 working copies.

Those are the two goodies I came up with so far. Who's next?

Kind regards,
Tobias

Reply via email to