[Python-apps-commits] r1628 - in packages/mercurial/trunk/debian (3 files)
vdanjean at users.alioth.debian.org
vdanjean at users.alioth.debian.org
Thu Jul 31 12:35:38 UTC 2008
Date: Thursday, July 31, 2008 @ 12:35:37
Author: vdanjean
Revision: 1628
Fix subversion 1.5 ABI change
Added:
packages/mercurial/trunk/debian/patches/backport__svn1.5-fix.patch
Modified:
packages/mercurial/trunk/debian/changelog
packages/mercurial/trunk/debian/patches/series
Modified: packages/mercurial/trunk/debian/changelog
===================================================================
--- packages/mercurial/trunk/debian/changelog 2008-07-31 08:47:17 UTC (rev 1627)
+++ packages/mercurial/trunk/debian/changelog 2008-07-31 12:35:37 UTC (rev 1628)
@@ -1,3 +1,10 @@
+mercurial (1.0.1-4) unstable; urgency=low
+
+ * fix subversion 1.5 compatibility (Closes: #492244)
+ using upstream patch
+
+ -- Vincent Danjean <vdanjean at debian.org> Thu, 31 Jul 2008 14:27:51 +0200
+
mercurial (1.0.1-3) unstable; urgency=low
* debian/control:
Added: packages/mercurial/trunk/debian/patches/backport__svn1.5-fix.patch
===================================================================
--- packages/mercurial/trunk/debian/patches/backport__svn1.5-fix.patch (rev 0)
+++ packages/mercurial/trunk/debian/patches/backport__svn1.5-fix.patch 2008-07-31 12:35:37 UTC (rev 1628)
@@ -0,0 +1,227 @@
+diff -r e37fa751182a -r 6ec941b6003d hgext/convert/subversion.py
+--- a/hgext/convert/subversion.py Fri Jul 25 13:26:16 2008 +0200
++++ b/hgext/convert/subversion.py Wed Jul 30 22:26:41 2008 +0200
+@@ -130,18 +130,6 @@
+ self._stdout.close()
+ self._stdout = None
+
+-def get_log(url, paths, start, end, limit=0, discover_changed_paths=True,
+- strict_node_history=False):
+- args = [url, paths, start, end, limit, discover_changed_paths,
+- strict_node_history]
+- arg = encodeargs(args)
+- hgexe = util.hgexecutable()
+- cmd = '%s debugsvnlog' % util.shellquote(hgexe)
+- stdin, stdout = os.popen2(cmd, 'b')
+- stdin.write(arg)
+- stdin.close()
+- return logstream(stdout)
+-
+ # SVN conversion code stolen from bzr-svn and tailor
+ #
+ # Subversion looks like a versioned filesystem, branches structures
+@@ -188,6 +176,7 @@
+ # Module is either empty or a repository path starting with
+ # a slash and not ending with a slash.
+ self.module = self.url[len(self.base):]
++ self.prevmodule = None
+ self.rootmodule = self.module
+ self.commits = {}
+ self.paths = {}
+@@ -250,7 +239,7 @@
+ def getheads(self):
+
+ def isdir(path, revnum):
+- kind = svn.ra.check_path(self.ra, path, revnum)
++ kind = self._checkpath(path, revnum)
+ return kind == svn.core.svn_node_dir
+
+ def getcfgpath(name, rev):
+@@ -393,7 +382,7 @@
+ tagspath = self.tags
+ start = svn.ra.get_latest_revnum(self.ra)
+ try:
+- for entry in get_log(self.url, [self.tags], start, self.startrev):
++ for entry in self._getlog([self.tags], start, self.startrev):
+ origpaths, revnum, author, date, message = entry
+ copies = [(e.copyfrom_path, e.copyfrom_rev, p) for p, e
+ in origpaths.iteritems() if e.copyfrom_path]
+@@ -478,9 +467,9 @@
+ if not stop:
+ stop = svn.ra.get_latest_revnum(self.ra)
+ try:
+- self.reparent('')
++ prevmodule = self.reparent('')
+ dirent = svn.ra.stat(self.ra, path.strip('/'), stop)
+- self.reparent(self.module)
++ self.reparent(prevmodule)
+ except SubversionException:
+ dirent = None
+ if not dirent:
+@@ -489,7 +478,7 @@
+ # stat() gives us the previous revision on this line of development, but
+ # it might be in *another module*. Fetch the log and detect renames down
+ # to the latest revision.
+- stream = get_log(self.url, [path], stop, dirent.created_rev)
++ stream = self._getlog([path], stop, dirent.created_rev)
+ try:
+ for entry in stream:
+ paths, revnum, author, date, message = entry
+@@ -532,9 +521,17 @@
+ return svn_rev in self.blacklist
+
+ def reparent(self, module):
+- svn_url = self.base + module
+- self.ui.debug("reparent to %s\n" % svn_url.encode(self.encoding))
+- svn.ra.reparent(self.ra, svn_url.encode(self.encoding))
++ """Reparent the svn transport and return the previous parent."""
++ if self.prevmodule == module:
++ return module
++ svn_url = (self.base + module).encode(self.encoding)
++ prevmodule = self.prevmodule
++ if prevmodule is None:
++ prevmodule = ''
++ self.ui.debug("reparent to %s\n" % svn_url)
++ svn.ra.reparent(self.ra, svn_url)
++ self.prevmodule = module
++ return prevmodule
+
+ def expandpaths(self, rev, paths, parents):
+ entries = []
+@@ -550,7 +547,7 @@
+ entrypath = self.getrelpath(path)
+ entry = entrypath.decode(self.encoding)
+
+- kind = svn.ra.check_path(self.ra, entrypath, revnum)
++ kind = self._checkpath(entrypath, revnum)
+ if kind == svn.core.svn_node_file:
+ entries.append(self.recode(entry))
+ if not ent.copyfrom_path or not parents:
+@@ -604,9 +601,9 @@
+
+ # We can avoid the reparent calls if the module has not changed
+ # but it probably does not worth the pain.
+- self.reparent('')
++ prevmodule = self.reparent('')
+ fromkind = svn.ra.check_path(self.ra, entrypath.strip('/'), fromrev)
+- self.reparent(self.module)
++ self.reparent(prevmodule)
+
+ if fromkind == svn.core.svn_node_file: # a deleted file
+ entries.append(self.recode(entry))
+@@ -669,7 +666,7 @@
+ # print child, self.module, entrypath
+ if entrypath:
+ # Need to filter out directories here...
+- kind = svn.ra.check_path(self.ra, entrypath, revnum)
++ kind = self._checkpath(entrypath, revnum)
+ if kind != svn.core.svn_node_dir:
+ entries.append(self.recode(entrypath))
+
+@@ -805,7 +802,7 @@
+ try:
+ firstcset = None
+ lastonbranch = False
+- stream = get_log(self.url, [self.module], from_revnum, to_revnum)
++ stream = self._getlog([self.module], from_revnum, to_revnum)
+ try:
+ for entry in stream:
+ paths, revnum, author, date, message = entry
+@@ -897,6 +894,30 @@
+ # The path is outside our tracked tree...
+ self.ui.debug('%r is not under %r, ignoring\n' % (path, module))
+ return None
++
++ def _checkpath(self, path, revnum):
++ # ra.check_path does not like leading slashes very much, it leads
++ # to PROPFIND subversion errors
++ return svn.ra.check_path(self.ra, path.strip('/'), revnum)
++
++ def _getlog(self, paths, start, end, limit=0, discover_changed_paths=True,
++ strict_node_history=False):
++ # Normalize path names, svn >= 1.5 only wants paths relative to
++ # supplied URL
++ relpaths = []
++ for p in paths:
++ if not p.startswith('/'):
++ p = self.module + '/' + p
++ relpaths.append(p.strip('/'))
++ args = [self.base, relpaths, start, end, limit, discover_changed_paths,
++ strict_node_history]
++ arg = encodeargs(args)
++ hgexe = util.hgexecutable()
++ cmd = '%s debugsvnlog' % util.shellquote(hgexe)
++ stdin, stdout = os.popen2(cmd, 'b')
++ stdin.write(arg)
++ stdin.close()
++ return logstream(stdout)
+
+ pre_revprop_change = '''#!/bin/sh
+
+diff -r e37fa751182a -r 6ec941b6003d tests/test-convert-svn-branches
+--- a/tests/test-convert-svn-branches Fri Jul 25 13:26:16 2008 +0200
++++ b/tests/test-convert-svn-branches Wed Jul 30 22:26:41 2008 +0200
+@@ -58,7 +58,7 @@
+ svn ci -m "change b"
+
+ echo % create a cross-branch revision
+-svn move -m "move b" trunk/b branches/old/c
++svn move trunk/b branches/old/c
+ "$TESTDIR/svn-safe-append.py" c branches/old/c
+ svn ci -m "move and update c"
+
+diff -r e37fa751182a -r 6ec941b6003d tests/test-convert-svn-move
+--- a/tests/test-convert-svn-move Fri Jul 25 13:26:16 2008 +0200
++++ b/tests/test-convert-svn-move Wed Jul 30 22:26:41 2008 +0200
+@@ -58,10 +58,19 @@
+ svn rm subproject/trunk/d2
+ svn ci -m "changeb and rm d2"
+ svn mv $svnurl/subproject/trunk/d1 $svnurl/subproject/branches/d1 -m moved1again
+-echo % copy a file from a past revision
+-svn copy -r 7 $svnurl/subproject/trunk/d2/d $svnurl/subproject/trunk -m copyfilefrompast
+-echo % copy a directory from a past revision
+-svn copy -r 7 $svnurl/subproject/trunk/d2 $svnurl/subproject/trunk -m copydirfrompast
++
++if svn help copy | grep 'SRC\[@REV\]' > /dev/null 2>&1; then
++ # SVN >= 1.5 replaced the -r REV syntax with @REV
++ echo % copy a file from a past revision
++ svn copy $svnurl/subproject/trunk/d2/d at 7 $svnurl/subproject/trunk -m copyfilefrompast
++ echo % copy a directory from a past revision
++ svn copy $svnurl/subproject/trunk/d2 at 7 $svnurl/subproject/trunk -m copydirfrompast
++else
++ echo % copy a file from a past revision
++ svn copy -r 7 $svnurl/subproject/trunk/d2/d $svnurl/subproject/trunk -m copyfilefrompast
++ echo % copy a directory from a past revision
++ svn copy -r 7 $svnurl/subproject/trunk/d2 $svnurl/subproject/trunk -m copydirfrompast
++fi
+ cd ..
+
+ echo % convert trunk and branches
+diff -r e37fa751182a -r 6ec941b6003d tests/test-convert-svn-tags
+--- a/tests/test-convert-svn-tags Fri Jul 25 13:26:16 2008 +0200
++++ b/tests/test-convert-svn-tags Wed Jul 30 22:26:41 2008 +0200
+@@ -31,7 +31,7 @@
+ cd ..
+
+ svnurl=file://$svnpath/svn-repo/projA
+-svn import -m "init projA" projA $svnurl | fix_path
++svn import -m "init projA" projA $svnurl | fix_path | sort
+
+ echo % update svn repository
+ svn co $svnurl A | fix_path
+diff -r e37fa751182a -r 6ec941b6003d tests/test-convert-svn-tags.out
+--- a/tests/test-convert-svn-tags.out Fri Jul 25 13:26:16 2008 +0200
++++ b/tests/test-convert-svn-tags.out Wed Jul 30 22:26:41 2008 +0200
+@@ -1,9 +1,9 @@
+ % initial svn import
++
++Adding projA/branches
++Adding projA/tags
+ Adding projA/trunk
+ Adding projA/unrelated
+-Adding projA/branches
+-Adding projA/tags
+-
+ Committed revision 1.
+ % update svn repository
+ A A/trunk
Modified: packages/mercurial/trunk/debian/patches/series
===================================================================
--- packages/mercurial/trunk/debian/patches/series 2008-07-31 08:47:17 UTC (rev 1627)
+++ packages/mercurial/trunk/debian/patches/series 2008-07-31 12:35:37 UTC (rev 1628)
@@ -7,3 +7,4 @@
deb_specific__ElementTree_for_darcs.patch
convert-darc-doc.patch
backport__CVE-2008-2942-fix.patch
+backport__svn1.5-fix.patch
More information about the Python-apps-commits
mailing list