Mercurial > hgsubversion
changeset 200:2e8c527f0456
stupid replay: Don't actually try and apply diffs to files we don't have anyway.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Mon, 02 Mar 2009 23:50:40 -0600 |
parents | 91db8fc049b0 |
children | 883976b654b6 |
files | fetch_command.py |
diffstat | 1 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/fetch_command.py +++ b/fetch_command.py @@ -200,6 +200,22 @@ def mempatchproxy(parentctx, files): return mempatch + +def filteriterhunks(hg_editor): + iterhunks = patch.iterhunks + def filterhunks(ui, fp, sourcefile=None): + applycurrent = False + for data in iterhunks(ui, fp, sourcefile): + if data[0] == 'file': + if hg_editor._is_file_included(data[1][1]): + applycurrent = True + else: + applycurrent = False + assert data[0] != 'git', 'Filtering git hunks not supported.' + if applycurrent: + yield data + return filterhunks + def stupid_diff_branchrev(ui, svn, hg_editor, branch, r, parentctx): """Extract all 'branch' content at a given revision. @@ -254,7 +270,9 @@ def stupid_diff_branchrev(ui, svn, hg_ed if d2.strip() and len(re.findall('\n[-+]', d2.strip())) > 0: try: oldpatchfile = patch.patchfile + olditerhunks = patch.iterhunks patch.patchfile = mempatchproxy(parentctx, files_data) + patch.iterhunks = filteriterhunks(hg_editor) try: # We can safely ignore the changed list since we are # handling non-git patches. Touched files are known @@ -263,6 +281,7 @@ def stupid_diff_branchrev(ui, svn, hg_ed {}, strip=0) finally: patch.patchfile = oldpatchfile + patch.iterhunks = olditerhunks except patch.PatchError: # TODO: this happens if the svn server has the wrong mime # type stored and doesn't know a file is binary. It would