comparison mercurial/merge.py @ 26786:121f80d14e4b

merge.applyupdates: call driverpreprocess before starting merge actions We also need to update our internal state to whatever state driverpreprocess leaves it in. Adding an error state separate from the unresolved count is too big a refactoring for now, so we hack around it by setting it to a positive value to indicate an error state.
author Siddharth Agarwal <sid0@fb.com>
date Thu, 15 Oct 2015 01:19:10 -0700
parents e9a0d5f5c225
children 64848559413a
comparison
equal deleted inserted replaced
26785:e9a0d5f5c225 26786:121f80d14e4b
940 flags, = args 940 flags, = args
941 audit(f) 941 audit(f)
942 util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags) 942 util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags)
943 updated += 1 943 updated += 1
944 944
945 mergeactions = actions['m']
946 # the ordering is important here -- ms.mergedriver will raise if the merge
947 # driver has changed, and we want to be able to bypass it when overwrite is
948 # True
949 usemergedriver = not overwrite and mergeactions and ms.mergedriver
950
951 if usemergedriver:
952 ms.commit()
953 proceed = driverpreprocess(repo, ms, wctx, labels=labels)
954 # the driver might leave some files unresolved
955 unresolvedf = set(ms.unresolved())
956 if not proceed:
957 # XXX setting unresolved to at least 1 is a hack to make sure we
958 # error out
959 return updated, merged, removed, max(len(unresolvedf), 1)
960 newactions = []
961 for f, args, msg in mergeactions:
962 if f in unresolvedf:
963 newactions.append((f, args, msg))
964 mergeactions = newactions
965
945 # premerge 966 # premerge
946 tocomplete = [] 967 tocomplete = []
947 for f, args, msg in actions['m']: 968 for f, args, msg in actions['m']:
948 repo.ui.debug(" %s: %s -> m (premerge)\n" % (f, msg)) 969 repo.ui.debug(" %s: %s -> m (premerge)\n" % (f, msg))
949 z += 1 970 z += 1