root/trunk/util/svncopy.sh

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

Minor changes to 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}" = "buildTools" ]
83   then
84     echo "build/$1 $SVNREPOSITORY/$1/$2" >> $SCTEMPFILE
85   elif [ "${1}" = "bwtzsvr" ]
86   then
87 #      Not linked
88     echo ""
89   elif [ "${1}" = "cachedfeeder" ]
90   then
91 #      Not linked
92     echo ""
93   elif [ "${1}" = "carddav" ]
94   then
95 #      Not linked
96     echo ""
97   elif [ "${1}" = "clientapp" ]
98   then
99 #      Not linked
100     echo ""
101   elif [ "${1}" = "excgsynch" ]
102   then
103 #      Not linked
104     echo ""
105   elif [ "${1}" = "monitor" ]
106   then
107 #      Not linked
108     echo ""
109   elif [ "${1}" = "naming" ]
110   then
111 #      Not linked
112     echo ""
113   elif [ "${1}" != "bedework" ]
114   then
115     echo "projects/$1 $SVNREPOSITORY/$1/$2" >> $SCTEMPFILE
116   fi
117   svn copy -m "$3" -rHEAD $SVNREPOSITORY/$1/$4 $SVNREPOSITORY/$1/$2
118 }
119
120 SOURCE="trunk"
121
122 if [ "${4}" = "from" ]
123 then
124   checkbranchtag "$5"
125   check "from-Name" "$6"
126   SOURCE=$BTR/$6
127 fi
128
129 checkbranchtag "$1"
130 check "Name" "$2"
131 check "Comment" "$3"
132
133 SVNREPOSITORY="https://www.bedework.org/svn"
134 TARGET="$BTR/$2"
135 COMMENT="$3"
136
137 PROJECTS=""
138 PROJECTS="$PROJECTS access"
139 PROJECTS="$PROJECTS bedework"
140 PROJECTS="$PROJECTS buildTools"
141 PROJECTS="$PROJECTS bwtools"
142 PROJECTS="$PROJECTS bwtzsvr"
143 PROJECTS="$PROJECTS cachedfeeder"
144 PROJECTS="$PROJECTS caldav"
145 PROJECTS="$PROJECTS caldavimpl"
146 PROJECTS="$PROJECTS caldavTest"
147 PROJECTS="$PROJECTS calendarapi"
148 PROJECTS="$PROJECTS carddav"
149 PROJECTS="$PROJECTS clientapp"
150 PROJECTS="$PROJECTS contrib"
151 PROJECTS="$PROJECTS davutil"
152 PROJECTS="$PROJECTS dumprestore"
153 # PROJECTS="$PROJECTS exchgsynch"
154 PROJECTS="$PROJECTS indexer"
155 PROJECTS="$PROJECTS monitor"
156 PROJECTS="$PROJECTS naming"
157 PROJECTS="$PROJECTS rpiutil"
158 PROJECTS="$PROJECTS testsuite"
159 PROJECTS="$PROJECTS webapps"
160 PROJECTS="$PROJECTS webdav"
161
162 SCTEMPDIR="${TMPDIR:=/tmp}/svncopydir$$"
163 SCTEMPFILE=$SCTEMPDIR/svncopy
164
165 mkdir $SCTEMPDIR
166
167 # Assure the file is removed at program termination
168 # or after we received a signal:
169 trap 'rm -rf "$SCTEMPDIR" >/dev/null 2>&1' 0
170 trap "exit 2" 1 2 3 15
171
172 for project in $PROJECTS
173 do
174    copyproject "$project" "$TARGET" "$COMMENT" "$SOURCE"
175 done
176
177 svn co -N $SVNREPOSITORY/bedework/$TARGET $SCTEMPDIR/bedework
178 svn propset svn:externals -F $SCTEMPFILE $SCTEMPDIR/bedework
179 svn commit -N -m "Change externals to new copies" $SCTEMPDIR/bedework
180
181 #more $SCTEMPFILE
Note: See TracBrowser for help on using the browser.