Fun late last night, script to add subversion ignores
(incrementally and using wildcards for dotted extensions).
Script should be run on clean repository after build e.g. by a automated buildbot.
Note the bash propadd function. Would be nice if subversion provided that.
#!/bin/bash
# e.g. propadd svn:ignore . "*.a"
# e.g. (multiline) propadd svn:ignore . "*.a
# *.o"
propadd () {
PROP=$1
FILE=$2
ADDVAL=$3
OLDVAL=`svn propget $PROP $FILE`
NEWVAL="$OLDVAL
$ADDVAL"
echo svn propset $PROP \""$NEWVAL"\" $FILE
svn propset $PROP "$NEWVAL" $FILE
}
#####
# get plain list of files
svn status -u |grep ^? |sed "s/\? *//" >svn_ignore_files.log
##### Anything with a dotted extension insert wildcard * in place of rest of file name
# sort | uniq to rm duplicates for wildcards
IGNORES=`cat svn_ignore_files.log |sed "s/\([^\/][^\/]*\)\.\([^\.\/]*\)$/\*\.\2/" |sed s/^/BBB/ |sort |uniq`
### for or echo in shell expand <dir>/*.ext to full list of matches
### so add BBB
### meh
##### for each dir/file call propadd svn:ignore
# watch out $fNAME can have wildcard
for f in $IGNORES ; do
#echo "f=$f" ;
fNAME=${f##*\/}
fNAME=${fNAME##BBB}
fPATH=${f%%"$fNAME"}
fPATH=${fPATH##BBB}
if [[ "$fPATH" == "" ]] ; then fPATH=.; fi
#echo fNAME=$fNAME fPATH=$fPATH
#ls $fPATH/$fNAME
propadd svn:ignore $fPATH "$fNAME"
done
#####
echo "Now commit ignores: 'svn ci -m\"updated svn:ignore values\"'"
echo "Or remove unwanted ignores 'svn revert [-R] <dir>'"
echo "'svn status' will show
No comments:
Post a Comment