D1669: synthrepo: create filectx instance in 'filectxfn' callback
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Tue Dec 12 22:19:53 UTC 2017
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
I would like to pass the memctx to the memfilectx constructor, but
it's not available where we currently create the memfilectx. It is
available in the 'filectxfn' callback, so let's create the memfilectx
there instead. A later patch will start actually passing the memctx.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D1669
AFFECTED FILES
contrib/synthrepo.py
CHANGE DETAILS
diff --git a/contrib/synthrepo.py b/contrib/synthrepo.py
--- a/contrib/synthrepo.py
+++ b/contrib/synthrepo.py
@@ -369,14 +369,14 @@
while not validpath(path):
path = pickpath()
data = '%s contents\n' % path
- files[path] = context.memfilectx(repo, path, data)
+ files[path] = data
dir = os.path.dirname(path)
while dir and dir not in dirs:
dirs.add(dir)
dir = os.path.dirname(dir)
def filectxfn(repo, memctx, path):
- return files[path]
+ return context.memfilectx(repo, path, files[path])
ui.progress(_synthesizing, None)
message = 'synthesized wide repo with %d files' % (len(files),)
@@ -444,14 +444,12 @@
for __ in xrange(add):
lines.insert(random.randint(0, len(lines)), makeline())
path = fctx.path()
- changes[path] = context.memfilectx(repo, path,
- '\n'.join(lines) + '\n')
+ changes[path] = '\n'.join(lines) + '\n'
for __ in xrange(pick(filesremoved)):
path = random.choice(mfk)
for __ in xrange(10):
path = random.choice(mfk)
if path not in changes:
- changes[path] = None
break
if filesadded:
dirs = list(pctx.dirs())
@@ -466,9 +464,11 @@
pathstr = '/'.join(filter(None, path))
data = '\n'.join(makeline()
for __ in xrange(pick(linesinfilesadded))) + '\n'
- changes[pathstr] = context.memfilectx(repo, pathstr, data)
+ changes[pathstr] = data
def filectxfn(repo, memctx, path):
- return changes[path]
+ if path not in changes:
+ return None
+ return context.memfilectx(repo, path, changes[path])
if not changes:
continue
if revs:
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list