reviewed svn-keywords for taking list of dirs - found new hit in scritps/dump-db...
[infrastructure.git] / scripts / svn-keywords.sh
1 #!/bin/bash
2 # $Id$
3
4 COMMAND=$(basename $0)
5
6
7 usage () {
8
9    echo "Usage: $COMMAND keywords -- directories"
10    exit 1
11
12 }
13
14 [[ -z "$@" ]] && usage
15
16 mode=keywords
17
18 while [[ "$@" ]] ; do
19
20   case "$1" in
21     --)
22       mode=dirs ; shift ;;
23     *)
24       case $mode in
25         keywords)
26           keywords="$keywords $1" ; shift ;;
27         dirs)
28           dirs="$dirs $1" ; shift ;;
29         *)
30           usage ;;
31       esac
32       ;;
33   esac
34 done
35   
36 if [ "$mode" == keywords -o -z "$dirs" -o -z "$keywords" ] ; then
37   usage
38 fi
39
40 here=$(pwd -P)
41
42 for dir in $dirs; do
43
44   cd $here
45   cd $dir
46
47   echo "xxxxxxxxxxxxxxxxxxxx Working in $(pwd)"
48
49   for keyword in $keywords ; do
50
51     echo -n "xxxxxxxxxx Gathering files under subversion containing the keyword $keyword "
52     files=$(grep -l '$'"$keyword" $(svn list -R))
53     echo Done
54     
55     for file in $files ; do
56
57       echo -n "$dir/$file "
58
59       if [ ! -f $file ] ; then
60         echo "NOT FOUND - skipped"
61         continue
62       fi
63     
64       current_keywords=$(svn propget svn:keywords $file)
65       has_keyword=$(echo $current_keywords | grep $keyword)
66
67       if [ -z "$has_keyword" ] ; then
68         echo "+$keyword"
69         svn propset svn:keywords "$current_keywords $keyword" $file
70       else
71         echo "="
72       fi
73     done
74
75   done
76
77 done