equal
deleted
inserted
replaced
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 |