root/trunk/util/svncopy.sh

Revision 3357 (checked in by douglm, 2 years ago)

Fix svncopy

Line 
1 #!/bin/bash
2
3 # Copy the current trunk to a new location and adjust the bedework externals property
4
5 usage() {
6   echo "This script will copy the trunk (or named location) to a new location and"
7   echo "adjust the svn:externals property to refer to the new copies"
8   echo " "
9   echo " $0 help"
10   echo " $0 (branch | tag | release) name comment-text [ from (branch | tag | release) name]"
11   echo " "
12   echo " par 1: branch tag or release specifies what kind of copy"
13   echo " par 2: name e.g. my-copy or bedework-4.0.1"
14   echo " par 3: comment text"
15   echo " "
16   echo ' e.g. svncopy branch my-copy "my personal branch"'
17   echo " "
18   exit
19 }
20
21 # Check a parameter is set
22 #
23 # par 1: branch/tag/release
24 #
25 checkbranchtag() {
26   if [ "${1}x" = "x" ]
27   then
28       usage
29   fi
30
31   case "$1" in
32     branch)
33       BTR="branches"
34       ;;
35     tag)
36       BTR="tags"
37       ;;
38     release)
39       BTR="releases"
40       ;;
41     help)
42       usage
43       ;;
44     *)
45       echo " "
46       echo "**** "
47       echo "**** First parameter must be branch tag or release"
48       echo "**** "
49       echo " "
50       usage
51    esac
52 }
53
54 # Check a parameter is set
55 #
56 # par 1: Name of parameter
57 # par 2: value
58 #
59 check() {
60   if [ "${2}x" = "x" ]
61   then
62     echo " "
63     echo "**** "
64     echo "**** Parameter $1 is not set"
65     echo "**** "
66     echo " "
67     usage
68   fi
69 }
70
71 # ------------------------------------------------------------------
72 # copyproject - copy a single project. At the same time build up an
73 #               externals property file
74 #
75 # par 1 - project name
76 # par 2 - destination
77 # par 3 - comment
78 # par 4 - source
79 # ------------------------------------------------------------------
80 copyproject() {
81   echo "copyproject $1 $2 from $4"
82   if [ "${1}" = "caldavimpl" ]
83   then
84     echo "projects/$1 $SVNREPOSITORY/$1/$2" >> $SCTEMPFILE
85   elif [ "${1}" = "calendarapi" ]
86   then
87     echo "projects/$1 $SVNREPOSITORY/$1/$2" >> $SCTEMPFILE
88   elif [ "${1}" = "dumprestore" ]
89   then
90     echo "projects/$1 $SVNREPOSITORY/$1/$2" >> $SCTEMPFILE
91   elif [ "${1}" = "indexer" ]
92   then
93     echo "projects/$1 $SVNREPOSITORY/$1/$2" >> $SCTEMPFILE
94   elif [ "${1}" = "webapps" ]
95   then
96     echo "projects/$1 $SVNREPOSITORY/$1/$2" >> $SCTEMPFILE
97   fi
98   svn copy -m "$3" -rHEAD $SVNREPOSITORY/$1/$4 $SVNREPOSITORY/$1/$2
99 }
100
101 SOURCE="trunk"
102
103 if [ "${4}" = "from" ]
104 then
105   checkbranchtag "$5"
106   check "from-Name" "$6"
107   SOURCE=$BTR/$6
108 fi
109
110 checkbranchtag "$1"
111 check "Name" "$2"
112 check "Comment" "$3"
113
114 SVNREPOSITORY="https://www.bedework.org/svn"
115 TARGET="$BTR/$2"
116 COMMENT="$3"
117
118 PROJECTS=""
119 PROJECTS="$PROJECTS access"
120 PROJECTS="$PROJECTS bedework"
121 PROJECTS="$PROJECTS bwtools"
122 PROJECTS="$PROJECTS bwtzsvr"
123 PROJECTS="$PROJECTS bwxml"
124 PROJECTS="$PROJECTS cachedfeeder"
125 PROJECTS="$PROJECTS caldav"
126 PROJECTS="$PROJECTS caldavimpl"
127 PROJECTS="$PROJECTS caldavTest"
128 PROJECTS="$PROJECTS calendarapi"
129 PROJECTS="$PROJECTS carddav"
130 PROJECTS="$PROJECTS clientapp"
131 #PROJECTS="$PROJECTS contrib"
132 PROJECTS="$PROJECTS davutil"
133 PROJECTS="$PROJECTS dumprestore"
134 PROJECTS="$PROJECTS indexer"
135 PROJECTS="$PROJECTS monitor"
136 PROJECTS="$PROJECTS naming"
137 PROJECTS="$PROJECTS rpiutil"
138 # PROJECTS="$PROJECTS synch"
139 PROJECTS="$PROJECTS testsuite"
140 PROJECTS="$PROJECTS webapps"
141 PROJECTS="$PROJECTS webdav"
142
143 SCTEMPDIR="${TMPDIR:=/tmp}/svncopydir$$"
144 SCTEMPFILE=$SCTEMPDIR/svncopy
145
146 mkdir $SCTEMPDIR
147
148 # Assure the file is removed at program termination
149 # or after we received a signal:
150 trap 'rm -rf "$SCTEMPDIR" >/dev/null 2>&1' 0
151 trap "exit 2" 1 2 3 15
152
153 for project in $PROJECTS
154 do
155    copyproject "$project" "$TARGET" "$COMMENT" "$SOURCE"
156 done
157
158 svn co -N $SVNREPOSITORY/bedework/$TARGET $SCTEMPDIR/bedework
159 svn propset svn:externals -F $SCTEMPFILE $SCTEMPDIR/bedework
160 svn commit -N -m "Change externals to new copies" $SCTEMPDIR/bedework
161
162 #more $SCTEMPFILE
Note: See TracBrowser for help on using the browser.