You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by es...@apache.org on 2012/12/11 22:33:32 UTC
svn commit: r1420427 -
/subversion/trunk/contrib/server-side/svncutter/svncutter
Author: esr
Date: Tue Dec 11 21:33:31 2012
New Revision: 1420427
URL: http://svn.apache.org/viewvc?rev=1420427&view=rev
Log:
Change branchdel so that if no nodes in a revision pass, the header doesn't
either.
* contrib/server-side/svncutter/svncutter
(report, skeleton): Refactored.
(branchdel): Header-output-suppression logic.
(read_revision_header): Gather trailing newlines.
Modified:
subversion/trunk/contrib/server-side/svncutter/svncutter
Modified: subversion/trunk/contrib/server-side/svncutter/svncutter
URL: http://svn.apache.org/viewvc/subversion/trunk/contrib/server-side/svncutter/svncutter?rev=1420427&r1=1420426&r2=1420427&view=diff
==============================================================================
--- subversion/trunk/contrib/server-side/svncutter/svncutter (original)
+++ subversion/trunk/contrib/server-side/svncutter/svncutter Tue Dec 11 21:33:31 2012
@@ -253,6 +253,8 @@ class DumpfileSource(LineBufferedSource)
stash += "V %d%s" % (len(properties[key]), os.linesep)
stash += "%s%s" % (properties[key], os.linesep)
stash += self.flush()
+ while self.peek() == '\n':
+ stash += self.readline()
if self.baton:
self.baton.twirl()
return (revision, stash, properties)
@@ -447,10 +449,10 @@ def report(source, selection, hook):
if not source.has_line_buffered():
return
while True:
+ nodecount = 0
(revision,stash,properties) = source.read_revision_header()
if revision in selection:
- sys.stdout.write(stash)
- emit = True
+ pass
elif revision == selection.upperbound()+1:
return
else:
@@ -465,11 +467,18 @@ def report(source, selection, hook):
continue
elif line.startswith("Revision-number:"):
source.push(line)
+ if stash and nodecount == 0:
+ sys.stdout.write(stash)
break
elif line.startswith("Node-path:"):
+ nodecount += 1
source.push(line)
(header, properties, content) = source.read_node()
- hook(header, properties, content)
+ emit = hook(header, properties, content)
+ if emit and stash:
+ emit = stash + emit
+ stash = ""
+ sys.stdout.write(emit)
continue
else:
sys.stderr.write("svncutter: parse at %s doesn't look right (%s), aborting!\n" % (revision, repr(line)))
@@ -701,13 +710,15 @@ def setlog(source, logpatch, selection):
def skeletonize(source, selection):
"Skeletonize a portion of the dump file defined by a revision selection."
- report(source, selection, lambda h, p, c: sys.stdout.write(h + p))
+ report(source, selection, lambda h, p, c: h + p)
def branchdel(source, selection, branchname):
"Strip out ops defined by a revision selection and a branch name."
def __branchdel(header, properties, content):
- if not re.search("Node-path: " + branchname, header):
- sys.stdout.write(header + properties + content)
+ if re.search("Node-path: " + branchname, header):
+ return ""
+ else:
+ return header + properties + content
report(source, selection, __branchdel)
if __name__ == '__main__':