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

Contents of /eclass/subversion.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.80 - (show annotations) (download)
Sun Jul 29 03:37:37 2012 UTC (2 years, 2 months ago) by hattya
Branch: MAIN
Changes since 1.79: +1 -3 lines
remove DESCRIPTION variable wrt bug #428304

1 # Copyright 1999-2012 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/subversion.eclass,v 1.79 2012/06/10 11:31:12 hattya Exp $
4
5 # @ECLASS: subversion.eclass
6 # @MAINTAINER:
7 # Akinori Hattori <hattya@gentoo.org>
8 # @AUTHOR:
9 # Original Author: Akinori Hattori <hattya@gentoo.org>
10 # @BLURB: The subversion eclass is written to fetch software sources from subversion repositories
11 # @DESCRIPTION:
12 # The subversion eclass provides functions to fetch, patch and bootstrap
13 # software sources from subversion repositories.
14
15 inherit eutils
16
17 ESVN="${ECLASS}"
18
19 case "${EAPI:-0}" in
20 0|1)
21 EXPORT_FUNCTIONS src_unpack pkg_preinst
22 ;;
23 *)
24 EXPORT_FUNCTIONS src_unpack src_prepare pkg_preinst
25 ;;
26 esac
27
28 SUBVERSION_DEPEND="dev-vcs/subversion
29 net-misc/rsync"
30
31 if [[ -z "${ESVN_DISABLE_DEPENDENCIES}" ]]; then
32 DEPEND="${SUBVERSION_DEPEND}"
33 fi
34
35 # @ECLASS-VARIABLE: ESVN_STORE_DIR
36 # @DESCRIPTION:
37 # subversion sources store directory. Users may override this in /etc/make.conf
38 [[ -z ${ESVN_STORE_DIR} ]] && ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/svn-src"
39
40 # @ECLASS-VARIABLE: ESVN_FETCH_CMD
41 # @DESCRIPTION:
42 # subversion checkout command
43 ESVN_FETCH_CMD="svn checkout"
44
45 # @ECLASS-VARIABLE: ESVN_UPDATE_CMD
46 # @DESCRIPTION:
47 # subversion update command
48 ESVN_UPDATE_CMD="svn update"
49
50 # @ECLASS-VARIABLE: ESVN_SWITCH_CMD
51 # @DESCRIPTION:
52 # subversion switch command
53 ESVN_SWITCH_CMD="svn switch"
54
55 # @ECLASS-VARIABLE: ESVN_OPTIONS
56 # @DESCRIPTION:
57 # the options passed to checkout or update. If you want a specific revision see
58 # ESVN_REPO_URI instead of using -rREV.
59 ESVN_OPTIONS="${ESVN_OPTIONS:-}"
60
61 # @ECLASS-VARIABLE: ESVN_REPO_URI
62 # @DESCRIPTION:
63 # repository uri
64 #
65 # e.g. http://foo/trunk, svn://bar/trunk, svn://bar/branch/foo@1234
66 #
67 # supported protocols:
68 # http://
69 # https://
70 # svn://
71 # svn+ssh://
72 #
73 # to peg to a specific revision, append @REV to the repo's uri
74 ESVN_REPO_URI="${ESVN_REPO_URI:-}"
75
76 # @ECLASS-VARIABLE: ESVN_REVISION
77 # @DESCRIPTION:
78 # User configurable revision checkout or update to from the repository
79 #
80 # Useful for live svn or trunk svn ebuilds allowing the user to peg
81 # to a specific revision
82 #
83 # Note: This should never be set in an ebuild!
84 ESVN_REVISION="${ESVN_REVISION:-}"
85
86 # @ECLASS-VARIABLE: ESVN_USER
87 # @DESCRIPTION:
88 # User name
89 ESVN_USER="${ESVN_USER:-}"
90
91 # @ECLASS-VARIABLE: ESVN_PASSWORD
92 # @DESCRIPTION:
93 # Password
94 ESVN_PASSWORD="${ESVN_PASSWORD:-}"
95
96 # @ECLASS-VARIABLE: ESVN_PROJECT
97 # @DESCRIPTION:
98 # project name of your ebuild (= name space)
99 #
100 # subversion eclass will check out the subversion repository like:
101 #
102 # ${ESVN_STORE_DIR}/${ESVN_PROJECT}/${ESVN_REPO_URI##*/}
103 #
104 # so if you define ESVN_REPO_URI as http://svn.collab.net/repo/svn/trunk or
105 # http://svn.collab.net/repo/svn/trunk/. and PN is subversion-svn.
106 # it will check out like:
107 #
108 # ${ESVN_STORE_DIR}/subversion/trunk
109 #
110 # this is not used in order to declare the name of the upstream project.
111 # so that you can declare this like:
112 #
113 # # jakarta commons-loggin
114 # ESVN_PROJECT=commons/logging
115 #
116 # default: ${PN/-svn}.
117 ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}"
118
119 # @ECLASS-VARIABLE: ESVN_BOOTSTRAP
120 # @DESCRIPTION:
121 # bootstrap script or command like autogen.sh or etc..
122 ESVN_BOOTSTRAP="${ESVN_BOOTSTRAP:-}"
123
124 # @ECLASS-VARIABLE: ESVN_PATCHES
125 # @DESCRIPTION:
126 # subversion eclass can apply patches in subversion_bootstrap().
127 # you can use regexp in this variable like *.diff or *.patch or etc.
128 # NOTE: patches will be applied before ESVN_BOOTSTRAP is processed.
129 #
130 # Patches are searched both in ${PWD} and ${FILESDIR}, if not found in either
131 # location, the installation dies.
132 ESVN_PATCHES="${ESVN_PATCHES:-}"
133
134 # @ECLASS-VARIABLE: ESVN_RESTRICT
135 # @DESCRIPTION:
136 # this should be a space delimited list of subversion eclass features to
137 # restrict.
138 # export)
139 # don't export the working copy to S.
140 ESVN_RESTRICT="${ESVN_RESTRICT:-}"
141
142 # @ECLASS-VARIABLE: ESVN_DISABLE_DEPENDENCIES
143 # @DESCRIPTION:
144 # Set this variable to a non-empty value to disable the automatic inclusion of
145 # Subversion in dependencies.
146 ESVN_DISABLE_DEPENDENCIES="${ESVN_DISABLE_DEPENDENCIES:-}"
147
148 # @ECLASS-VARIABLE: ESVN_OFFLINE
149 # @DESCRIPTION:
150 # Set this variable to a non-empty value to disable the automatic updating of
151 # an svn source tree. This is intended to be set outside the subversion source
152 # tree by users.
153 ESVN_OFFLINE="${ESVN_OFFLINE:-${EVCS_OFFLINE}}"
154
155 # @ECLASS-VARIABLE: ESVN_UMASK
156 # @DESCRIPTION:
157 # Set this variable to a custom umask. This is intended to be set by users.
158 # By setting this to something like 002, it can make life easier for people
159 # who do development as non-root (but are in the portage group), and then
160 # switch over to building with FEATURES=userpriv. Or vice-versa. Shouldn't
161 # be a security issue here as anyone who has portage group write access
162 # already can screw the system over in more creative ways.
163 ESVN_UMASK="${ESVN_UMASK:-${EVCS_UMASK}}"
164
165 # @ECLASS-VARIABLE: ESVN_UP_FREQ
166 # @DESCRIPTION:
167 # Set the minimum number of hours between svn up'ing in any given svn module. This is particularly
168 # useful for split KDE ebuilds where we want to ensure that all submodules are compiled for the same
169 # revision. It should also be kept user overrideable.
170 ESVN_UP_FREQ="${ESVN_UP_FREQ:=}"
171
172 # @ECLASS-VARIABLE: ESCM_LOGDIR
173 # @DESCRIPTION:
174 # User configuration variable. If set to a path such as e.g. /var/log/scm any
175 # package inheriting from subversion.eclass will record svn revision to
176 # ${CATEGORY}/${PN}.log in that path in pkg_preinst. This is not supposed to be
177 # set by ebuilds/eclasses. It defaults to empty so users need to opt in.
178 ESCM_LOGDIR="${ESCM_LOGDIR:=}"
179
180 # @FUNCTION: subversion_fetch
181 # @USAGE: [repo_uri] [destination]
182 # @DESCRIPTION:
183 # Wrapper function to fetch sources from subversion via svn checkout or svn update,
184 # depending on whether there is an existing working copy in ${ESVN_STORE_DIR}.
185 #
186 # Can take two optional parameters:
187 # repo_uri - a repository URI. default is ESVN_REPO_URI.
188 # destination - a check out path in S.
189 subversion_fetch() {
190 local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")"
191 local revision="$(subversion__get_peg_revision "${1:-${ESVN_REPO_URI}}")"
192 local S_dest="${2}"
193
194 if [[ -z ${repo_uri} ]]; then
195 die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty."
196 fi
197
198 [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}"
199
200 # check for the protocol
201 local protocol="${repo_uri%%:*}"
202 case "${protocol}" in
203 http|https)
204 if ! built_with_use -o dev-vcs/subversion webdav-neon webdav-serf; then
205 echo
206 eerror "In order to emerge this package, you need to"
207 eerror "reinstall Subversion with support for WebDAV."
208 eerror "Subversion requires either Neon or Serf to support WebDAV."
209 echo
210 die "${ESVN}: reinstall Subversion with support for WebDAV."
211 fi
212 ;;
213 svn|svn+ssh)
214 ;;
215 *)
216 die "${ESVN}: fetch from '${protocol}' is not yet implemented."
217 ;;
218 esac
219
220 addread "/etc/subversion"
221 addwrite "${ESVN_STORE_DIR}"
222
223 if [[ -n "${ESVN_UMASK}" ]]; then
224 eumask_push "${ESVN_UMASK}"
225 fi
226
227 if [[ ! -d ${ESVN_STORE_DIR} ]]; then
228 debug-print "${FUNCNAME}: initial checkout. creating subversion directory"
229 mkdir -m 775 -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}."
230 fi
231
232 pushd "${ESVN_STORE_DIR}" >/dev/null || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}"
233
234 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
235 local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion"
236
237 [[ -n "${revision}" ]] && options="${options} -r ${revision}"
238
239 if [[ "${ESVN_OPTIONS}" = *-r* ]]; then
240 ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please"
241 ewarn "see \${ESVN_REPO_URI}"
242 fi
243
244 if has_version ">=dev-vcs/subversion-1.6.0"; then
245 options="${options} --config-option=config:auth:password-stores="
246 fi
247
248 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\""
249 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\""
250 debug-print "${FUNCNAME}: options = \"${options}\""
251
252 if [[ ! -d ${wc_path}/.svn ]]; then
253 if [[ -n ${ESVN_OFFLINE} ]]; then
254 ewarn "ESVN_OFFLINE cannot be used when there is no existing checkout."
255 fi
256 # first check out
257 einfo "subversion check out start -->"
258 einfo " repository: ${repo_uri}${revision:+@}${revision}"
259
260 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}"
261
262 mkdir -m 775 -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}."
263 cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}"
264 if [[ -n "${ESVN_USER}" ]]; then
265 ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
266 else
267 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
268 fi
269
270 elif [[ -n ${ESVN_OFFLINE} ]]; then
271 svn upgrade "${wc_path}" &>/dev/null
272 svn cleanup "${wc_path}" &>/dev/null
273 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
274
275 if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then
276 die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally."
277 fi
278 einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}."
279 else
280 svn upgrade "${wc_path}" &>/dev/null
281 svn cleanup "${wc_path}" &>/dev/null
282 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
283
284 local esvn_up_freq=
285 if [[ -n ${ESVN_UP_FREQ} ]]; then
286 if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then
287 die "${ESVN}: ESVN_UP_FREQ must be an integer value corresponding to the minimum number of hours between svn up."
288 elif [[ -z $(find "${wc_path}/.svn/entries" -mmin "+$((ESVN_UP_FREQ*60))") ]]; then
289 einfo "Fetching disabled since ${ESVN_UP_FREQ} hours has not passed since last update."
290 einfo "Using existing repository copy at revision ${ESVN_WC_REVISION}."
291 esvn_up_freq=no_update
292 fi
293 fi
294
295 if [[ -z ${esvn_up_freq} ]]; then
296 if [[ ${ESVN_WC_UUID} != $(subversion__svn_info "${repo_uri}" "Repository UUID") ]]; then
297 # UUID mismatch. Delete working copy and check out it again.
298 einfo "subversion recheck out start -->"
299 einfo " old UUID: ${ESVN_WC_UUID}"
300 einfo " new UUID: $(subversion__svn_info "${repo_uri}" "Repository UUID")"
301 einfo " repository: ${repo_uri}${revision:+@}${revision}"
302
303 rm -fr "${ESVN_PROJECT}" || die
304
305 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}"
306
307 mkdir -m 775 -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}."
308 cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}"
309 if [[ -n "${ESVN_USER}" ]]; then
310 ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
311 else
312 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}."
313 fi
314 elif [[ ${ESVN_WC_URL} != $(subversion__get_repository_uri "${repo_uri}") ]]; then
315 einfo "subversion switch start -->"
316 einfo " old repository: ${ESVN_WC_URL}@${ESVN_WC_REVISION}"
317 einfo " new repository: ${repo_uri}${revision:+@}${revision}"
318
319 debug-print "${FUNCNAME}: ${ESVN_SWITCH_CMD} ${options} ${repo_uri}"
320
321 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
322 if [[ -n "${ESVN_USER}" ]]; then
323 ${ESVN_SWITCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
324 else
325 ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
326 fi
327 else
328 # update working copy
329 einfo "subversion update start -->"
330 einfo " repository: ${repo_uri}${revision:+@}${revision}"
331
332 debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}"
333
334 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
335 if [[ -n "${ESVN_USER}" ]]; then
336 ${ESVN_UPDATE_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
337 else
338 ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}."
339 fi
340 fi
341 fi
342 fi
343
344 if [[ -n "${ESVN_UMASK}" ]]; then
345 eumask_pop
346 fi
347
348 einfo " working copy: ${wc_path}"
349
350 if ! has "export" ${ESVN_RESTRICT}; then
351 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
352
353 local S="${S}/${S_dest}"
354 mkdir -p "${S}"
355
356 # export to the ${WORKDIR}
357 #* "svn export" has a bug. see http://bugs.gentoo.org/119236
358 #* svn export . "${S}" || die "${ESVN}: can't export to ${S}."
359 rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}."
360 fi
361
362 popd >/dev/null
363 echo
364 }
365
366 # @FUNCTION: subversion_bootstrap
367 # @DESCRIPTION:
368 # Apply patches in ${ESVN_PATCHES} and run ${ESVN_BOOTSTRAP} if specified.
369 subversion_bootstrap() {
370 if has "export" ${ESVN_RESTRICT}; then
371 return
372 fi
373
374 cd "${S}"
375
376 if [[ -n ${ESVN_PATCHES} ]]; then
377 local patch fpatch
378 einfo "apply patches -->"
379 for patch in ${ESVN_PATCHES}; do
380 if [[ -f ${patch} ]]; then
381 epatch "${patch}"
382 else
383 for fpatch in ${FILESDIR}/${patch}; do
384 if [[ -f ${fpatch} ]]; then
385 epatch "${fpatch}"
386 else
387 die "${ESVN}: ${patch} not found"
388 fi
389 done
390 fi
391 done
392 echo
393 fi
394
395 if [[ -n ${ESVN_BOOTSTRAP} ]]; then
396 einfo "begin bootstrap -->"
397 if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then
398 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}"
399 eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP."
400 else
401 einfo " bootstrap with command: ${ESVN_BOOTSTRAP}"
402 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP."
403 fi
404 fi
405 }
406
407 # @FUNCTION: subversion_wc_info
408 # @USAGE: [repo_uri]
409 # @RETURN: ESVN_WC_URL, ESVN_WC_ROOT, ESVN_WC_UUID, ESVN_WC_REVISION and ESVN_WC_PATH
410 # @DESCRIPTION:
411 # Get svn info for the specified repo_uri. The default repo_uri is ESVN_REPO_URI.
412 #
413 # The working copy information on the specified repository URI are set to
414 # ESVN_WC_* variables.
415 subversion_wc_info() {
416 local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")"
417 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
418
419 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
420 debug-print "${FUNCNAME}: wc_path = ${wc_path}"
421
422 if [[ ! -d ${wc_path} ]]; then
423 return 1
424 fi
425
426 export ESVN_WC_URL="$(subversion__svn_info "${wc_path}" "URL")"
427 export ESVN_WC_ROOT="$(subversion__svn_info "${wc_path}" "Repository Root")"
428 export ESVN_WC_UUID="$(subversion__svn_info "${wc_path}" "Repository UUID")"
429 export ESVN_WC_REVISION="$(subversion__svn_info "${wc_path}" "Revision")"
430 export ESVN_WC_PATH="${wc_path}"
431 }
432
433 # @FUNCTION: subversion_src_unpack
434 # @DESCRIPTION:
435 # Default src_unpack. Fetch and, in older EAPIs, bootstrap.
436 subversion_src_unpack() {
437 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
438 if has "${EAPI:-0}" 0 1; then
439 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
440 fi
441 }
442
443 # @FUNCTION: subversion_src_prepare
444 # @DESCRIPTION:
445 # Default src_prepare. Bootstrap.
446 subversion_src_prepare() {
447 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
448 }
449
450 # @FUNCTION: subversion_pkg_preinst
451 # @USAGE: [repo_uri]
452 # @DESCRIPTION:
453 # Log the svn revision of source code. Doing this in pkg_preinst because we
454 # want the logs to stick around if packages are uninstalled without messing with
455 # config protection.
456 subversion_pkg_preinst() {
457 local pkgdate=$(date "+%Y%m%d %H:%M:%S")
458 subversion_wc_info "${1}"
459 if [[ -n ${ESCM_LOGDIR} ]]; then
460 local dir="${ROOT}/${ESCM_LOGDIR}/${CATEGORY}"
461 if [[ ! -d ${dir} ]]; then
462 mkdir -p "${dir}" || eerror "Failed to create '${dir}' for logging svn revision"
463 fi
464 local logmessage="svn: ${pkgdate} - ${PF}:${SLOT} was merged at revision ${ESVN_WC_REVISION}"
465 if [[ -d ${dir} ]]; then
466 echo "${logmessage}" >>"${dir}/${PN}.log"
467 else
468 eerror "Could not log the message '${logmessage}' to '${dir}/${PN}.log'"
469 fi
470 fi
471 }
472
473 ## -- Private Functions
474
475 ## -- subversion__svn_info() ------------------------------------------------- #
476 #
477 # param $1 - a target.
478 # param $2 - a key name.
479 #
480 subversion__svn_info() {
481 local target="${1}"
482 local key="${2}"
483
484 env LC_ALL=C svn info ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${target}" \
485 | grep -i "^${key}" \
486 | cut -d" " -f2-
487 }
488
489 ## -- subversion__get_repository_uri() --------------------------------------- #
490 #
491 # param $1 - a repository URI.
492 subversion__get_repository_uri() {
493 local repo_uri="${1}"
494
495 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
496 if [[ -z ${repo_uri} ]]; then
497 die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty."
498 fi
499 # delete trailing slash
500 if [[ -z ${repo_uri##*/} ]]; then
501 repo_uri="${repo_uri%/}"
502 fi
503 repo_uri="${repo_uri%@*}"
504
505 echo "${repo_uri}"
506 }
507
508 ## -- subversion__get_wc_path() ---------------------------------------------- #
509 #
510 # param $1 - a repository URI.
511 subversion__get_wc_path() {
512 local repo_uri="$(subversion__get_repository_uri "${1}")"
513
514 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
515
516 echo "${ESVN_STORE_DIR}/${ESVN_PROJECT}/${repo_uri##*/}"
517 }
518
519 ## -- subversion__get_peg_revision() ----------------------------------------- #
520 #
521 # param $1 - a repository URI.
522 subversion__get_peg_revision() {
523 local repo_uri="${1}"
524 local peg_rev=
525
526 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
527 # repo_uri has peg revision?
528 if [[ ${repo_uri} = *@* ]]; then
529 peg_rev="${repo_uri##*@}"
530 debug-print "${FUNCNAME}: peg_rev = ${peg_rev}"
531 else
532 debug-print "${FUNCNAME}: repo_uri does not have a peg revision."
533 fi
534
535 echo "${peg_rev}"
536 }

  ViewVC Help
Powered by ViewVC 1.1.20