D4666: fastannotate: process files as they arrive
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Thu Sep 20 12:26:43 UTC 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGd8a7690ccc74: fastannotate: process files as they arrive (authored by martinvonz, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4666?vs=11200&id=11204
REVISION DETAIL
https://phab.mercurial-scm.org/D4666
AFFECTED FILES
hgext/fastannotate/protocol.py
tests/test-fastannotate-protocol.t
CHANGE DETAILS
diff --git a/tests/test-fastannotate-protocol.t b/tests/test-fastannotate-protocol.t
--- a/tests/test-fastannotate-protocol.t
+++ b/tests/test-fastannotate-protocol.t
@@ -47,7 +47,6 @@
sending protocaps command
fastannotate: requesting 1 files
sending getannotate command
- fastannotate: server returned
fastannotate: writing 112 bytes to fastannotate/default/a.l
fastannotate: writing 94 bytes to fastannotate/default/a.m
fastannotate: a: using fast path (resolved fctx: True)
@@ -94,7 +93,6 @@
sending protocaps command
fastannotate: requesting 1 files
sending getannotate command
- fastannotate: server returned
fastannotate: a: 1 new changesets in the main branch
0: 1
1: 2
@@ -142,7 +140,6 @@
$ hg annotate a --config fastannotate.modes=fctx --debug --config fastannotate.mainbranch=4 | grep fastannotate
fastannotate: requesting 1 files
- fastannotate: server returned
fastannotate: a: 1 new changesets in the main branch
the server would rebuild broken cache automatically
@@ -171,7 +168,6 @@
sending protocaps command
fastannotate: requesting 1 files
sending getannotate command
- fastannotate: server returned
fastannotate: writing * (glob)
fastannotate: writing * (glob)
$ diff $p1/a.l $p2/a.l
diff --git a/hgext/fastannotate/protocol.py b/hgext/fastannotate/protocol.py
--- a/hgext/fastannotate/protocol.py
+++ b/hgext/fastannotate/protocol.py
@@ -163,23 +163,23 @@
'getannotate',
{'path': p, 'lastnode':lastnodemap.get(p)}))
- ui.debug('fastannotate: server returned\n')
- for result in results:
- r = result.result()
- # TODO: pconvert these paths on the server?
- r = {util.pconvert(p): v for p, v in r.iteritems()}
- for path in sorted(r):
- # ignore malicious paths
- if not path.startswith('fastannotate/') or '/../' in (path + '/'):
- ui.debug('fastannotate: ignored malicious path %s\n' % path)
- continue
- content = r[path]
- if ui.debugflag:
- ui.debug('fastannotate: writing %d bytes to %s\n'
- % (len(content), path))
- repo.vfs.makedirs(os.path.dirname(path))
- with repo.vfs(path, 'wb') as f:
- f.write(content)
+ for result in results:
+ r = result.result()
+ # TODO: pconvert these paths on the server?
+ r = {util.pconvert(p): v for p, v in r.iteritems()}
+ for path in sorted(r):
+ # ignore malicious paths
+ if (not path.startswith('fastannotate/')
+ or '/../' in (path + '/')):
+ ui.debug('fastannotate: ignored malicious path %s\n' % path)
+ continue
+ content = r[path]
+ if ui.debugflag:
+ ui.debug('fastannotate: writing %d bytes to %s\n'
+ % (len(content), path))
+ repo.vfs.makedirs(os.path.dirname(path))
+ with repo.vfs(path, 'wb') as f:
+ f.write(content)
def _filterfetchpaths(repo, paths):
"""return a subset of paths whose history is long and need to fetch linelog
To: martinvonz, #hg-reviewers, indygreg
Cc: yuja, mercurial-devel
More information about the Mercurial-devel
mailing list