[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

dealing with symbolic links (symlinks)

From: Jeff Bowden <jlb_at_houseofdistraction.com>
Date: 2004-03-17 21:01:24 CET

I don't know if this has been covered here before but I thought I would
offer my ad hoc solution for the (current) lack of support for
symlinks. My solution has three parts:

   1. a script to store all the symlinks in a .tar file
   2. a script to svn:ignore on all the symlinks
   3. a modification to the top level makefile of the project to unpack
      the symlinks

tar-up-symlinks.sh:

    #! /bin/sh
    rm -f symlinks.tar
    find . -type l -print0 | xargs -0 tar -rf symlinks.tar

recurse-set-ignore-not-added.sh:

    #! /bin/sh
    SET_IGNORE_NOT_ADDED=`pwd`/set-ignore-not-added.sh
    svn status | grep '^\?' | sed 's/? //' | sed 's/[^/]*$//'|uniq
    | xargs -l $SET_IGNORE_NOT_ADDED

set-ignore-not-added.sh:

    #! /bin/sh
    echo $1
    cd $1
    svn propget svn:ignore . >.svnignore.tmp
    svn status -N | grep '^\?' | sed 's/? //' >>.svnignore.tmp
    sort .svnignore.tmp|uniq>.svnignore.tmp2
    svn propset svn:ignore -F .svnignore.tmp2 .
    sed 's/^/ /' <.svnignore.tmp2
    rm .svnignore.tmp .svnignore.tmp2

Makefile rule addition:

    path/to/one/of/the/symlinks: symlinks.tar
        tar mxf symlinks.tar

(and then of course, the 'build' rule of the Makefile needs to have
path/to/one/of/the/symlinks added as a dependency)

All these files plus symlinks.tar reside in the top level of my
project. First I create symlinks.tar and add it to the repository,
then I run the recurse-set-ignore-not-added script, change the Makefile
and commit everything.

It's important to note that set-ignore-not-added will set ignore on
everything that's not added, it isn't specific to symlinks. So before
you run it make sure that svn status doesn't show anything with a '?'
that you don't want to ignore.

This has worked out pretty well for me so far. I thought I would offer
it up in case someone finds it useful or has some improvements to offer.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Wed Mar 17 21:02:26 2004

This is an archived mail posted to the Subversion Users mailing list.