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

Diff of /eclass/subversion.eclass

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

Revision 1.31 Revision 1.48
1# Copyright 1999-2006 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.31 2006/04/30 09:26:56 hattya 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
24HOMEPAGE="http://subversion.tigris.org/"
25DESCRIPTION="Based on the ${ECLASS} eclass" 25DESCRIPTION="Based on the ${ECLASS} eclass"
26 26
27
28## -- add subversion in DEPEND
29#
30DEPEND="dev-util/subversion" 27DEPEND="dev-util/subversion
28 net-misc/rsync"
31 29
32 30# @ECLASS-VARIABLE: ESVN_STORE_DIR
33## -- ESVN_STORE_DIR: subversion sources store directory 31# @DESCRIPTION:
34# 32# subversion sources store directory. Users may override this in /etc/make.conf
35ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/svn-src" 33[[ -z ${ESVN_STORE_DIR} ]] && ESVN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/svn-src"
36 34
37 35# @ECLASS-VARIABLE: ESVN_FETCH_CMD
38## -- ESVN_FETCH_CMD: subversion fetch command 36# @DESCRIPTION:
39# 37# subversion checkout command
40ESVN_FETCH_CMD="svn checkout" 38ESVN_FETCH_CMD="svn checkout"
41 39
42## -- ESVN_UPDATE_CMD: subversion update command 40# @ECLASS-VARIABLE: ESVN_UPDATE_CMD
43# 41# @DESCRIPTION:
42# subversion update command
44ESVN_UPDATE_CMD="svn update" 43ESVN_UPDATE_CMD="svn update"
45 44
45# @ECLASS-VARIABLE: ESVN_SWITCH_CMD
46# @DESCRIPTION:
47# subversion switch command
48ESVN_SWITCH_CMD="svn switch"
46 49
47## -- ESVN_OPTIONS: 50# @ECLASS-VARIABLE: ESVN_OPTIONS
48# 51# @DESCRIPTION:
49# the options passed to checkout or update. 52# the options passed to checkout or update. If you want a specific revision see
50# 53# ESVN_REPO_URI instead of using -rREV.
51[ -z "${ESVN_OPTIONS}" ] && ESVN_OPTIONS= 54ESVN_OPTIONS="${ESVN_OPTIONS:-}"
52 55
53 56# @ECLASS-VARIABLE: ESVN_REPO_URI
54## -- ESVN_REPO_URI: repository uri 57# @DESCRIPTION:
58# repository uri
55# 59#
56# e.g. http://foo/trunk, svn://bar/trunk 60# e.g. http://foo/trunk, svn://bar/trunk, svn://bar/branch/foo@1234
57# 61#
58# supported protocols: 62# supported protocols:
59# http:// 63# http://
60# https:// 64# https://
61# svn:// 65# svn://
66# svn+ssh://
62# 67#
63[ -z "${ESVN_REPO_URI}" ] && 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
66## -- ESVN_PROJECT: project name of your ebuild 81# @ECLASS-VARIABLE: ESVN_PROJECT
82# @DESCRIPTION:
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#
73# http://svn.collab.net/repo/svn/trunk/. and PN is subversion-svn. 90# http://svn.collab.net/repo/svn/trunk/. and PN is subversion-svn.
74# it will check out like: 91# it will check out like:
75# 92#
76# ${ESVN_STORE_DIR}/subversion/trunk 93# ${ESVN_STORE_DIR}/subversion/trunk
77# 94#
95# this is not used in order to declare the name of the upstream project.
96# so that you can declare this like:
97#
98# # jakarta commons-loggin
99# ESVN_PROJECT=commons/logging
100#
78# default: ${PN/-svn}. 101# default: ${PN/-svn}.
79# 102ESVN_PROJECT="${ESVN_PROJECT:-${PN/-svn}}"
80[ -z "${ESVN_PROJECT}" ] && ESVN_PROJECT="${PN/-svn}"
81 103
82 104# @ECLASS-VARIABLE: ESVN_BOOTSTRAP
83## -- ESVN_BOOTSTRAP: 105# @DESCRIPTION:
84#
85# bootstrap script or command like autogen.sh or etc.. 106# bootstrap script or command like autogen.sh or etc..
86# 107ESVN_BOOTSTRAP="${ESVN_BOOTSTRAP:-}"
87[ -z "${ESVN_BOOTSTRAP}" ] && ESVN_BOOTSTRAP=""
88 108
89 109# @ECLASS-VARIABLE: ESVN_PATCHES
90## -- ESVN_PATCHES: 110# @DESCRIPTION:
91#
92# subversion eclass can apply pathces in subversion_bootstrap(). 111# subversion eclass can apply patches in subversion_bootstrap().
93# you can use regexp in this valiable like *.diff or *.patch or etc. 112# you can use regexp in this variable like *.diff or *.patch or etc.
94# NOTE: this patches will apply before eval ESVN_BOOTSTRAP. 113# NOTE: patches will be applied before ESVN_BOOTSTRAP is processed.
95# 114#
96# the process of applying the patch is: 115# Patches are searched both in ${PWD} and ${FILESDIR}, if not found in either
97# 1. just epatch it, if the patch exists in the path. 116# location, the installation dies.
98# 2. scan it under FILESDIR and epatch it, if the patch exists in FILESDIR. 117ESVN_PATCHES="${ESVN_PATCHES:-}"
99# 3. die.
100#
101[ -z "${ESVN_PATCHES}" ] && ESVN_PATCHES=""
102 118
119# @ECLASS-VARIABLE: ESVN_RESTRICT
120# @DESCRIPTION:
121# this should be a space delimited list of subversion eclass features to
122# restrict.
123# export)
124# don't export the working copy to S.
125ESVN_RESTRICT="${ESVN_RESTRICT:-}"
103 126
104## -- subversion_svn_fetch() ------------------------------------------------- # 127# @FUNCTION: subversion_fetch
105 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}.
132#
133# Can take two optional parameters:
134# repo_uri - a repository URI. default is ESVN_REPO_URI.
135# destination - a check out path in S.
106function subversion_svn_fetch() { 136subversion_fetch() {
137 local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")"
138 local revision="$(subversion__get_peg_revision "${1:-${ESVN_REPO_URI}}")"
139 local S_dest="${2}"
107 140
108 local ESVN_CO_DIR 141 [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}"
109 142
110 # ESVN_REPO_URI is empty.
111 [ -z "${ESVN_REPO_URI}" ] && die "${ESVN}: ESVN_REPO_URI is empty."
112
113 # check for the protocol. 143 # check for the protocol
114 case ${ESVN_REPO_URI%%:*} in 144 local protocol="${repo_uri%%:*}"
145
146 case "${protocol}" in
115 http|https) 147 http|https)
116 if built_with_use dev-util/subversion nowebdav; then 148 if built_with_use dev-util/subversion nowebdav; then
149 echo
117 eerror "In order to emerge this package, you need to" 150 eerror "In order to emerge this package, you need to"
118 eerror "re-emerge subversion with USE=-nowebdav" 151 eerror "re-emerge subversion with USE=-nowebdav"
152 echo
119 die "Please run 'USE=-nowebdav emerge subversion'" 153 die "${ESVN}: please run 'USE=-nowebdav emerge subversion'"
120 fi 154 fi
121 ;; 155 ;;
122 svn) ;; 156 svn|svn+ssh)
157 ;;
123 *) 158 *)
124 die "${ESVN}: fetch from "${ESVN_REPO_URI%:*}" is not yet implemented." 159 die "${ESVN}: fetch from '${protocol}' is not yet implemented."
125 ;; 160 ;;
126 esac 161 esac
127 162
163 addread "/etc/subversion"
164 addwrite "${ESVN_STORE_DIR}"
165
128 if [ ! -d "${ESVN_STORE_DIR}" ]; then 166 if [[ ! -d ${ESVN_STORE_DIR} ]]; then
129 debug-print "${FUNCNAME}: initial checkout. creating subversion directory" 167 debug-print "${FUNCNAME}: initial checkout. creating subversion directory"
130
131 addwrite /
132 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}."
133 chmod -f o+rw "${ESVN_STORE_DIR}" || die "${ESVN}: can't chmod ${ESVN_STORE_DIR}."
134 export SANDBOX_WRITE="${SANDBOX_WRITE%%:/}"
135 fi 169 fi
136 170
137 cd -P "${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}"
138 ESVN_STORE_DIR=${PWD}
139 172
140 # every time 173 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
141 addwrite "/etc/subversion"
142 addwrite "${ESVN_STORE_DIR}"
143
144 if ! has userpriv ${FEATURES}; then
145 # -userpriv
146 addwrite "/root/.subversion"
147
148 else
149 # +userpriv
150 ESVN_OPTIONS="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion" 174 local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion"
151 175
152 fi 176 [[ -n "${revision}" ]] && options="${options} -r ${revision}"
153 177
154 [ -z "${ESVN_REPO_URI##*/}" ] && ESVN_REPO_URI="${ESVN_REPO_URI%/}" 178 if [[ "${ESVN_OPTIONS}" = *-r* ]]; then
155 ESVN_CO_DIR="${ESVN_PROJECT}/${ESVN_REPO_URI##*/}" 179 ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please"
180 ewarn "see \${ESVN_REPO_URI}"
181 fi
156 182
183 debug-print "${FUNCNAME}: wc_path = \"${wc_path}\""
157 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\"" 184 debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\""
185 debug-print "${FUNCNAME}: options = \"${options}\""
158 186
159 if [ ! -d "${ESVN_CO_DIR}/.svn" ]; then 187 if [[ ! -d ${wc_path}/.svn ]]; then
160 # first check out 188 # first check out
161 einfo "subversion check out start -->" 189 einfo "subversion check out start -->"
162 einfo " repository: ${ESVN_REPO_URI}" 190 einfo " repository: ${repo_uri}${revision:+@}${revision}"
163 191
192 debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}"
193
164 mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}." 194 mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}."
165 chmod -f o+rw "${ESVN_PROJECT}" || die "${ESVN}: can't chmod ${ESVN_PROJECT}." 195 cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}"
166 cd "${ESVN_PROJECT}" 196 ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch from ${repo_uri}."
167 ${ESVN_FETCH_CMD} ${ESVN_OPTIONS} "${ESVN_REPO_URI}" || die "${ESVN}: can't fetch from ${ESVN_REPO_URI}."
168 197
169 else 198 else
199 subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy."
200
201 if [[ ${ESVN_WC_URL} != $(subversion__get_repository_uri "${repo_uri}") ]]; then
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
170 # update working copy 211 # update working copy
171 einfo "subversion update start -->" 212 einfo "subversion update start -->"
172 einfo " repository: ${ESVN_REPO_URI}" 213 einfo " repository: ${repo_uri}${revision:+@}${revision}"
173 214
174 cd "${ESVN_CO_DIR}" 215 debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}"
216
217 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
175 ${ESVN_UPDATE_CMD} ${ESVN_OPTIONS} || die "${ESVN}: can't update from ${ESVN_REPO_URI}." 218 ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update from ${repo_uri}."
176
177 fi 219 fi
178 220
179 einfo " working copy: ${ESVN_STORE_DIR}/${ESVN_CO_DIR}" 221 fi
180 222
223 einfo " working copy: ${wc_path}"
224
225 if ! has "export" ${ESVN_RESTRICT}; then
226 cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}"
227
228 local S="${S}/${S_dest}"
229
181 # export to the ${WORKDIR} 230 # export to the ${WORKDIR}
182 # "svn export" has a bug. see http://bugs.gentoo.org/119236 231 #* "svn export" has a bug. see http://bugs.gentoo.org/119236
183 #svn export "${ESVN_STORE_DIR}/${ESVN_CO_DIR}" "${S}" || die "${ESVN}: can't export to ${S}." 232 #* svn export . "${S}" || die "${ESVN}: can't export to ${S}."
184 rsync -a --exclude=".svn/" "${ESVN_STORE_DIR}/${ESVN_CO_DIR}/" "${S}" || die "${ESVN}: can't export to ${S}." 233 rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}."
234 fi
235
185 echo 236 echo
186
187} 237}
188 238
189 239# @FUNCTION: subversion_bootstrap
190## -- subversion_bootstrap() ------------------------------------------------ # 240# @DESCRIPTION:
191 241# Apply patches in ${ESVN_PATCHES} and run ${ESVN_BOOTSTRAP} if specified.
192function subversion_bootstrap() { 242subversion_bootstrap() {
193 243 if has "export" ${ESVN_RESTRICT}; then
194 local patch lpatch 244 return
245 fi
195 246
196 cd "${S}" 247 cd "${S}"
197 248
198 if [ "${ESVN_PATCHES}" ]; then 249 if [[ -n ${ESVN_PATCHES} ]]; then
199 einfo "apply patches -->" 250 einfo "apply patches -->"
200 251
252 local patch fpatch
253
201 for patch in ${ESVN_PATCHES}; do 254 for patch in ${ESVN_PATCHES}; do
202 if [ -f "${patch}" ]; then 255 if [[ -f ${patch} ]]; then
203 epatch ${patch} 256 epatch "${patch}"
204 257
205 else 258 else
206 for lpatch in ${FILESDIR}/${patch}; do 259 for fpatch in ${FILESDIR}/${patch}; do
207 if [ -f "${lpatch}" ]; then 260 if [[ -f ${fpatch} ]]; then
208 epatch ${lpatch} 261 epatch "${fpatch}"
209 262
210 else 263 else
211 die "${ESVN}; ${patch} is not found" 264 die "${ESVN}: ${patch} not found"
212 265
213 fi 266 fi
214 done 267 done
268
215 fi 269 fi
216 done 270 done
271
217 echo 272 echo
218 fi 273 fi
219 274
220 if [ "${ESVN_BOOTSTRAP}" ]; then 275 if [[ -n ${ESVN_BOOTSTRAP} ]]; then
221 einfo "begin bootstrap -->" 276 einfo "begin bootstrap -->"
222 277
223 if [ -f "${ESVN_BOOTSTRAP}" -a -x "${ESVN_BOOTSTRAP}" ]; then 278 if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then
224 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}" 279 einfo " bootstrap with a file: ${ESVN_BOOTSTRAP}"
225 eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP." 280 eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP."
226 281
227 else 282 else
228 einfo " bootstrap with commands: ${ESVN_BOOTSTRAP}" 283 einfo " bootstrap with command: ${ESVN_BOOTSTRAP}"
229 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP." 284 eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP."
230 285
231 fi 286 fi
232 fi 287 fi
233
234} 288}
235 289
236 290# @FUNCTION: subversion_src_unpack
237## -- subversion_src_unpack() ------------------------------------------------ # 291# @DESCRIPTION:
238 292# default src_unpack. fetch and bootstrap.
239function subversion_src_unpack() { 293subversion_src_unpack() {
240
241 subversion_svn_fetch || die "${ESVN}: unknown problem in subversion_svn_fetch()." 294 subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch."
242 subversion_bootstrap || die "${ESVN}: unknown problem in subversion_bootstrap()." 295 subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
243
244} 296}
297
298# @FUNCTION: 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.
303#
304# The working copy information on the specified repository URI are set to
305# ESVN_WC_* variables.
306subversion_wc_info() {
307 local repo_uri="$(subversion__get_repository_uri "${1}")"
308 local wc_path="$(subversion__get_wc_path "${repo_uri}")"
309
310 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
311 debug-print "${FUNCNAME}: wc_path = ${wc_path}"
312
313 if [[ ! -d ${wc_path} ]]; then
314 return 1
315 fi
316
317 export ESVN_WC_URL="$(subversion__svn_info "${wc_path}" "URL")"
318 export ESVN_WC_ROOT="$(subversion__svn_info "${wc_path}" "Repository Root")"
319 export ESVN_WC_UUID="$(subversion__svn_info "${wc_path}" "Repository UUID")"
320 export ESVN_WC_REVISION="$(subversion__svn_info "${wc_path}" "Revision")"
321 export ESVN_WC_PATH="${wc_path}"
322}
323
324## -- Private Functions
325
326## -- subversion__svn_info() ------------------------------------------------- #
327#
328# param $1 - a target.
329# param $2 - a key name.
330#
331subversion__svn_info() {
332 local target="${1}"
333 local key="${2}"
334
335 env LC_ALL=C svn info "${target}" | grep -i "^${key}" | cut -d" " -f2-
336}
337
338## -- subversion__get_repository_uri() --------------------------------------- #
339#
340# param $1 - a repository URI.
341subversion__get_repository_uri() {
342 local repo_uri="${1}"
343
344 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
345
346 if [[ -z ${repo_uri} ]]; then
347 die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty."
348 fi
349
350 # delete trailing slash
351 if [[ -z ${repo_uri##*/} ]]; then
352 repo_uri="${repo_uri%/}"
353 fi
354
355 repo_uri="${repo_uri%@*}"
356
357 echo "${repo_uri}"
358}
359
360## -- subversion__get_wc_path() ---------------------------------------------- #
361#
362# param $1 - a repository URI.
363subversion__get_wc_path() {
364 local repo_uri="$(subversion__get_repository_uri "${1}")"
365
366 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
367
368 echo "${ESVN_STORE_DIR}/${ESVN_PROJECT}/${repo_uri##*/}"
369}
370
371## -- subversion__get_peg_revision() ----------------------------------------- #
372#
373# param $1 - a repository URI.
374subversion__get_peg_revision() {
375 local repo_uri="${1}"
376
377 debug-print "${FUNCNAME}: repo_uri = ${repo_uri}"
378
379 # repo_uri has peg revision ?
380 if [[ ${repo_uri} != *@* ]]; then
381 debug-print "${FUNCNAME}: repo_uri does not have a peg revision."
382 fi
383
384 local peg_rev=
385 [[ ${repo_uri} = *@* ]] && peg_rev="${repo_uri##*@}"
386
387 debug-print "${FUNCNAME}: peg_rev = ${peg_rev}"
388
389 echo "${peg_rev}"
390}

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

  ViewVC Help
Powered by ViewVC 1.1.20