diff options
author | Felipe Contreras <felipe.contreras@gmail.com> | 2012-11-04 03:13:28 +0100 |
---|---|---|
committer | Jeff King <peff@peff.net> | 2012-11-04 08:35:20 -0500 |
commit | 6497a2bab5880dc353b83bb5d4615074d6552959 (patch) | |
tree | c62dc5277d624d4453340ddd5eb99291cc506639 /contrib | |
parent | ff247d9e56366a3b03d8ca926fd88b51d3c2df52 (diff) | |
download | git-6497a2bab5880dc353b83bb5d4615074d6552959.tar.gz git-6497a2bab5880dc353b83bb5d4615074d6552959.tar.xz |
remote-hg: match hg merge behavior
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/remote-helpers/git-remote-hg | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg index 503a9fc32..247b7cbfc 100755 --- a/contrib/remote-helpers/git-remote-hg +++ b/contrib/remote-helpers/git-remote-hg @@ -427,6 +427,14 @@ def parse_blob(parser): parser.next() return +def get_merge_files(repo, p1, p2, files): + for e in repo[p1].files(): + if e not in files: + if e not in repo[p1].manifest(): + continue + f = { 'ctx' : repo[p1][e] } + files[e] = f + def parse_commit(parser): global marks, blob_marks, bmarks, parsed_refs @@ -470,6 +478,8 @@ def parse_commit(parser): of = files[f] if 'deleted' in of: raise IOError + if 'ctx' in of: + return of['ctx'] is_exec = of['mode'] == 'x' is_link = of['mode'] == 'l' return context.memfilectx(f, of['data'], is_link, is_exec, None) @@ -492,6 +502,13 @@ def parse_commit(parser): else: p2 = '\0' * 20 + # + # If files changed from any of the parents, hg wants to know, but in git if + # nothing changed from the first parent, nothing changed. + # + if merge_mark: + get_merge_files(repo, p1, p2, files) + ctx = context.memctx(repo, (p1, p2), data, files.keys(), getfilectx, user, (date, tz), extra) |