svnexternals: keep diff() simple for the caller, return a list

This commit is contained in:
Patrick Mezard 2010-11-19 17:07:13 +01:00
parent 8b65a18ce1
commit 3213066d78
2 changed files with 10 additions and 8 deletions

View File

@ -97,8 +97,8 @@ def commit(ui, repo, rev_ctx, meta, base_revision, svn):
elif parent_branch and parent_branch != 'default':
branch_path = 'branches/%s' % parent_branch
extchanges = list(svnexternals.diff(svnexternals.parse(parent),
svnexternals.parse(rev_ctx)))
extchanges = svnexternals.diff(svnexternals.parse(parent),
svnexternals.parse(rev_ctx))
addeddirs, deleteddirs = _getdirchanges(svn, branch_path, parent, rev_ctx,
rev_ctx.files(), extchanges)
deleteddirs = set(deleteddirs)

View File

@ -61,18 +61,20 @@ class externalsfile(dict):
self.setdefault(target, []).append(line[1:])
def diff(ext1, ext2):
"""Compare 2 externalsfile and yield tuples like (dir, value1, value2)
where value1 is the external value in ext1 for dir or None, and
value2 the same in ext2.
"""Compare 2 externalsfile and return a list of tuples like (dir,
value1, value2) where value1 is the external value in ext1 for dir
or None, and value2 the same in ext2.
"""
changes = []
for d in ext1:
if d not in ext2:
yield d, '\n'.join(ext1[d]), None
changes.append((d, '\n'.join(ext1[d]), None))
elif ext1[d] != ext2[d]:
yield d, '\n'.join(ext1[d]), '\n'.join(ext2[d])
changes.append((d, '\n'.join(ext1[d]), '\n'.join(ext2[d])))
for d in ext2:
if d not in ext1:
yield d, None, '\n'.join(ext2[d])
changes.append((d, None, '\n'.join(ext2[d])))
return changes
class BadDefinition(Exception):
pass