Working around –non-interactive problems in Leopard’s Subversion

Apparently, the –non-interactive flag is broken in Subversion as distributed with Leopard and a fix is not yet available. Bad news for Maven users wanting to use any of the SCM tools.

Hopefully a fix will be available either through an update or a version of Subversion that can be compiled from source, but in the mean time I put this shell script ahead of svn in my PATH:

Updated 15 Mar 08: Wendy pointed out you need to chop the username too. Now it’s even more hacky.

#!/bin/sh

if [ "$1" = "--non-interactive" -o "$1" = "--username" ]; then
  shift
fi

if [ "$1" = "--non-interactive" -o "$1" = "--username" ]; then
  shift
fi

/usr/bin/svn "$@"

Mmm, hacky.

Advertisements

4 responses to “Working around –non-interactive problems in Leopard’s Subversion

  1. This doesn’t quite do it for the release process, which executes “svn –username wsmoak –non-interactive commit …”

  2. thanks man, you made my day

  3. This also applies to any svn built by macports.

  4. I needed the same thing but it broke when doing something like svn commit -m “blah blah blah” fubar.c snafu.h

    Basically the spaces in the message were being kicked out.

    So I wrote something that checked for spaces in the arguments and kept them.

    #!/bin/bash                                                                                                                                                            
    
    declare -a params
    space=" "
    for n in "$@" ; do
      if [ "$n" == "--non-interactive" ]; then
        params=(${params[@]})
      else	
        # check with argument contains spaces, if so wrap it in cotton wool                                                                                                
        if [ "${n/$space/_}" != "${n}" ]; then
          params=(${params[@]} "'$n'")
        else
          params=(${params[@]} $n)
        fi
      fi
    done
    eval /usr/bin/svn-orig ${params[@]}
    

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s