mercurial/merge.py
changeset 33086 eb4c49f55f1f
parent 33085 1e79c66d6b07
child 33095 9fc880dff5f3
equal deleted inserted replaced
33085:1e79c66d6b07 33086:eb4c49f55f1f
  1082     """apply removes to the working directory
  1082     """apply removes to the working directory
  1083 
  1083 
  1084     yields tuples for progress updates
  1084     yields tuples for progress updates
  1085     """
  1085     """
  1086     verbose = repo.ui.verbose
  1086     verbose = repo.ui.verbose
  1087     audit = repo.wvfs.audit
       
  1088     try:
  1087     try:
  1089         cwd = pycompat.getcwd()
  1088         cwd = pycompat.getcwd()
  1090     except OSError as err:
  1089     except OSError as err:
  1091         if err.errno != errno.ENOENT:
  1090         if err.errno != errno.ENOENT:
  1092             raise
  1091             raise
  1094     i = 0
  1093     i = 0
  1095     for f, args, msg in actions:
  1094     for f, args, msg in actions:
  1096         repo.ui.debug(" %s: %s -> r\n" % (f, msg))
  1095         repo.ui.debug(" %s: %s -> r\n" % (f, msg))
  1097         if verbose:
  1096         if verbose:
  1098             repo.ui.note(_("removing %s\n") % f)
  1097             repo.ui.note(_("removing %s\n") % f)
  1099         audit(f)
  1098         wctx[f].audit()
  1100         try:
  1099         try:
  1101             wctx[f].remove(ignoremissing=True)
  1100             wctx[f].remove(ignoremissing=True)
  1102         except OSError as inst:
  1101         except OSError as inst:
  1103             repo.ui.warn(_("update failed to remove %s: %s!\n") %
  1102             repo.ui.warn(_("update failed to remove %s: %s!\n") %
  1104                          (f, inst.strerror))
  1103                          (f, inst.strerror))
  1199             fca = repo.filectx(f1, fileid=nullrev)
  1198             fca = repo.filectx(f1, fileid=nullrev)
  1200         ms.add(fcl, fco, fca, f)
  1199         ms.add(fcl, fco, fca, f)
  1201         if f1 != f and move:
  1200         if f1 != f and move:
  1202             moves.append(f1)
  1201             moves.append(f1)
  1203 
  1202 
  1204     audit = repo.wvfs.audit
       
  1205     _updating = _('updating')
  1203     _updating = _('updating')
  1206     _files = _('files')
  1204     _files = _('files')
  1207     progress = repo.ui.progress
  1205     progress = repo.ui.progress
  1208 
  1206 
  1209     # remove renamed files after safely stored
  1207     # remove renamed files after safely stored
  1210     for f in moves:
  1208     for f in moves:
  1211         if os.path.lexists(repo.wjoin(f)):
  1209         if os.path.lexists(repo.wjoin(f)):
  1212             repo.ui.debug("removing %s\n" % f)
  1210             repo.ui.debug("removing %s\n" % f)
  1213             audit(f)
  1211             wctx[f].audit()
  1214             wctx[f].remove()
  1212             wctx[f].remove()
  1215 
  1213 
  1216     numupdates = sum(len(l) for m, l in actions.items() if m != 'k')
  1214     numupdates = sum(len(l) for m, l in actions.items() if m != 'k')
  1217 
  1215 
  1218     if [a for a in actions['r'] if a[0] == '.hgsubstate']:
  1216     if [a for a in actions['r'] if a[0] == '.hgsubstate']:
  1266         repo.ui.debug(" %s: %s -> dm\n" % (f, msg))
  1264         repo.ui.debug(" %s: %s -> dm\n" % (f, msg))
  1267         z += 1
  1265         z += 1
  1268         progress(_updating, z, item=f, total=numupdates, unit=_files)
  1266         progress(_updating, z, item=f, total=numupdates, unit=_files)
  1269         f0, flags = args
  1267         f0, flags = args
  1270         repo.ui.note(_("moving %s to %s\n") % (f0, f))
  1268         repo.ui.note(_("moving %s to %s\n") % (f0, f))
  1271         audit(f)
  1269         wctx[f].audit()
  1272         wctx[f].write(wctx.filectx(f0).data(), flags)
  1270         wctx[f].write(wctx.filectx(f0).data(), flags)
  1273         wctx[f0].remove()
  1271         wctx[f0].remove()
  1274         updated += 1
  1272         updated += 1
  1275 
  1273 
  1276     # local directory rename, get
  1274     # local directory rename, get
  1287     for f, args, msg in actions['e']:
  1285     for f, args, msg in actions['e']:
  1288         repo.ui.debug(" %s: %s -> e\n" % (f, msg))
  1286         repo.ui.debug(" %s: %s -> e\n" % (f, msg))
  1289         z += 1
  1287         z += 1
  1290         progress(_updating, z, item=f, total=numupdates, unit=_files)
  1288         progress(_updating, z, item=f, total=numupdates, unit=_files)
  1291         flags, = args
  1289         flags, = args
  1292         audit(f)
  1290         wctx[f].audit()
  1293         wctx[f].setflags('l' in flags, 'x' in flags)
  1291         wctx[f].setflags('l' in flags, 'x' in flags)
  1294         updated += 1
  1292         updated += 1
  1295 
  1293 
  1296     # the ordering is important here -- ms.mergedriver will raise if the merge
  1294     # the ordering is important here -- ms.mergedriver will raise if the merge
  1297     # driver has changed, and we want to be able to bypass it when overwrite is
  1295     # driver has changed, and we want to be able to bypass it when overwrite is
  1321         progress(_updating, z, item=f, total=numupdates, unit=_files)
  1319         progress(_updating, z, item=f, total=numupdates, unit=_files)
  1322         if f == '.hgsubstate': # subrepo states need updating
  1320         if f == '.hgsubstate': # subrepo states need updating
  1323             subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx),
  1321             subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx),
  1324                              overwrite, labels)
  1322                              overwrite, labels)
  1325             continue
  1323             continue
  1326         audit(f)
  1324         wctx[f].audit()
  1327         complete, r = ms.preresolve(f, wctx)
  1325         complete, r = ms.preresolve(f, wctx)
  1328         if not complete:
  1326         if not complete:
  1329             numupdates += 1
  1327             numupdates += 1
  1330             tocomplete.append((f, args, msg))
  1328             tocomplete.append((f, args, msg))
  1331 
  1329