Mercurial > hg-stable
comparison mercurial/patch.py @ 12916:cfedc529e4a1
patch: remove unused applydiff() sourcefile argument
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Wed, 03 Nov 2010 21:11:07 +0100 |
parents | df1b65f8b4d4 |
children | 5dac0d04b838 |
comparison
equal
deleted
inserted
replaced
12915:df1b65f8b4d4 | 12916:cfedc529e4a1 |
---|---|
972 gitlr.push(firstline) | 972 gitlr.push(firstline) |
973 gitpatches = readgitpatch(gitlr) | 973 gitpatches = readgitpatch(gitlr) |
974 fp.seek(pos) | 974 fp.seek(pos) |
975 return gitpatches | 975 return gitpatches |
976 | 976 |
977 def iterhunks(ui, fp, sourcefile=None): | 977 def iterhunks(ui, fp): |
978 """Read a patch and yield the following events: | 978 """Read a patch and yield the following events: |
979 - ("file", afile, bfile, firsthunk): select a new target file. | 979 - ("file", afile, bfile, firsthunk): select a new target file. |
980 - ("hunk", hunk): a new hunk is ready to be applied, follows a | 980 - ("hunk", hunk): a new hunk is ready to be applied, follows a |
981 "file" event. | 981 "file" event. |
982 - ("git", gitchanges): current diff is in git format, gitchanges | 982 - ("git", gitchanges): current diff is in git format, gitchanges |
1004 if current_hunk: | 1004 if current_hunk: |
1005 if x.startswith('\ '): | 1005 if x.startswith('\ '): |
1006 current_hunk.fix_newline() | 1006 current_hunk.fix_newline() |
1007 yield 'hunk', current_hunk | 1007 yield 'hunk', current_hunk |
1008 current_hunk = None | 1008 current_hunk = None |
1009 if ((sourcefile or state == BFILE) and ((not context and x[0] == '@') or | 1009 if (state == BFILE and ((not context and x[0] == '@') or |
1010 ((context is not False) and x.startswith('***************')))): | 1010 ((context is not False) and x.startswith('***************')))): |
1011 if context is None and x.startswith('***************'): | 1011 if context is None and x.startswith('***************'): |
1012 context = True | 1012 context = True |
1013 gpatch = changed.get(bfile) | 1013 gpatch = changed.get(bfile) |
1014 create = afile == '/dev/null' or gpatch and gpatch.op == 'ADD' | 1014 create = afile == '/dev/null' or gpatch and gpatch.op == 'ADD' |
1078 yield 'hunk', current_hunk | 1078 yield 'hunk', current_hunk |
1079 else: | 1079 else: |
1080 raise PatchError(_("malformed patch %s %s") % (afile, | 1080 raise PatchError(_("malformed patch %s %s") % (afile, |
1081 current_hunk.desc)) | 1081 current_hunk.desc)) |
1082 | 1082 |
1083 def applydiff(ui, fp, changed, strip=1, sourcefile=None, eolmode='strict'): | 1083 def applydiff(ui, fp, changed, strip=1, eolmode='strict'): |
1084 """Reads a patch from fp and tries to apply it. | 1084 """Reads a patch from fp and tries to apply it. |
1085 | 1085 |
1086 The dict 'changed' is filled in with all of the filenames changed | 1086 The dict 'changed' is filled in with all of the filenames changed |
1087 by the patch. Returns 0 for a clean patch, -1 if any rejects were | 1087 by the patch. Returns 0 for a clean patch, -1 if any rejects were |
1088 found and 1 if there was any fuzz. | 1088 found and 1 if there was any fuzz. |
1092 patching then normalized according to 'eolmode'. | 1092 patching then normalized according to 'eolmode'. |
1093 | 1093 |
1094 Callers probably want to call 'cmdutil.updatedir' after this to | 1094 Callers probably want to call 'cmdutil.updatedir' after this to |
1095 apply certain categories of changes not done by this function. | 1095 apply certain categories of changes not done by this function. |
1096 """ | 1096 """ |
1097 return _applydiff( | 1097 return _applydiff(ui, fp, patchfile, copyfile, changed, strip=strip, |
1098 ui, fp, patchfile, copyfile, | 1098 eolmode=eolmode) |
1099 changed, strip=strip, sourcefile=sourcefile, eolmode=eolmode) | 1099 |
1100 | 1100 def _applydiff(ui, fp, patcher, copyfn, changed, strip=1, eolmode='strict'): |
1101 | |
1102 def _applydiff(ui, fp, patcher, copyfn, changed, strip=1, | |
1103 sourcefile=None, eolmode='strict'): | |
1104 rejects = 0 | 1101 rejects = 0 |
1105 err = 0 | 1102 err = 0 |
1106 current_file = None | 1103 current_file = None |
1107 cwd = os.getcwd() | 1104 cwd = os.getcwd() |
1108 opener = util.opener(cwd) | 1105 opener = util.opener(cwd) |
1113 if current_file.dirty: | 1110 if current_file.dirty: |
1114 current_file.writelines(current_file.fname, current_file.lines) | 1111 current_file.writelines(current_file.fname, current_file.lines) |
1115 current_file.write_rej() | 1112 current_file.write_rej() |
1116 return len(current_file.rej) | 1113 return len(current_file.rej) |
1117 | 1114 |
1118 for state, values in iterhunks(ui, fp, sourcefile): | 1115 for state, values in iterhunks(ui, fp): |
1119 if state == 'hunk': | 1116 if state == 'hunk': |
1120 if not current_file: | 1117 if not current_file: |
1121 continue | 1118 continue |
1122 ret = current_file.apply(values) | 1119 ret = current_file.apply(values) |
1123 if ret >= 0: | 1120 if ret >= 0: |
1126 err = 1 | 1123 err = 1 |
1127 elif state == 'file': | 1124 elif state == 'file': |
1128 rejects += closefile() | 1125 rejects += closefile() |
1129 afile, bfile, first_hunk = values | 1126 afile, bfile, first_hunk = values |
1130 try: | 1127 try: |
1131 if sourcefile: | 1128 current_file, missing = selectfile(afile, bfile, |
1132 current_file = patcher(ui, sourcefile, opener, | 1129 first_hunk, strip) |
1133 eolmode=eolmode) | 1130 current_file = patcher(ui, current_file, opener, |
1134 else: | 1131 missing=missing, eolmode=eolmode) |
1135 current_file, missing = selectfile(afile, bfile, | |
1136 first_hunk, strip) | |
1137 current_file = patcher(ui, current_file, opener, | |
1138 missing=missing, eolmode=eolmode) | |
1139 except PatchError, err: | 1132 except PatchError, err: |
1140 ui.warn(str(err) + '\n') | 1133 ui.warn(str(err) + '\n') |
1141 current_file = None | 1134 current_file = None |
1142 rejects += 1 | 1135 rejects += 1 |
1143 continue | 1136 continue |