/[gentoo-x86]/eclass/subversion.eclass
Gentoo

Diff of /eclass/subversion.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.44 Revision 1.48
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2008 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.44 2007/07/03 08:27:40 peper Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.48 2008/02/20 19:18:53 cardoe Exp $
4 4
5## --------------------------------------------------------------------------- # 5# @ECLASS: subversion.eclass
6# @MAINTAINER:
7# Akinori Hattori <hattya@gentoo.org>
8# Bo ├śrsted Andresen <zlin@gentoo.org>
9#
6# Author: Akinori Hattori <hattya@gentoo.org> 10# Original Author: Akinori Hattori <hattya@gentoo.org>
7# 11#
8# The subversion eclass is written to fetch the software sources from 12# @BLURB: The subversion eclass is written to fetch software sources from subversion repositories
9# subversion repositories like the cvs eclass. 13# @DESCRIPTION:
14# The subversion eclass provides functions to fetch, patch and bootstrap
15# software sources from subversion repositories.
10# 16#
11# 17# You must define the ESVN_REPO_URI variable before inheriting this eclass.
12# Description:
13# If you use this eclass, the ${S} is ${WORKDIR}/${P}.
14# It is necessary to define the ESVN_REPO_URI variable at least.
15#
16## --------------------------------------------------------------------------- #
17 18
18inherit eutils 19inherit eutils
19 20
20ESVN="subversion.eclass" 21ESVN="${ECLASS}"
21 22
22EXPORT_FUNCTIONS src_unpack 23EXPORT_FUNCTIONS src_unpack
23 24
24DESCRIPTION="Based on the ${ECLASS} eclass" 25DESCRIPTION="Based on the ${ECLASS} eclass"
25 26
26
27## -- add subversion in DEPEND
28#
29DEPEND="dev-util/subversion" 27DEPEND="dev-util/subversion
28 net-misc/rsync"
30 29
31 30# @ECLASS-VARIABLE: ESVN_STORE_DIR
32## -- ESVN_STORE_DIR: subversion sources store directory 31# @DESCRIPTION:
33# 32# subversion sources store directory. Users may override this in /etc/make.conf
34ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/svn-src" 33[[ -z ${ESVN_STORE_DIR} ]] && ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/svn-src"
35 34
36 35# @ECLASS-VARIABLE: ESVN_FETCH_CMD
37## -- ESVN_FETCH_CMD: subversion fetch command 36# @DESCRIPTION:
38# 37# subversion checkout command
39ESVN_FETCH_CMD="svn checkout" 38ESVN_FETCH_CMD="svn checkout"
40 39
41## -- ESVN_UPDATE_CMD: subversion update command 40# @ECLASS-VARIABLE: ESVN_UPDATE_CMD
42# 41# @DESCRIPTION:
42# subversion update command
43ESVN_UPDATE_CMD="svn update" 43ESVN_UPDATE_CMD="svn update"
44 44
45# @ECLASS-VARIABLE: ESVN_SWITCH_CMD
46# @DESCRIPTION:
47# subversion switch command
48ESVN_SWITCH_CMD="svn switch"
45 49
46## -- ESVN_OPTIONS: 50# @ECLASS-VARIABLE: ESVN_OPTIONS
47# 51# @DESCRIPTION:
48# the options passed to checkout or update. 52# the options passed to checkout or update. If you want a specific revision see
49# 53# ESVN_REPO_URI instead of using -rREV.
50: ${ESVN_OPTIONS=} 54ESVN_OPTIONS="${ESVN_OPTIONS:-}"
51 55
52 56# @ECLASS-VARIABLE: ESVN_REPO_URI
53## -- ESVN_REPO_URI: repository uri 57# @DESCRIPTION:
58# repository uri
54# 59#
55# e.g. http://foo/trunk, svn://bar/trunk 60# e.g. http://foo/trunk, svn://bar/trunk, svn://bar/branch/foo@1234
56# 61#
57# supported protocols: 62# supported protocols:
58# http:// 63# http://
59# https:// 64# https://
60# svn:// 65# svn://
61# svn+ssh:// 66# svn+ssh://
62# 67#
63: ${ESVN_REPO_URI=} 68# to peg to a specific revision, append @REV to the repo's uri
69ESVN_REPO_URI="${ESVN_REPO_URI:-}"
64 70
71# @ECLASS-VARIABLE: ESVN_REVISION
72# @DESCRIPTION:
73# User configurable revision checkout or update to from the repository
74#
75# Useful for live svn or trunk svn ebuilds allowing the user to peg
76# to a specific revision
77#
78# Note: This should never be set in an ebuild!
79ESVN_REVISION="${ESVN_REVISION:-}"
65 80
81# @ECLASS-VARIABLE: ESVN_PROJECT
82# @DESCRIPTION:
66## -- ESVN_PROJECT: project name of your ebuild (= name space) 83# project name of your ebuild (= name space)
67# 84#
68# subversion eclass will check out the subversion repository like: 85# subversion eclass will check out the subversion repository like:
69# 86#
70# ${ESVN_STORE_DIR}/${ESVN_PROJECT}/${ESVN_REPO_URI##*/} 87# ${ESVN_STORE_DIR}/${ESVN_PROJECT}/${ESVN_REPO_URI##*/}
71# 88#
80# 97#
81# # jakarta commons-loggin 98# # jakarta commons-loggin
82# ESVN_PROJECT=commons/logging 99# ESVN_PROJECT=commons/logging
83# 100#
84# default: ${PN/-svn}. 101# default: ${PN/-svn}.
85# 102ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}"
86: ${ESVN_PROJECT:=${PN/-svn}}
87 103
88 104# @ECLASS-VARIABLE: ESVN_BOOTSTRAP
89## -- ESVN_BOOTSTRAP: 105# @DESCRIPTION:
90#
91# bootstrap script or command like autogen.sh or etc.. 106# bootstrap script or command like autogen.sh or etc..
92# 107ESVN_BOOTSTRAP="${ESVN_BOOTSTRAP:-}"
93: ${ESVN_BOOTSTRAP=}
94 108
95 109# @ECLASS-VARIABLE: ESVN_PATCHES
96## -- ESVN_PATCHES: 110# @DESCRIPTION:
97#
98# subversion eclass can apply pathces in subversion_bootstrap(). 111# subversion eclass can apply patches in subversion_bootstrap().
99# you can use regexp in this variable like *.diff or *.patch or etc. 112# you can use regexp in this variable like *.diff or *.patch or etc.
100# NOTE: patches will be applied before ESVN_BOOTSTRAP is processed. 113# NOTE: patches will be applied before ESVN_BOOTSTRAP is processed.
101# 114#
102# Patches are searched both in / and ${FILESDIR}, if not found in both locations, 115# Patches are searched both in ${PWD} and ${FILESDIR}, if not found in either
103# the installation dies. 116# location, the installation dies.
104# 117ESVN_PATCHES="${ESVN_PATCHES:-}"
105: ${ESVN_PATCHES=}
106 118
107 119# @ECLASS-VARIABLE: ESVN_RESTRICT
108## -- ESVN_RESTRICT: 120# @DESCRIPTION:
109#
110# this should be a space delimited list of subversion eclass features to 121# this should be a space delimited list of subversion eclass features to
111# restrict. 122# restrict.
112# export) 123# export)
113# don't export the working copy to S. 124# don't export the working copy to S.
114# 125ESVN_RESTRICT="${ESVN_RESTRICT:-}"
115: ${ESVN_RESTRICT=}
116 126
117 127# @FUNCTION: subversion_fetch
118## -- subversion_fetch() ----------------------------------------------------- # 128# @USAGE: [repo_uri] [destination]
129# @DESCRIPTION:
130# Wrapper function to fetch sources from subversion via svn checkout or svn update,
131# depending on whether there is an existing working copy in ${ESVN_STORE_DIR}.
119# 132#
133# Can take two optional parameters:
120# @param $1 - a repository URI. default is the ESVN_REPO_URI. 134# repo_uri - a repository URI. default is ESVN_REPO_URI.
121# @param $2 - a check out path in S. 135# destination - a check out path in S.
122#
123function subversion_fetch() { 136subversion_fetch() {
124 local repo_uri="$(subversion__get_repository_uri "${1}")" 137 local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")"
138 local revision="$(subversion__get_peg_revision "${1:-${ESVN_REPO_URI}}")"
125 local S_dest="${2}" 139 local S_dest="${2}"
140
141 [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}"
126 142
127 # check for the protocol 143 # check for the protocol
128 local protocol="${repo_uri%%:*}" 144 local protocol="${repo_uri%%:*}"
129 145
130 case "${protocol}" in 146 case "${protocol}" in
138 fi 154 fi
139 ;; 155 ;;
140 svn|svn+ssh) 156 svn|svn+ssh)
141 ;; 157 ;;
142 *) 158 *)
143 die "${ESVN}: fetch from "${protocol}" is not yet implemented." 159 die "${ESVN}: fetch from '${protocol}' is not yet implemented."
144 ;; 160 ;;
145 esac 161 esac
146 162
147 addread "/etc/subversion" 163 addread "/etc/subversion"
148 addwrite "${ESVN_STORE_DIR}" 164 addwrite "${ESVN_STORE_DIR}"
149 165
150 if [[ ! -d "${ESVN_STORE_DIR}" ]]; then 166 if [[ ! -d ${ESVN_STORE_DIR} ]]; then
151 debug-print "${FUNCNAME}: initial checkout. creating subversion directory" 167 debug-print "${FUNCNAME}: initial checkout. creating subversion directory"
152 mkdir -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}." 168 mkdir -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}."
153 fi 169 fi
154 170
155 cd "${ESVN_STORE_DIR}" || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}" 171 cd "${ESVN_STORE_DIR}" || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}"
156 172
157 local wc_path="$(subversion__get_wc_path "${repo_uri}")" 173 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
158 local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion" 174 local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion"
175
176 [[ -n "${revision}" ]] && options="${options} -r ${revision}"
177
178 if [[ "${ESVN_OPTIONS}" = *-r* ]]; then
179 ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please"
180 ewarn "see \${ESVN_REPO_URI}"
181 fi
159 182
160 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\"" 183 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\""
161 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\"" 184 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\""
162 debug-print "${FUNCNAME}: options = \"${options}\"" 185 debug-print "${FUNCNAME}: options = \"${options}\""
163 186
164 if [[ ! -d "${wc_path}/.svn" ]]; then 187 if [[ ! -d ${wc_path}/.svn ]]; then
165 # first check out 188 # first check out
166 einfo "subversion check out start -->" 189 einfo "subversion check out start -->"
167 einfo " repository: ${repo_uri}" 190 einfo " repository: ${repo_uri}${revision:+@}${revision}"
168 191
169 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}" 192 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}"
170 193
171 mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}." 194 mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}."
172 cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}" 195 cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}"
173 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch from ${repo_uri}." 196 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch from ${repo_uri}."
174 197
175 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
176 else 198 else
177 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy." 199 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
200
178 if [ "${ESVN_WC_URL}" != "$(subversion__get_repository_uri "${repo_uri}" 1)" ]; then 201 if [[ ${ESVN_WC_URL} != $(subversion__get_repository_uri "${repo_uri}") ]]; then
179 die "${ESVN}: ESVN_REPO_URI (or specified URI) and working copy's URL are not matched." 202 einfo "suversion switch start -->"
203 einfo " old repository: ${ESVN_WC_URL}@${ESVN_WC_REVISION}"
204 einfo " new repository: ${repo_uri}${revision:+@}${revision}"
205
206 debug-print "${FUNCNAME}: ${ESVN_SWITCH_CMD} ${options} ${repo_uri}"
207
208 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
209 ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ESVN}: can't update from ${repo_uri}"
210 else
211 # update working copy
212 einfo "subversion update start -->"
213 einfo " repository: ${repo_uri}${revision:+@}${revision}"
214
215 debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}"
216
217 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
218 ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update from ${repo_uri}."
180 fi 219 fi
181 220
182 # update working copy
183 einfo "subversion update start -->"
184 einfo " repository: ${repo_uri}"
185
186 debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}"
187
188 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
189 ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update from ${repo_uri}."
190 fi 221 fi
191 222
192 einfo " working copy: ${wc_path}" 223 einfo " working copy: ${wc_path}"
193 224
194 if ! has "export" ${ESVN_RESTRICT}; then 225 if ! has "export" ${ESVN_RESTRICT}; then
203 fi 234 fi
204 235
205 echo 236 echo
206} 237}
207 238
208 239# @FUNCTION: subversion_bootstrap
209## -- subversion_bootstrap() ------------------------------------------------ # 240# @DESCRIPTION:
210# 241# Apply patches in ${ESVN_PATCHES} and run ${ESVN_BOOTSTRAP} if specified.
211function subversion_bootstrap() { 242subversion_bootstrap() {
212 if has "export" ${ESVN_RESTRICT}; then 243 if has "export" ${ESVN_RESTRICT}; then
213 return 244 return
214 fi 245 fi
215 246
216 cd "${S}" 247 cd "${S}"
217 248
218 if [[ -n "${ESVN_PATCHES}" ]]; then 249 if [[ -n ${ESVN_PATCHES} ]]; then
219 einfo "apply patches -->" 250 einfo "apply patches -->"
220 251
221 local patch fpatch 252 local patch fpatch
253
222 for patch in ${ESVN_PATCHES}; do 254 for patch in ${ESVN_PATCHES}; do
223 if [[ -f "${patch}" ]]; then 255 if [[ -f ${patch} ]]; then
224 epatch "${patch}" 256 epatch "${patch}"
257
225 else 258 else
226 for fpatch in ${FILESDIR}/${patch}; do 259 for fpatch in ${FILESDIR}/${patch}; do
227 if [[ -f "${fpatch}" ]]; then 260 if [[ -f ${fpatch} ]]; then
228 epatch "${fpatch}" 261 epatch "${fpatch}"
262
229 else 263 else
230 die "${ESVN}: ${patch} not found" 264 die "${ESVN}: ${patch} not found"
265
231 fi 266 fi
232 done 267 done
268
233 fi 269 fi
234 done 270 done
271
235 echo 272 echo
236 fi 273 fi
237 274
238 if [[ -n "${ESVN_BOOTSTRAP}" ]]; then 275 if [[ -n ${ESVN_BOOTSTRAP} ]]; then
239 einfo "begin bootstrap -->" 276 einfo "begin bootstrap -->"
240 277
241 if [[ -f "${ESVN_BOOTSTRAP}" && -x "${ESVN_BOOTSTRAP}" ]]; then 278 if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then
242 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}" 279 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}"
243 eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP." 280 eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP."
281
244 else 282 else
245 einfo " bootstrap with command: ${ESVN_BOOTSTRAP}" 283 einfo " bootstrap with command: ${ESVN_BOOTSTRAP}"
246 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP." 284 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP."
285
247 fi 286 fi
248 fi 287 fi
249} 288}
250 289
251## -- subversion_src_unpack() ------------------------------------------------ # 290# @FUNCTION: subversion_src_unpack
252# 291# @DESCRIPTION:
292# default src_unpack. fetch and bootstrap.
253function subversion_src_unpack() { 293subversion_src_unpack() {
254 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch." 294 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
255 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap." 295 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
256} 296}
257 297
258 298# @FUNCTION: subversion_wc_info
259## -- subversion_wc_info() --------------------------------------------------- # 299# @USAGE: [repo_uri]
300# @RETURN: ESVN_WC_URL, ESVN_WC_ROOT, ESVN_WC_UUID, ESVN_WC_REVISION and ESVN_WC_PATH
301# @DESCRIPTION:
302# Get svn info for the specified repo_uri. The default repo_uri is ESVN_REPO_URI.
260# 303#
261# @param $1 - repository URI. default is ESVN_REPO_URI. 304# The working copy information on the specified repository URI are set to
262# 305# ESVN_WC_* variables.
263function subversion_wc_info() { 306subversion_wc_info() {
264 local repo_uri="$(subversion__get_repository_uri "${1}")" 307 local repo_uri="$(subversion__get_repository_uri "${1}")"
265 local wc_path="$(subversion__get_wc_path "${repo_uri}")" 308 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
266 309
267 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}" 310 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
268 debug-print "${FUNCNAME}: wc_path = ${wc_path}" 311 debug-print "${FUNCNAME}: wc_path = ${wc_path}"
269 312
270 if [[ ! -e "${wc_path}" ]]; then 313 if [[ ! -d ${wc_path} ]]; then
271 return 1 314 return 1
272 fi 315 fi
273 316
274 local k 317 export ESVN_WC_URL="$(subversion__svn_info "${wc_path}" "URL")"
275 for k in url revision; do 318 export ESVN_WC_ROOT="$(subversion__svn_info "${wc_path}" "Repository Root")"
276 export ESVN_WC_$(subversion__to_upper_case "${k}")="$(subversion__svn_info "${wc_path}" "${k}")" 319 export ESVN_WC_UUID="$(subversion__svn_info "${wc_path}" "Repository UUID")"
277 done 320 export ESVN_WC_REVISION="$(subversion__svn_info "${wc_path}" "Revision")"
321 export ESVN_WC_PATH="${wc_path}"
278} 322}
279 323
280## -- Private Functions 324## -- Private Functions
281 325
282
283## -- subversion__svn_info() ------------------------------------------------- # 326## -- subversion__svn_info() ------------------------------------------------- #
284# 327#
285# @param $1 - a target. 328# param $1 - a target.
286# @param $2 - a key name. 329# param $2 - a key name.
287# 330#
288function subversion__svn_info() { 331subversion__svn_info() {
289 local target="${1}" 332 local target="${1}"
290 local key="${2}" 333 local key="${2}"
291 334
292 env LC_ALL=C svn info "${target}" | grep -i "^${key}" | cut -d" " -f2- 335 env LC_ALL=C svn info "${target}" | grep -i "^${key}" | cut -d" " -f2-
293} 336}
294 337
295
296## -- subversion__get_repository_uri() --------------------------------------- # 338## -- subversion__get_repository_uri() --------------------------------------- #
297# 339#
298# @param $1 - a repository URI. 340# param $1 - a repository URI.
299# @param $2 - a peg revision is deleted from a return value if this is
300# specified.
301#
302function subversion__get_repository_uri() { 341subversion__get_repository_uri() {
303 local repo_uri="${1:-${ESVN_REPO_URI}}" 342 local repo_uri="${1}"
304 local remove_peg_revision="${2}"
305 343
306 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}" 344 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
307 debug-print "${FUNCNAME}: remove_peg_revision = ${remove_peg_revision}"
308 345
309 if [[ -z "${repo_uri}" ]]; then 346 if [[ -z ${repo_uri} ]]; then
310 die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty." 347 die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty."
311 fi 348 fi
312 349
313 # delete trailing slash 350 # delete trailing slash
314 if [[ -z "${repo_uri##*/}" ]]; then 351 if [[ -z ${repo_uri##*/} ]]; then
315 repo_uri="${repo_uri%/}" 352 repo_uri="${repo_uri%/}"
316 fi 353 fi
317 354
318 if [[ -n "${remove_peg_revision}" ]]; then
319 if subversion__has_peg_revision "${repo_uri}"; then
320 repo_uri="${repo_uri%@*}" 355 repo_uri="${repo_uri%@*}"
321
322 debug-print "${FUNCNAME}: repo_uri has a peg revision"
323 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
324 fi
325 fi
326 356
327 echo "${repo_uri}" 357 echo "${repo_uri}"
328} 358}
329 359
330
331## -- subversion__get_wc_path() ---------------------------------------------- # 360## -- subversion__get_wc_path() ---------------------------------------------- #
332# 361#
333# @param $1 - a repository URI. 362# param $1 - a repository URI.
334#
335function subversion__get_wc_path() { 363subversion__get_wc_path() {
336 local repo_uri="$(subversion__get_repository_uri "${1}" 1)" 364 local repo_uri="$(subversion__get_repository_uri "${1}")"
337 365
338 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}" 366 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
339 367
340 echo "${ESVN_STORE_DIR}/${ESVN_PROJECT}/${repo_uri##*/}" 368 echo "${ESVN_STORE_DIR}/${ESVN_PROJECT}/${repo_uri##*/}"
341} 369}
342 370
343
344## -- subversion__has_peg_revision() ----------------------------------------- # 371## -- subversion__get_peg_revision() ----------------------------------------- #
345# 372#
346# @param $1 - a repository URI. 373# param $1 - a repository URI.
347#
348function subversion__has_peg_revision() { 374subversion__get_peg_revision() {
349 local repo_uri="${1}" 375 local repo_uri="${1}"
350 376
351 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}" 377 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
352 378
353 # repo_uri has peg revision ? 379 # repo_uri has peg revision ?
354 if [[ "${repo_uri}" != *@* ]]; then 380 if [[ ${repo_uri} != *@* ]]; then
355 debug-print "${FUNCNAME}: repo_uri does not have a peg revision." 381 debug-print "${FUNCNAME}: repo_uri does not have a peg revision."
356 return 1
357 fi 382 fi
358 383
359 local peg_rev="${repo_uri##*@}" 384 local peg_rev=
360 385 [[ ${repo_uri} = *@* ]] && peg_rev="${repo_uri##*@}"
361 case "$(subversion__to_upper_case "${peg_rev}")" in
362 [[:digit:]]*)
363 # NUMBER
364 ;;
365 HEAD|BASE|COMMITED|PREV)
366 ;;
367 {[^}]*})
368 # DATE
369 ;;
370 *)
371 debug-print "${FUNCNAME}: repo_uri does not have a peg revision."
372 return 1
373 ;;
374 esac
375 386
376 debug-print "${FUNCNAME}: peg_rev = ${peg_rev}" 387 debug-print "${FUNCNAME}: peg_rev = ${peg_rev}"
377 388
378 return 0 389 echo "${peg_rev}"
379} 390}
380
381
382## -- subversion__to_upper_case() ----------------------------------------- #
383#
384# @param $@ - the strings to upper case.
385#
386function subversion__to_upper_case() {
387 echo "${@}" | tr "[a-z]" "[A-Z]"
388}

Legend:
Removed from v.1.44  
changed lines
  Added in v.1.48

  ViewVC Help
Powered by ViewVC 1.1.20