# HG changeset patch # User Patrick Mezard # Date 1290182833 -3600 # Node ID 864b5b67a5f04eb72ac7c7b81393b2f64419c4df # Parent 76ebfc41f490dcf651abd19b5ab65094619a7dfb svnexternals: keep diff() simple for the caller, return a list diff --git a/hgsubversion/pushmod.py b/hgsubversion/pushmod.py --- a/hgsubversion/pushmod.py +++ b/hgsubversion/pushmod.py @@ -97,8 +97,8 @@ def commit(ui, repo, rev_ctx, meta, base 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) diff --git a/hgsubversion/svnexternals.py b/hgsubversion/svnexternals.py --- a/hgsubversion/svnexternals.py +++ b/hgsubversion/svnexternals.py @@ -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