# HG changeset patch
# User holger@hoho.dyndns.org
# Date 1230386789 -3600
# Node ID e948db201a1e17bfeda7891c81d5ac55409c9242
# Parent bcd9c6ae2107d79f78320190dd0e8963ad95d189
bump subversion and mercurial
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/mercurial/Manifest
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/mercurial/Manifest Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,4 @@
+AUX 70mercurial-gentoo.el 76 RMD160 1891ab510adb464211b4cc35c5b6e4b149da79fa SHA1 72eb35d2bf86fa8f806acfbc823b88fc5188741b SHA256 c215746e4a5375569808c6aa6ddabe08e82d33d744128179be3142d9cd53a5ab
+DIST mercurial-1.1.1.tar.gz 950399 RMD160 ed4db64c2a45c030c3a949c51c1c468511eb3540 SHA1 42a26a29414dee2c8eb7ce32e4fc6fe447bccc0a SHA256 bd4d64b1e41427dd21da9d7fd355607e72ecbb761c98fa89facaaf03a12f1af1
+EBUILD mercurial-1.1.1.ebuild 3226 RMD160 743d444c471c607972c0cedb0da2599574b6672a SHA1 a29c432f1335a05cdf26aba60ccbb62e17540f5f SHA256 0f1b83d61da1f559d97d934c7c21601015cb8a622ece49344af3bc0294cca507
+MISC metadata.xml 645 RMD160 2a33b3987960796da78558e671c4e5e0c6f10241 SHA1 6cd04e19dc7796b53afe98a9831e128c4c96f3ca SHA256 e0b05e42345698eda32c513e3a8f14d8bf42d5344dcd804b1f2234da327524e2
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/mercurial/files/70mercurial-gentoo.el
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/mercurial/files/70mercurial-gentoo.el Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,3 @@
+;;; mercurial site-lisp configuration
+
+(add-to-list 'load-path "@SITELISP@")
\ No newline at end of file
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/mercurial/mercurial-1.1.1.ebuild
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/mercurial/mercurial-1.1.1.ebuild Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,118 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-util/mercurial/mercurial-1.0.2.ebuild,v 1.7 2008/10/17 08:04:41 aballier Exp $
+
+inherit bash-completion elisp-common flag-o-matic eutils distutils
+
+DESCRIPTION="Scalable distributed SCM"
+HOMEPAGE="http://www.selenic.com/mercurial/"
+SRC_URI="http://www.selenic.com/mercurial/release/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~hppa ia64 ppc ppc64 sparc x86 ~x86-fbsd"
+IUSE="bugzilla emacs gpg test zsh-completion"
+
+CDEPEND=">=dev-lang/python-2.3"
+RDEPEND="${CDEPEND}
+ bugzilla? ( dev-python/mysql-python )
+ gpg? ( app-crypt/gnupg )
+ zsh-completion? ( app-shells/zsh )"
+DEPEND="${CDEPEND}
+ emacs? ( virtual/emacs )
+ test? ( app-arch/unzip
+ dev-python/pygments )"
+
+PYTHON_MODNAME="${PN} hgext"
+SITEFILE="70${PN}-gentoo.el"
+
+src_compile() {
+ filter-flags -ftracer -ftree-vectorize
+
+ distutils_src_compile
+
+ if use emacs; then
+ cd "${S}"/contrib
+ elisp-compile mercurial.el || die "elisp-compile failed!"
+ fi
+
+ rm -rf contrib/{win32,macosx}
+}
+
+src_install() {
+ distutils_src_install
+
+ dobashcompletion contrib/bash_completion ${PN}
+
+ if use zsh-completion ; then
+ insinto /usr/share/zsh/site-functions
+ newins contrib/zsh_completion _hg
+ fi
+
+ rm -f doc/*.?.txt
+ dodoc CONTRIBUTORS PKG-INFO README doc/*.txt
+ cp hgweb*.cgi "${D}"/usr/share/doc/${PF}/
+
+ dobin contrib/hgk
+ dobin contrib/hg-relink
+ dobin contrib/hg-ssh
+
+ rm -f contrib/hgk contrib/hg-relink contrib/hg-ssh
+
+ rm -f contrib/bash_completion
+ cp -r contrib "${D}"/usr/share/doc/${PF}/
+ doman doc/*.?
+
+ cat > "${T}/80mercurial" <<-EOF
+HG=/usr/bin/hg
+EOF
+ doenvd "${T}/80mercurial"
+
+ if use emacs; then
+ elisp-install ${PN} contrib/mercurial.el* || die "elisp-install failed!"
+ elisp-site-file-install "${FILESDIR}"/${SITEFILE}
+ fi
+}
+
+src_test() {
+ local testdir="${T}/tests"
+ mkdir -p -m1777 "${testdir}" || die
+ cd "${S}/tests/"
+ rm -f *svn* # Subversion tests fail with 1.5
+ rm -f test-convert-baz* # GNU Arch baz
+ rm -f test-convert-cvs* # CVS
+ rm -f test-convert-darcs* # Darcs
+ rm -f test-convert-git* # git
+ rm -f test-convert-mtn* # monotone
+ rm -f test-convert-tla* # GNU Arch tla
+ rm -f test-doctest* # doctest always fails with python 2.5.x
+ if ! has userpriv ${FEATURES}; then
+ einfo "Removing tests which require user privileges to succeed"
+ rm -f test-command-template # Test is broken when run as root
+ rm -f test-convert # Test is broken when run as root
+ rm -f test-lock-badness # Test is broken when run as root
+ rm -f test-permissions # Test is broken when run as root
+ rm -f test-pull-permission # Test is broken when run as root
+ fi
+ einfo "Running Mercurial tests ..."
+ python run-tests.py --tmpdir="${testdir}" || die "test failed"
+}
+
+pkg_postinst() {
+ distutils_pkg_postinst
+ use emacs && elisp-site-regen
+ bash-completion_pkg_postinst
+
+ elog "If you want to convert repositories from other tools using convert"
+ elog "extension please install correct tool:"
+ elog " dev-util/cvs"
+ elog " dev-util/darcs"
+ elog " dev-util/git"
+ elog " dev-util/monotone"
+ elog " dev-util/subversion"
+}
+
+pkg_postrm() {
+ distutils_pkg_postrm
+ use emacs && elisp-site-regen
+}
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/mercurial/metadata.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/mercurial/metadata.xml Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,16 @@
+
+
+
+ no-herd
+
+ nelchael@gentoo.org
+ Krzysiek Pawlik
+
+
+
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/Manifest
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/Manifest Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,12 @@
+AUX 1.5.0/70svn-gentoo.el 435 RMD160 e9f4b2e5511523c124f9ba3781249db2860fe5a7 SHA1 c3a3081f79a579b848369cfae76662a98e97687e SHA256 a39bea9a821aa91c7990dd07e1c2d0cec79f1efaac04e2d61882b7c8d5346a34
+AUX 1.5.0/80subversion-extras 62 RMD160 c334b15a86eaf19129afa5b62558dd47504a4e3d SHA1 ba05e978e7ff7b047ec99225e4d932036c340d26 SHA256 758d07cf161fff5e0afef5791dca641d3af58192ad1e4874c5f5c2c285c1149d
+AUX 1.5.0/disable-unneeded-linking.patch 2409 RMD160 0d7c34cc83eff7d08369128762ed714fabcd1dde SHA1 92b80f6cb30fe569f79368aea66027a6da022c53 SHA256 2ef8fcd9fabfd1a71bdd50e1156cb9d421a7008fccd73b7ae3536e9a30886231
+AUX 70svn-gentoo.el 331 RMD160 1de1310ae7e4bdbecef3c685ef8d7ff95b9aab87 SHA1 48eb99e9d494a4a674de32e599914df234b627cd SHA256 c0d733bd3f7c75c47acaea4fd0c816d45ee2cd765da70dc494666f38c91e3d87
+AUX svnserve.confd 323 RMD160 cbf4d810d9f41bac1611004741170d1047cbeef0 SHA1 39e922bc777ba847eb85d421d92f560f84b895b5 SHA256 90d3e2532715a6230ebf65023566a6591eed4b3fc12abbca0d2fb7949e146006
+AUX svnserve.confd2 320 RMD160 dc1e74d06d9bd3eeb1a8dfd20aacebecd8378abb SHA1 557191219c3afa90126b8a2bfe7dd62b8a09eb82 SHA256 c70655c073dc06f538c5acdbcd49e216f4be2c859ce395bdf78757a1eeccab00
+AUX svnserve.initd 817 RMD160 59f4e8e983d4595b7c27615889a9c0809d015a18 SHA1 483b47512fb444c0f752ad4eb6c3252f659a967e SHA256 6b483e211b5c311079605e246fca9228c7e5762d27a023fa4c4529fdaa766b08
+AUX svnserve.xinetd 332 RMD160 c2fc4eb02da7e7405756fce650b8897f0a9da7f7 SHA1 d7d478fc257a40626888f9b12ee218df55dac570 SHA256 267f30c78ef6428aeeb97d3c64c06b9acfba4bc624766fc3c6a6d2c4133799a2
+AUX vc-svn.el 16847 RMD160 8665b9a34c8fd9acae40e18aac33026aff3a39d7 SHA1 4d1a5a9331ff96e943244a6d5538e4f0abeac9e7 SHA256 b4979d5df9fba02dbc8ad71d813229222e95ee1e8e89dec3060611d2d6be87aa
+DIST subversion-1.5.5.tar.bz2 4940482 RMD160 6400e387b3505180206b61729cb0b11baeae70d3 SHA1 61c9a7209ccef8eff3c0499629d62ed4d3c89988 SHA256 88cf24ba5d589351791709ff7556ababc019ec59f3240ac2087dacabb9ad77be
+EBUILD subversion-1.5.5.ebuild 13393 RMD160 0ef259d6fc6440536d9fb74c1fc24ad08b8c1997 SHA1 13bb283d304eedc5e1e9937be804e41e4db48015 SHA256 17e47cc89d09b11c79a924b8765a90d2bb0944506e54ab434c4a2016aca95a66
+MISC metadata.xml 958 RMD160 9e4aa5a4dfeef1a81c20121e8e75baf45d0962ca SHA1 c8844225273473a569cefae106533215961c287f SHA256 396a72dd2fddb8fb146ce87fa05692ab9f7d183057c0940d9365f88602a03dc7
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/1.5.0/70svn-gentoo.el
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/1.5.0/70svn-gentoo.el Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,12 @@
+;;; svn site-lisp configuration
+
+(add-to-list 'load-path "@SITELISP@")
+(and (< emacs-major-version 22)
+ (add-to-list 'load-path "@SITELISP@/compat"))
+(add-to-list 'vc-handled-backends 'SVN)
+
+(defalias 'svn-examine 'svn-status)
+(autoload 'svn-status "dsvn" "Run `svn status'." t)
+(autoload 'svn-update "dsvn" "Run `svn update'." t)
+(autoload 'svn-status "psvn"
+ "Examine the status of Subversion working copy in directory DIR." t)
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/1.5.0/80subversion-extras
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/1.5.0/80subversion-extras Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,2 @@
+ROOTPATH=/usr/lib/subversion/bin
+PATH=/usr/lib/subversion/bin
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/1.5.0/disable-unneeded-linking.patch
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/1.5.0/disable-unneeded-linking.patch Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,81 @@
+--- configure.ac
++++ configure.ac
+@@ -234,6 +234,8 @@
+ AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
+ [The desired patch version for the Berkeley DB])
+
++AC_SUBST(SVN_DB_LIBS)
++
+ SVN_LIB_SASL
+
+ if test "$svn_lib_sasl" = "yes"; then
+--- Makefile.in
++++ Makefile.in
+@@ -40,9 +40,10 @@
+ NEON_LIBS = @NEON_LIBS@
+ SVN_APR_LIBS = @SVN_APR_LIBS@
+ SVN_APRUTIL_LIBS = @SVN_APRUTIL_LIBS@
+-SVN_DB_LIBS =
+-SVN_SERF_LIBS = @SVN_SERF_LIBS@
++SVN_DB_LIBS = @SVN_DB_LIBS@
+ SVN_SASL_LIBS = @SVN_SASL_LIBS@
++SVN_SERF_LIBS = @SVN_SERF_LIBS@
++SVN_XML_LIBS = -lexpat
+ SVN_ZLIB_LIBS = @SVN_ZLIB_LIBS@
+
+ LIBS = @LIBS@
+--- build/ac-macros/aprutil.m4
++++ build/ac-macros/aprutil.m4
+@@ -72,16 +72,14 @@
+ AC_MSG_ERROR([apu-config --includes failed])
+ fi
+
+- dnl When APR stores the dependent libs in the .la file, we don't need
+- dnl --libs.
+- SVN_APRUTIL_LIBS="`$apu_config --link-libtool --libs`"
++ SVN_APRUTIL_LIBS="`$apu_config --link-libtool`"
+ if test $? -ne 0; then
+- AC_MSG_ERROR([apu-config --link-libtool --libs failed])
++ AC_MSG_ERROR([apu-config --link-libtool failed])
+ fi
+
+- SVN_APRUTIL_EXPORT_LIBS="`$apu_config --link-ld --libs`"
++ SVN_APRUTIL_EXPORT_LIBS="`$apu_config --link-ld`"
+ if test $? -ne 0; then
+- AC_MSG_ERROR([apu-config --link-ld --libs failed])
++ AC_MSG_ERROR([apu-config --link-ld failed])
+ fi
+
+ AC_SUBST(SVN_APRUTIL_INCLUDES)
+--- build/ac-macros/apr.m4
++++ build/ac-macros/apr.m4
+@@ -74,16 +74,14 @@
+ AC_MSG_ERROR([apr-config --prefix failed])
+ fi
+
+- dnl When APR stores the dependent libs in the .la file, we don't need
+- dnl --libs.
+- SVN_APR_LIBS="`$apr_config --link-libtool --libs`"
++ SVN_APR_LIBS="`$apr_config --link-libtool`"
+ if test $? -ne 0; then
+- AC_MSG_ERROR([apr-config --link-libtool --libs failed])
++ AC_MSG_ERROR([apr-config --link-libtool failed])
+ fi
+
+- SVN_APR_EXPORT_LIBS="`$apr_config --link-ld --libs`"
++ SVN_APR_EXPORT_LIBS="`$apr_config --link-ld`"
+ if test $? -ne 0; then
+- AC_MSG_ERROR([apr-config --link-ld --libs failed])
++ AC_MSG_ERROR([apr-config --link-ld failed])
+ fi
+
+ SVN_APR_SHLIB_PATH_VAR="`$apr_config --shlib-path-var`"
+--- build/ac-macros/berkeley-db.m4
++++ build/ac-macros/berkeley-db.m4
+@@ -218,5 +218,6 @@
+
+ CPPFLAGS="$svn_lib_berkeley_db_try_save_cppflags"
+ LIBS="$svn_lib_berkeley_db_try_save_libs"
++ SVN_DB_LIBS="$svn_apu_bdb_lib"
+ ]
+ )
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/70svn-gentoo.el
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/70svn-gentoo.el Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,10 @@
+;;; svn site-lisp configuration
+
+(add-to-list 'load-path "@SITELISP@")
+(and (< emacs-major-version 22)
+ (add-to-list 'load-path "@SITELISP@/compat"))
+(add-to-list 'vc-handled-backends 'SVN)
+
+(defalias 'svn-examine 'svn-status)
+(autoload 'svn-status "psvn"
+ "Examine the status of Subversion working copy in directory DIR." t)
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/svnserve.confd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/svnserve.confd Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,10 @@
+# The commented variables in this file are the defaults that are used
+# in the init-script. You don't need to uncomment them except to
+# customize them to different values.
+
+# Options for svnserve
+#SVNSERVE_OPTS="--root=/var/svn"
+
+# User and group as which to run svnserve
+#SVNSERVE_USER="apache"
+#SVNSERVE_GROUP="apache"
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/svnserve.confd2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/svnserve.confd2 Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,10 @@
+# The commented variables in this file are the defaults that are used
+# in the init-script. You don't need to uncomment them except to
+# customize them to different values.
+
+# Options for svnserve
+#SVNSERVE_OPTS="--root=/var/svn"
+
+# User and group as which to run svnserve
+SVNSERVE_USER="svn"
+SVNSERVE_GROUP="svnusers"
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/svnserve.initd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/svnserve.initd Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,26 @@
+#!/sbin/runscript
+# Copyright 2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header: /var/cvsroot/gentoo-x86/dev-util/subversion/files/svnserve.initd,v 1.2 2005/08/25 13:59:48 pauldv Exp $
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting svnserve"
+ # Ensure that we run from a readable working dir, and that we do not
+ # lock filesystems when being run from such a location.
+ cd /
+ start-stop-daemon --start --quiet --background --make-pidfile \
+ --pidfile /var/run/svnserve.pid --exec /usr/bin/svnserve \
+ --chuid ${SVNSERVE_USER:-apache}:${SVNSERVE_GROUP:-apache} -- \
+ --foreground --daemon ${SVNSERVE_OPTS:---root=/var/svn}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping svnserve"
+ start-stop-daemon --stop --quiet --pidfile /var/run/svnserve.pid
+ eend $?
+}
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/svnserve.xinetd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/svnserve.xinetd Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,14 @@
+service svn
+{
+ socket_type = stream
+ wait = no
+ user = apache
+ group = apache
+ umask = 002
+ protocol = tcp
+ log_on_failure += USERID HOST
+ port = 3690
+ server = /usr/bin/svnserve
+ server_args = -i
+ disable = yes
+}
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/files/vc-svn.el
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/files/vc-svn.el Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,414 @@
+;;;; vc-svn.el --- a VC backend for Subversion
+;;;; Jim Blandy --- July 2002
+
+;;; Writing this back end has shown up some problems in VC: bugs,
+;;; shortcomings in the back end interface, and so on. But I want to
+;;; first produce code that Subversion users can use with an already
+;;; released Emacs distribution.
+;;;
+;;; So for now we're working within the limitations of the released
+;;; VC; once we've got something functional, then we can start writing
+;;; VC patches.
+
+
+;;; To make this file load on demand, put this file into a directory
+;;; in `load-path', and add this line to a startup file:
+;;;
+;;; (add-to-list 'vc-handled-backends 'SVN)
+
+
+;;; To do here:
+;;; Provide more of the optional VC backend functions:
+;;; - dir-state
+;;; - merge across arbitrary revisions
+;;;
+;;; Maybe we want more info in mode-line-string. Status of props? Status
+;;; compared to what's in the repository (svn st -u) ?
+;;;
+;;; VC passes the vc-svn-register function a COMMENT argument, which
+;;; is like the file description in CVS and RCS. Could we store the
+;;; COMMENT as a Subversion property? Would that show up in fancy DAV
+;;; web folder displays, or would it just languish in obscurity, the
+;;; way CVS and RCS descriptions do?
+;;;
+;;; After manual merging, need some way to run `svn resolved'. Perhaps
+;;; we should just prompt for approval when somebody tries to commit a
+;;; conflicted file?
+;;;
+;;; vc-svn ought to handle more gracefully an attempted commit that
+;;; fails with "Transaction is out of date". Probably the best
+;;; approach is to ask "file is not up-to-date; do you want to merge
+;;; now?" I think vc-cvs does this.
+;;;
+;;; Perhaps show the "conflicted" marker in the modeline?
+;;;
+;;; If conflicted, before committing or merging, ask the user if they
+;;; want to mark the file as resolved.
+;;;
+;;; Won't searching for strings in svn output cause trouble if the
+;;; locale language is not English?
+;;;
+;;; After merging news, need to recheck our idea of which workfile
+;;; version we have. Reverting the file does this but we need to
+;;; force it. Note that this can be necessary even if the file has
+;;; not changed.
+;;;
+;;; Does everything work properly if we're rolled back to an old
+;;; revision?
+;;;
+;;; Perhaps need to implement vc-svn-latest-on-branch-p?
+
+
+;;; To do in VC:
+;;;
+;;; Make sure vc's documentation for `workfile-unchanged-p' default
+;;; function mentions that it must not run asynchronously, and the
+;;; symptoms if it does.
+;;;
+;;; Fix logic for finding log entries.
+;;;
+;;; Allow historical diff to choose an appropriate default previous
+;;; revision number. I think this entails moving vc-previous-revision
+;;; et al into the back end.
+;;;
+;;; Should vc-BACKEND-checkout really have to set the workfile version
+;;; itself?
+;;;
+;;; Fix smerge for svn conflict markers.
+;;;
+;;; We can have files which are not editable for reasons other than
+;;; needing to be checked out. For example, they might be a read-only
+;;; view of an old revision opened with [C-x v ~]. (See vc-merge)
+;;;
+;;; Would be nice if there was a way to mark a file as
+;;; just-checked-out, aside from updating the checkout-time property
+;;; which in theory is not to be changed by backends.
+
+
+(add-to-list 'vc-handled-backends 'SVN)
+
+(defcustom vc-svn-program-name "svn"
+ "*Name of Subversion client program, for use by Emacs's VC package."
+ :type 'string
+ :group 'vc
+ :version "21.2.90.2")
+
+(defcustom vc-svn-diff-switches nil
+ "*A string or list of strings specifying extra switches for `svn diff' under VC."
+ :type '(repeat string)
+ :group 'vc
+ :version "21.2.90.2")
+
+(defun vc-svn-registered (file)
+ "Return true if FILE is registered under Subversion."
+ ;; First, a quick false positive test: is there a `.svn/entries' file?
+ (and (file-exists-p (expand-file-name ".svn/entries"
+ (file-name-directory file)))
+ (not (null (vc-svn-run-status file)))))
+
+
+(put 'vc-svn-with-output-buffer 'lisp-indent-function 0)
+(defmacro vc-svn-with-output-buffer (&rest body)
+ "Save excursion, switch to buffer ` *Subversion Output*', and erase it."
+ `(save-excursion
+ ;; Let's not delete this buffer when we're done --- leave
+ ;; it around for debugging.
+ (set-buffer (get-buffer-create " *Subversion Output*"))
+ (erase-buffer)
+ ,@body))
+
+
+(defun vc-svn-pop-up-error (&rest args)
+ "Pop up the Subversion output buffer, and raise an error with ARGS."
+ (pop-to-buffer " *Subversion Output*")
+ (goto-char (point-min))
+ (shrink-window-if-larger-than-buffer)
+ (apply 'error args))
+
+
+(defun vc-svn-run-status (file &optional update)
+ "Run `svn status -v' on FILE, and return the result.
+If optional arg UPDATE is true, pass the `-u' flag to check against
+the repository, across the network.
+See `vc-svn-parse-status' for a description of the result."
+ (vc-svn-with-output-buffer
+
+ ;; We should call vc-do-command here, but Subversion exits with an
+ ;; error status if FILE isn't under its control, and we want to
+ ;; return that as nil, not display it to the user. We can tell
+ ;; vc-do-command to
+
+ (let ((status (apply 'call-process vc-svn-program-name nil t nil
+ (append '("status" "-v")
+ (if update '("-u") '())
+ (list file)))))
+ (goto-char (point-min))
+ (if (not (equal 0 status)) ; not zerop; status can be a string
+ ;; If you ask for the status of a file that isn't even in a
+ ;; Subversion-controlled directory, then Subversion exits with
+ ;; this error.
+ (if (or (looking-at "\\(.*\n\\)*.*is not a working copy")
+ (looking-at "\\(.*\n\\)*.*is not a versioned resource")
+ (looking-at "\\(.*\n\\)*.*: No such file or directory"))
+ nil
+ ;; Other errors we should actually report to the user.
+ (vc-svn-pop-up-error
+ "Error running Subversion to check status of `%s'"
+ (file-name-nondirectory file)))
+
+ ;; Otherwise, we've got valid status output in the buffer, so
+ ;; just parse that.
+ (vc-svn-parse-status)))))
+
+
+(defun vc-svn-parse-status ()
+ "Parse the output from `svn status -v' at point.
+We return nil for a file not under Subversion's control,
+or (STATE LOCAL CHANGED) for files that are, where:
+STATE is the file's VC state (see the documentation for `vc-state'),
+LOCAL is the base revision in the working copy, and
+CHANGED is the last revision in which it was changed.
+Both LOCAL and CHANGED are strings, not numbers.
+If we passed `svn status' the `-u' flag, then CHANGED could be a later
+revision than LOCAL.
+If the file is newly added, LOCAL is \"0\" and CHANGED is nil."
+ (let ((state (vc-svn-parse-state-only)))
+ (cond
+ ((not state) nil)
+ ;; A newly added file has no revision.
+ ((looking-at "....\\s-+\\(\\*\\s-+\\)?[-0]\\s-+\\?")
+ (list state "0" nil))
+ ((looking-at "....\\s-+\\(\\*\\s-+\\)?\\([0-9]+\\)\\s-+\\([0-9]+\\)")
+ (list state
+ (match-string 2)
+ (match-string 3)))
+ ((looking-at "^I +") nil) ;; An ignored file
+ ((looking-at " \\{40\\}") nil) ;; A file that is not in the wc nor svn?
+ (t (error "Couldn't parse output from `svn status -v'")))))
+
+
+(defun vc-svn-parse-state-only ()
+ "Parse the output from `svn status -v' at point, and return a state.
+The documentation for the function `vc-state' describes the possible values."
+ (cond
+ ;; Be careful --- some of the later clauses here could yield false
+ ;; positives, if the clauses preceding them didn't screen those
+ ;; out. Making a pattern more selective could break something.
+
+ ;; nil The given file is not under version control,
+ ;; or does not exist.
+ ((looking-at "\\?\\|^$") nil)
+
+ ;; 'needs-patch The file has not been edited by the
+ ;; user, but there is a more recent version
+ ;; on the current branch stored in the
+ ;; master file.
+ ((looking-at " ..\\s-+\\*") 'needs-patch)
+
+ ;; 'up-to-date The working file is unmodified with
+ ;; respect to the latest version on the
+ ;; current branch, and not locked.
+ ;;
+ ;; This is also returned for files which do not
+ ;; exist, as will be the case when finding a
+ ;; new file in a svn-controlled directory. That
+ ;; case is handled in vc-svn-parse-status.
+ ((looking-at " ") 'up-to-date)
+
+ ;; 'needs-merge The file has been edited by the user,
+ ;; and there is also a more recent version
+ ;; on the current branch stored in the
+ ;; master file. This state can only occur
+ ;; if locking is not used for the file.
+ ((looking-at "\\S-+\\s-+\\*") 'needs-merge)
+
+ ;; 'edited The working file has been edited by the
+ ;; user. If locking is used for the file,
+ ;; this state means that the current
+ ;; version is locked by the calling user.
+ (t 'edited)))
+
+
+;;; Is it really safe not to check for updates? I haven't seen any
+;;; cases where failing to check causes a problem that is not caught
+;;; in some other way. However, there *are* cases where checking
+;;; needlessly causes network delay, such as C-x v v. The common case
+;;; is for the commit to be OK; we can handle errors if they occur. -- mbp
+(defun vc-svn-state (file)
+ "Return the current version control state of FILE.
+For a list of possible return values, see `vc-state'.
+
+This function should do a full and reliable state computation; it is
+usually called immediately after `C-x v v'. `vc-svn-state-heuristic'
+provides a faster heuristic when visiting a file.
+
+For svn this does *not* check for updates in the repository, because
+that needlessly slows down vc when the repository is remote. Instead,
+we rely on Subversion to trap situations such as needing a merge
+before commit."
+ (car (vc-svn-run-status file)))
+
+
+(defun vc-svn-state-heuristic (file)
+ "Estimate the version control state of FILE at visiting time.
+For a list of possible values, see the doc string of `vc-state'.
+This is supposed to be considerably faster than `vc-svn-state'. It
+just runs `svn status -v', without the `-u' flag, so it's a strictly
+local operation."
+ (car (vc-svn-run-status file)))
+
+
+
+(defun vc-svn-workfile-version (file)
+ "Return the current workfile version of FILE."
+ (cadr (vc-svn-run-status file)))
+
+
+(defun vc-svn-checkout-model (file)
+ 'implicit)
+
+
+(defun vc-svn-register (file &optional rev comment)
+ "Register FILE with Subversion.
+REV is an initial revision; Subversion ignores it.
+COMMENT is an initial description of the file; currently this is ignored."
+ (vc-svn-with-output-buffer
+ (let ((status (call-process vc-svn-program-name nil t nil "add" file)))
+ (or (equal 0 status) ; not zerop; status can be a string
+ (vc-svn-pop-up-error "Error running Subversion to add `%s'"
+ (file-name-nondirectory file))))))
+
+
+(defun vc-svn-checkin (file rev comment)
+ (apply 'vc-do-command nil 0 vc-svn-program-name file
+ "commit" (if comment (list "-m" comment) '())))
+
+
+(defun vc-svn-checkout (file &optional editable rev destfile)
+ "Check out revision REV of FILE into the working area.
+The EDITABLE argument must be non-nil, since Subversion doesn't
+support locking.
+If REV is non-nil, that is the revision to check out (default is
+current workfile version). If REV is the empty string, that means to
+check out the head of the trunk. For Subversion, that's equivalent to
+passing nil.
+If optional arg DESTFILE is given, it is an alternate filename to
+write the contents to; we raise an error."
+ (unless editable
+ (error "VC asked Subversion to check out a read-only copy of file"))
+ (when destfile
+ (error "VC asked Subversion to check out a file under another name"))
+ (when (equal rev "")
+ (setq rev nil))
+ (apply 'vc-do-command nil 0 vc-svn-program-name file
+ "update" (if rev (list "-r" rev) '()))
+ (vc-file-setprop file 'vc-workfile-version nil))
+
+
+(defun vc-svn-revert (file &optional contents-done)
+ "Revert FILE back to the current workfile version.
+If optional arg CONTENTS-DONE is non-nil, then the contents of FILE
+have already been reverted from a version backup, and this function
+only needs to update the status of FILE within the backend. This
+function ignores the CONTENTS-DONE argument."
+ (vc-do-command nil 0 vc-svn-program-name file "revert"))
+
+
+(defun vc-svn-merge-news (file)
+ "Merge recent changes into FILE.
+
+This calls `svn update'. In the case of conflicts, Subversion puts
+conflict markers into the file and leaves additional temporary files
+containing the `ancestor', `mine', and `other' files.
+
+You may need to run `svn resolved' by hand once these conflicts have
+been resolved.
+
+Returns a vc status, which is used to determine whether conflicts need
+to be merged."
+ (prog1
+ (vc-do-command nil 0 vc-svn-program-name file "update")
+
+ ;; This file may not have changed in the revisions which were
+ ;; merged, which means that its mtime on disk will not have been
+ ;; updated. However, the workfile version may still have been
+ ;; updated, and we want that to be shown correctly in the
+ ;; modeline.
+
+ ;; vc-cvs does something like this
+ (vc-file-setprop file 'vc-checkout-time 0)
+ (vc-file-setprop file 'vc-workfile-version
+ (vc-svn-workfile-version file))))
+
+
+(defun vc-svn-print-log (file)
+ "Insert the revision log of FILE into the *vc* buffer."
+ (vc-do-command nil 'async vc-svn-program-name file "log"))
+
+
+(defun vc-svn-show-log-entry (version)
+ "Search the log entry for VERSION in the current buffer.
+Make sure it is displayed in the buffer's window."
+ (when (re-search-forward (concat "^-+\n\\(rev\\) "
+ (regexp-quote version)
+ ":[^|]+|[^|]+| [0-9]+ lines?"))
+ (goto-char (match-beginning 1))
+ (recenter 1)))
+
+
+(defun vc-svn-diff (file &optional rev1 rev2)
+ "Insert the diff for FILE into the *vc-diff* buffer.
+If REV1 and REV2 are non-nil, report differences from REV1 to REV2.
+If REV1 is nil, use the current workfile version (as found in the
+repository) as the older version; if REV2 is nil, use the current
+workfile contents as the newer version.
+This function returns a status of either 0 (no differences found), or
+1 (either non-empty diff or the diff is run asynchronously)."
+ (let* ((diff-switches-list
+ ;; In Emacs 21.3.50 or so, the `vc-diff-switches-list' macro
+ ;; started requiring its symbol argument to be quoted.
+ (condition-case nil
+ (vc-diff-switches-list svn)
+ (void-variable (vc-diff-switches-list 'SVN))))
+ (status (vc-svn-run-status file))
+ (local (elt status 1))
+ (changed (elt status 2))
+
+ ;; If rev1 is the default (the base revision) set it to nil.
+ ;; This is nice because it lets us recognize when the diff
+ ;; will run locally, and thus when we shouldn't bother to run
+ ;; it asynchronously. But it's also necessary, since a diff
+ ;; for vc-default-workfile-unchanged-p *must* run
+ ;; synchronously, or else you'll end up with two diffs in the
+ ;; *vc-diff* buffer. `vc-diff-workfile-unchanged-p' passes
+ ;; the base revision explicitly, but this kludge lets us
+ ;; recognize that we can run the diff synchronously anyway.
+ ;; Fragile, no?
+ (rev1 (if (and rev1 (not (equal rev1 local))) rev1))
+
+ (rev-switches-list
+ (cond
+ ;; Given base rev against given rev.
+ ((and rev1 rev2) (list "-r" (format "%s:%s" rev1 rev2)))
+ ;; Given base rev against working copy.
+ (rev1 (list "-r" rev1))
+ ;; Working copy base against given rev.
+ (rev2 (list "-r" (format "%s:%s" local rev2)))
+ ;; Working copy base against working copy.
+ (t '())))
+
+ ;; Run diff asynchronously if we're going to have to go
+ ;; across the network.
+ (async (or rev1 rev2)))
+
+ (let ((status (apply 'vc-do-command "*vc-diff*" (if async 'async 0)
+ vc-svn-program-name file
+ (append '("diff") rev-switches-list))))
+ (if (or async (> (buffer-size (get-buffer "*vc-diff*")) 0))
+ 1 0))))
+
+(defun vc-svn-find-version (file rev buffer)
+ (vc-do-command buffer 0 vc-svn-program-name file
+ "cat" "-r" rev))
+
+(provide 'vc-svn)
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/metadata.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/metadata.xml Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,22 @@
+
+
+
+
+ hollow@gentoo.org
+ Benedikt Böhm
+ Gentoo Subversion maintainer
+
+
+ Arfrever.FTA@GMail.Com
+ Arfrever Frehtes Taifersar Arahesis
+ Subversion upstream representative
+
+
+
diff -r bcd9c6ae2107 -r e948db201a1e dev-util/subversion/subversion-1.5.5.ebuild
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev-util/subversion/subversion-1.5.5.ebuild Sat Dec 27 15:06:29 2008 +0100
@@ -0,0 +1,412 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-util/subversion/subversion-1.5.4.ebuild,v 1.11 2008/12/07 12:13:48 vapier Exp $
+
+EAPI="1"
+WANT_AUTOMAKE="none"
+
+inherit autotools bash-completion confutils depend.apache elisp-common eutils flag-o-matic java-pkg-opt-2 libtool multilib perl-module python
+
+DESCRIPTION="Advanced version control system"
+HOMEPAGE="http://subversion.tigris.org/"
+SRC_URI="http://subversion.tigris.org/downloads/${P/_/-}.tar.bz2"
+
+LICENSE="Subversion"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd"
+IUSE="apache2 berkdb debug doc +dso emacs extras java nls perl python ruby sasl vim-syntax +webdav-neon webdav-serf"
+RESTRICT="test"
+
+CDEPEND=">=dev-libs/apr-1.2.8
+ >=dev-libs/apr-util-1.2.8
+ dev-libs/expat
+ sys-libs/zlib
+ berkdb? ( =sys-libs/db-4* )
+ emacs? ( virtual/emacs )
+ ruby? ( >=dev-lang/ruby-1.8.2 )
+ sasl? ( dev-libs/cyrus-sasl )
+ webdav-neon? ( >=net-misc/neon-0.28 )
+ webdav-serf? ( net-libs/serf )"
+
+RDEPEND="${CDEPEND}
+ java? ( >=virtual/jre-1.5 )
+ nls? ( virtual/libintl )
+ perl? ( dev-perl/URI )"
+
+DEPEND="${CDEPEND}
+ doc? ( app-doc/doxygen )
+ java? ( >=virtual/jdk-1.5 )
+ nls? ( sys-devel/gettext )"
+
+want_apache
+
+S="${WORKDIR}"/${P/_/-}
+
+# Allow for custom repository locations.
+# This can't be in pkg_setup because the variable needs to be available to
+# pkg_config.
+: ${SVN_REPOS_LOC:=/var/svn}
+
+pkg_setup() {
+ confutils_use_depend_built_with_all berkdb dev-libs/apr-util berkdb
+ java-pkg-opt-2_pkg_setup
+
+ if ! use webdav-neon && ! use webdav-serf; then
+ ewarn
+ ewarn "WebDAV support is disabled. You need WebDAV to"
+ ewarn "access repositories through the HTTP protocol."
+ ewarn
+ ewarn "WebDAV support needs one of the following USE flags enabled:"
+ ewarn " webdav-neon webdav-serf"
+ ewarn
+ ewarn "You can do this by enabling one of these flags in /etc/portage/package.use:"
+ ewarn " =${CATEGORY}/${PF} webdav-neon webdav-serf"
+ ewarn
+ ebeep
+ fi
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/1.5.0/disable-unneeded-linking.patch
+
+ sed -i \
+ -e "s/\(BUILD_RULES=.*\) bdb-test\(.*\)/\1\2/g" \
+ -e "s/\(BUILD_RULES=.*\) test\(.*\)/\1\2/g" configure.ac
+
+ sed -e 's:@bindir@/svn-contrib:@libdir@/subversion/bin:' \
+ -e 's:@bindir@/svn-tools:@libdir@/subversion/bin:' \
+ -i Makefile.in
+
+ eautoconf
+ elibtoolize
+}
+
+src_compile() {
+ local myconf
+
+ if use python || use perl || use ruby; then
+ myconf="${myconf} --with-swig"
+ else
+ myconf="${myconf} --without-swig"
+ fi
+
+ if use debug; then
+ append-cppflags -DSVN_DEBUG -DAP_DEBUG
+ fi
+
+ append-flags -fno-strict-aliasing
+
+ econf ${myconf} \
+ $(use_with apache2 apxs "${APXS}") \
+ $(use_with berkdb berkeley-db) \
+ $(use_enable dso runtime-module-search) \
+ $(use_enable java javahl) \
+ $(use_with java jdk "${JAVA_HOME}") \
+ $(use_enable nls) \
+ $(use_with sasl) \
+ $(use_with webdav-neon neon /usr) \
+ $(use_with webdav-serf serf /usr) \
+ --with-apr=/usr/bin/apr-1-config \
+ --with-apr-util=/usr/bin/apu-1-config \
+ --disable-experimental-libtool \
+ --without-jikes \
+ --without-junit \
+ --disable-mod-activation
+
+ emake local-all || die "Building of core Subversion failed"
+
+ if use python; then
+ emake swig-py || die "Building of Subversion Python bindings failed"
+ fi
+
+ if use perl; then
+ emake -j1 swig-pl || die "Building of Subversion Perl bindings failed"
+ fi
+
+ if use ruby; then
+ emake swig-rb || die "Building of Subversion Ruby bindings failed"
+ fi
+
+ if use java; then
+ make JAVAC_FLAGS="$(java-pkg_javac-args) -encoding iso8859-1" javahl \
+ || die "Building of Subversion JavaHL library failed"
+ fi
+
+ if use emacs; then
+ elisp-compile contrib/client-side/emacs/{dsvn,psvn,vc-svn}.el \
+ doc/svn-doc.el doc/tools/svnbook.el \
+ || die "Compilation of Emacs modules failed"
+ fi
+
+ if use extras; then
+ emake contrib || die "Building of contrib failed"
+ emake tools || die "Building of tools failed"
+ fi
+
+ if use doc; then
+ doxygen doc/doxygen.conf || die "Building of Subversion HTML documentation failed"
+
+ if use java; then
+ emake doc-javahl || die "Building of Subversion JavaHL library HTML documentation failed"
+ fi
+ fi
+}
+
+src_install() {
+ python_version
+ PYTHON_DIR=/usr/$(get_libdir)/python${PYVER}
+
+ emake -j1 DESTDIR="${D}" local-install || die "Installation of core of Subversion failed"
+
+ if use python; then
+ emake -j1 DESTDIR="${D}" DISTUTIL_PARAM="--prefix=${D}" LD_LIBRARY_PATH="-L${D}/usr/$(get_libdir)" install-swig-py \
+ || die "Installation of Subversion Python bindings failed"
+
+ # Move Python bindings.
+ dodir "${PYTHON_DIR}/site-packages"
+ mv "${D}"/usr/$(get_libdir)/svn-python/svn "${D}${PYTHON_DIR}/site-packages"
+ mv "${D}"/usr/$(get_libdir)/svn-python/libsvn "${D}${PYTHON_DIR}/site-packages"
+ rm -Rf "${D}"/usr/$(get_libdir)/svn-python
+ fi
+
+ if use perl; then
+ emake -j1 DESTDIR="${D}" INSTALLDIRS="vendor" install-swig-pl || die "Installation of Subversion Perl bindings failed"
+ fixlocalpod
+ fi
+
+ if use ruby; then
+ emake -j1 DESTDIR="${D}" install-swig-rb || die "Installation of Subversion Ruby bindings failed"
+ fi
+
+ if use java; then
+ emake -j1 DESTDIR="${D}" install-javahl || die "Installation of Subversion JavaHL library failed"
+ java-pkg_regso "${D}"/usr/$(get_libdir)/libsvnjavahl*.so
+ java-pkg_dojar "${D}"/usr/$(get_libdir)/svn-javahl/svn-javahl.jar
+ rm -Rf "${D}"/usr/$(get_libdir)/svn-javahl/*.jar
+ fi
+
+ # Install Apache module configuration.
+ if use apache2; then
+ dodir "${APACHE_MODULES_CONFDIR}"
+ cat <"${D}/${APACHE_MODULES_CONFDIR}"/47_mod_dav_svn.conf
+
+LoadModule dav_svn_module modules/mod_dav_svn.so
+
+LoadModule authz_svn_module modules/mod_authz_svn.so
+
+
+# Example configuration:
+#
+# DAV svn
+# SVNPath ${SVN_REPOS_LOC}/repos
+# AuthType Basic
+# AuthName "Subversion repository"
+# AuthUserFile ${SVN_REPOS_LOC}/conf/svnusers
+# Require valid-user
+#
+
+EOF
+ fi
+
+ # Install Bash Completion, bug 43179.
+ dobashcompletion tools/client-side/bash_completion subversion
+ rm -f tools/client-side/bash_completion
+
+ # Install hot backup script, bug 54304.
+ newbin tools/backup/hot-backup.py svn-hot-backup
+ rm -fr tools/backup
+
+ # Install svn_load_dirs.pl.
+ if use perl; then
+ newbin contrib/client-side/svn_load_dirs/svn_load_dirs.pl svn-load-dirs
+ fi
+ rm -f contrib/client-side/svn_load_dirs/svn_load_dirs.pl
+
+ # Install svnserve init-script and xinet.d snippet, bug 43245.
+ newinitd "${FILESDIR}"/svnserve.initd svnserve
+ if use apache2; then
+ newconfd "${FILESDIR}"/svnserve.confd svnserve
+ else
+ newconfd "${FILESDIR}"/svnserve.confd2 svnserve
+ fi
+ insinto /etc/xinetd.d
+ newins "${FILESDIR}"/svnserve.xinetd svnserve
+
+ # Install documentation.
+ dodoc CHANGES COMMITTERS README
+ dohtml www/hacking.html
+ dodoc tools/xslt/svnindex.{css,xsl}
+ rm -fr tools/xslt
+
+ # Install Vim syntax files.
+ if use vim-syntax; then
+ insinto /usr/share/vim/vimfiles/syntax
+ doins contrib/client-side/vim/svn.vim
+ fi
+ rm -f contrib/client-side/vim/svn.vim
+
+ # Install Emacs Lisps.
+ if use emacs; then
+ elisp-install ${PN} contrib/client-side/emacs/{dsvn,psvn}.{el,elc} \
+ doc/svn-doc.{el,elc} doc/tools/svnbook.{el,elc} \
+ || die "Installation of Emacs modules failed"
+ elisp-install ${PN}/compat contrib/client-side/emacs/vc-svn.{el,elc} \
+ || die "Installation of Emacs modules failed"
+ touch "${D}${SITELISP}/${PN}/compat/.nosearch"
+ elisp-site-file-install "${FILESDIR}"/1.5.0/70svn-gentoo.el \
+ || die "Installation of Emacs site-init file failed"
+ fi
+ rm -fr contrib/client-side/emacs
+
+ # Install extra files.
+ if use extras; then
+ doenvd "${FILESDIR}"/1.5.0/80subversion-extras
+
+ emake DESTDIR="${D}" install-contrib || die "Installation of contrib failed"
+ emake DESTDIR="${D}" install-tools || die "Installation of tools failed"
+
+ find contrib tools '(' -name "*.bat" -o -name "*.in" -o -name ".libs" ')' -print0 | xargs -0 rm -fr
+ rm -fr contrib/client-side/{svn-push,svnmucc}
+ rm -fr tools/server-side/{svn-populate-node-origins-index,svnauthz-validate}*
+ rm -fr tools/{buildbot,dev,diff,po}
+
+ insinto /usr/share/${PN}
+ doins -r contrib tools
+ fi
+
+ if use doc; then
+ dohtml doc/doxygen/html/*
+
+ insinto /usr/share/doc/${PF}
+ doins -r notes
+ ecompressdir /usr/share/doc/${PF}/notes
+
+ if use java; then
+ java-pkg_dojavadoc doc/javadoc
+ fi
+ fi
+}
+
+pkg_preinst() {
+ # Compare versions of Berkeley DB, bug 122877.
+ if use berkdb && [[ -f "${ROOT}usr/bin/svn" ]] ; then
+ OLD_BDB_VERSION="$(scanelf -nq "${ROOT}usr/$(get_libdir)/libsvn_subr-1.so.0" | grep -Eo "libdb-[[:digit:]]+\.[[:digit:]]+" | sed -e "s/libdb-\(.*\)/\1/")"
+ NEW_BDB_VERSION="$(scanelf -nq "${D}usr/$(get_libdir)/libsvn_subr-1.so.0" | grep -Eo "libdb-[[:digit:]]+\.[[:digit:]]+" | sed -e "s/libdb-\(.*\)/\1/")"
+ if [[ "${OLD_BDB_VERSION}" != "${NEW_BDB_VERSION}" ]] ; then
+ CHANGED_BDB_VERSION=1
+ fi
+ fi
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+ use perl && perl-module_pkg_postinst
+
+ elog "Subversion Server Notes"
+ elog "-----------------------"
+ elog
+ elog "If you intend to run a server, a repository needs to be created using"
+ elog "svnadmin (see man svnadmin) or the following command to create it in"
+ elog "${SVN_REPOS_LOC}:"
+ elog
+ elog " emerge --config =${CATEGORY}/${PF}"
+ elog
+ elog "Subversion has multiple server types, take your pick:"
+ elog
+ elog " - svnserve daemon: "
+ elog " 1. Edit /etc/conf.d/svnserve"
+ elog " 2. Fix the repository permissions (see \"Fixing the repository permissions\")"
+ elog " 3. Start daemon: /etc/init.d/svnserve start"
+ elog " 4. Make persistent: rc-update add svnserve default"
+ elog
+ elog " - svnserve via xinetd:"
+ elog " 1. Edit /etc/xinetd.d/svnserve (remove disable line)"
+ elog " 2. Fix the repository permissions (see \"Fixing the repository permissions\")"
+ elog " 3. Restart xinetd.d: /etc/init.d/xinetd restart"
+ elog
+ elog " - svn over ssh:"
+ elog " 1. Fix the repository permissions (see \"Fixing the repository permissions\")"
+ elog " Additionally run:"
+ elog " groupadd svnusers"
+ elog " chown -R root:svnusers ${SVN_REPOS_LOC}/repos"
+ elog " 2. Create an svnserve wrapper in /usr/local/bin to set the umask you"
+ elog " want, for example:"
+ elog " #!/bin/bash"
+ elog " . /etc/conf.d/svnserve"
+ elog " umask 007"
+ elog " exec /usr/bin/svnserve \${SVNSERVE_OPTS} \"\$@\""
+ elog
+
+ if use apache2; then
+ elog " - http-based server:"
+ elog " 1. Edit /etc/conf.d/apache2 to include both \"-D DAV\" and \"-D SVN\""
+ elog " 2. Create an htpasswd file:"
+ elog " htpasswd2 -m -c ${SVN_REPOS_LOC}/conf/svnusers USERNAME"
+ elog " 3. Fix the repository permissions (see \"Fixing the repository permissions\")"
+ elog " 4. Restart Apache: /etc/init.d/apache2 restart"
+ elog
+ fi
+
+ elog " Fixing the repository permissions:"
+ elog " chmod -Rf go-rwx ${SVN_REPOS_LOC}/conf"
+ elog " chmod -Rf g-w,o-rwx ${SVN_REPOS_LOC}/repos"
+ elog " chmod -Rf g+rw ${SVN_REPOS_LOC}/repos/db"
+ elog " chmod -Rf g+rw ${SVN_REPOS_LOC}/repos/locks"
+ elog
+
+ elog "If you intend to use svn-hot-backup, you can specify the number of"
+ elog "backups to keep per repository by specifying an environment variable."
+ elog "If you want to keep e.g. 2 backups, do the following:"
+ elog "echo '# hot-backup: Keep that many repository backups around' > /etc/env.d/80subversion"
+ elog "echo 'SVN_HOTBACKUP_BACKUPS_NUMBER=2' >> /etc/env.d/80subversion"
+ elog
+
+ if [[ -n "${CHANGED_BDB_VERSION}" ]] ; then
+ ewarn "You upgraded from an older version of Berkeley DB and may experience"
+ ewarn "problems with your repository. Run the following commands as root to fix it:"
+ ewarn " db4_recover -h ${SVN_REPOS_LOC}/repos"
+ ewarn " chown -Rf apache:apache ${SVN_REPOS_LOC}/repos"
+ fi
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+ use perl && perl-module_pkg_postrm
+}
+
+pkg_config() {
+ if [[ ! -x "${ROOT}usr/bin/svnadmin" ]] ; then
+ die "You seem to only have built the Subversion client"
+ fi
+
+ einfo ">>> Initializing the database in ${ROOT}${SVN_REPOS_LOC} ..."
+ if [[ -e "${ROOT}${SVN_REPOS_LOC}/repos" ]] ; then
+ echo "A Subversion repository already exists and I will not overwrite it."
+ echo "Delete \"${ROOT}${SVN_REPOS_LOC}/repos\" first if you're sure you want to have a clean version."
+ else
+ mkdir -p "${ROOT}${SVN_REPOS_LOC}/conf"
+
+ einfo ">>> Populating repository directory ..."
+ # Create initial repository.
+ "${ROOT}usr/bin/svnadmin" create "${ROOT}${SVN_REPOS_LOC}/repos"
+
+ einfo ">>> Setting repository permissions ..."
+ SVNSERVE_USER="$(. "${ROOT}etc/conf.d/svnserve" ; echo "${SVNSERVE_USER}")"
+ SVNSERVE_GROUP="$(. "${ROOT}etc/conf.d/svnserve" ; echo "${SVNSERVE_GROUP}")"
+ if use apache2 ; then
+ [[ -z "${SVNSERVE_USER}" ]] && SVNSERVE_USER="apache"
+ [[ -z "${SVNSERVE_GROUP}" ]] && SVNSERVE_GROUP="apache"
+ else
+ [[ -z "${SVNSERVE_USER}" ]] && SVNSERVE_USER="svn"
+ [[ -z "${SVNSERVE_GROUP}" ]] && SVNSERVE_GROUP="svnusers"
+ enewgroup "${SVNSERVE_GROUP}"
+ enewuser "${SVNSERVE_USER}" -1 -1 "${SVN_REPOS_LOC}" "${SVNSERVE_GROUP}"
+ fi
+ chown -Rf "${SVNSERVE_USER}:${SVNSERVE_GROUP}" "${ROOT}${SVN_REPOS_LOC}/repos"
+ chmod -Rf go-rwx "${ROOT}${SVN_REPOS_LOC}/conf"
+ chmod -Rf o-rwx "${ROOT}${SVN_REPOS_LOC}/repos"
+ fi
+}