1582 fca = repo.filectx(f1, fileid=nullrev) |
1582 fca = repo.filectx(f1, fileid=nullrev) |
1583 ms.add(fcl, fco, fca, f) |
1583 ms.add(fcl, fco, fca, f) |
1584 if f1 != f and move: |
1584 if f1 != f and move: |
1585 moves.append(f1) |
1585 moves.append(f1) |
1586 |
1586 |
1587 _updating = _('updating') |
|
1588 _files = _('files') |
|
1589 progress = repo.ui.progress |
|
1590 |
|
1591 # remove renamed files after safely stored |
1587 # remove renamed files after safely stored |
1592 for f in moves: |
1588 for f in moves: |
1593 if wctx[f].lexists(): |
1589 if wctx[f].lexists(): |
1594 repo.ui.debug("removing %s\n" % f) |
1590 repo.ui.debug("removing %s\n" % f) |
1595 wctx[f].audit() |
1591 wctx[f].audit() |
1596 wctx[f].remove() |
1592 wctx[f].remove() |
1597 |
1593 |
1598 numupdates = sum(len(l) for m, l in actions.items() |
1594 numupdates = sum(len(l) for m, l in actions.items() |
1599 if m != ACTION_KEEP) |
1595 if m != ACTION_KEEP) |
1600 z = 0 |
1596 progress = repo.ui.makeprogress(_('updating'), unit=_('files'), |
|
1597 total=numupdates) |
1601 |
1598 |
1602 if [a for a in actions[ACTION_REMOVE] if a[0] == '.hgsubstate']: |
1599 if [a for a in actions[ACTION_REMOVE] if a[0] == '.hgsubstate']: |
1603 subrepoutil.submerge(repo, wctx, mctx, wctx, overwrite, labels) |
1600 subrepoutil.submerge(repo, wctx, mctx, wctx, overwrite, labels) |
1604 |
1601 |
1605 # record path conflicts |
1602 # record path conflicts |
1612 s(_("the local file has been renamed to %s\n") % f1) |
1609 s(_("the local file has been renamed to %s\n") % f1) |
1613 else: |
1610 else: |
1614 s(_("the remote file has been renamed to %s\n") % f1) |
1611 s(_("the remote file has been renamed to %s\n") % f1) |
1615 s(_("resolve manually then use 'hg resolve --mark %s'\n") % f) |
1612 s(_("resolve manually then use 'hg resolve --mark %s'\n") % f) |
1616 ms.addpath(f, f1, fo) |
1613 ms.addpath(f, f1, fo) |
1617 z += 1 |
1614 progress.increment(item=f) |
1618 progress(_updating, z, item=f, total=numupdates, unit=_files) |
|
1619 |
1615 |
1620 # When merging in-memory, we can't support worker processes, so set the |
1616 # When merging in-memory, we can't support worker processes, so set the |
1621 # per-item cost at 0 in that case. |
1617 # per-item cost at 0 in that case. |
1622 cost = 0 if wctx.isinmemory() else 0.001 |
1618 cost = 0 if wctx.isinmemory() else 0.001 |
1623 |
1619 |
1624 # remove in parallel (must come before resolving path conflicts and getting) |
1620 # remove in parallel (must come before resolving path conflicts and getting) |
1625 prog = worker.worker(repo.ui, cost, batchremove, (repo, wctx), |
1621 prog = worker.worker(repo.ui, cost, batchremove, (repo, wctx), |
1626 actions[ACTION_REMOVE]) |
1622 actions[ACTION_REMOVE]) |
1627 for i, item in prog: |
1623 for i, item in prog: |
1628 z += i |
1624 progress.increment(step=i, item=item) |
1629 progress(_updating, z, item=item, total=numupdates, unit=_files) |
|
1630 removed = len(actions[ACTION_REMOVE]) |
1625 removed = len(actions[ACTION_REMOVE]) |
1631 |
1626 |
1632 # resolve path conflicts (must come before getting) |
1627 # resolve path conflicts (must come before getting) |
1633 for f, args, msg in actions[ACTION_PATH_CONFLICT_RESOLVE]: |
1628 for f, args, msg in actions[ACTION_PATH_CONFLICT_RESOLVE]: |
1634 repo.ui.debug(" %s: %s -> pr\n" % (f, msg)) |
1629 repo.ui.debug(" %s: %s -> pr\n" % (f, msg)) |
1636 if wctx[f0].lexists(): |
1631 if wctx[f0].lexists(): |
1637 repo.ui.note(_("moving %s to %s\n") % (f0, f)) |
1632 repo.ui.note(_("moving %s to %s\n") % (f0, f)) |
1638 wctx[f].audit() |
1633 wctx[f].audit() |
1639 wctx[f].write(wctx.filectx(f0).data(), wctx.filectx(f0).flags()) |
1634 wctx[f].write(wctx.filectx(f0).data(), wctx.filectx(f0).flags()) |
1640 wctx[f0].remove() |
1635 wctx[f0].remove() |
1641 z += 1 |
1636 progress.increment(item=f) |
1642 progress(_updating, z, item=f, total=numupdates, unit=_files) |
|
1643 |
1637 |
1644 # get in parallel |
1638 # get in parallel |
1645 prog = worker.worker(repo.ui, cost, batchget, (repo, mctx, wctx), |
1639 prog = worker.worker(repo.ui, cost, batchget, (repo, mctx, wctx), |
1646 actions[ACTION_GET]) |
1640 actions[ACTION_GET]) |
1647 for i, item in prog: |
1641 for i, item in prog: |
1648 z += i |
1642 progress.increment(step=i, item=item) |
1649 progress(_updating, z, item=item, total=numupdates, unit=_files) |
|
1650 updated = len(actions[ACTION_GET]) |
1643 updated = len(actions[ACTION_GET]) |
1651 |
1644 |
1652 if [a for a in actions[ACTION_GET] if a[0] == '.hgsubstate']: |
1645 if [a for a in actions[ACTION_GET] if a[0] == '.hgsubstate']: |
1653 subrepoutil.submerge(repo, wctx, mctx, wctx, overwrite, labels) |
1646 subrepoutil.submerge(repo, wctx, mctx, wctx, overwrite, labels) |
1654 |
1647 |
1655 # forget (manifest only, just log it) (must come first) |
1648 # forget (manifest only, just log it) (must come first) |
1656 for f, args, msg in actions[ACTION_FORGET]: |
1649 for f, args, msg in actions[ACTION_FORGET]: |
1657 repo.ui.debug(" %s: %s -> f\n" % (f, msg)) |
1650 repo.ui.debug(" %s: %s -> f\n" % (f, msg)) |
1658 z += 1 |
1651 progress.increment(item=f) |
1659 progress(_updating, z, item=f, total=numupdates, unit=_files) |
|
1660 |
1652 |
1661 # re-add (manifest only, just log it) |
1653 # re-add (manifest only, just log it) |
1662 for f, args, msg in actions[ACTION_ADD]: |
1654 for f, args, msg in actions[ACTION_ADD]: |
1663 repo.ui.debug(" %s: %s -> a\n" % (f, msg)) |
1655 repo.ui.debug(" %s: %s -> a\n" % (f, msg)) |
1664 z += 1 |
1656 progress.increment(item=f) |
1665 progress(_updating, z, item=f, total=numupdates, unit=_files) |
|
1666 |
1657 |
1667 # re-add/mark as modified (manifest only, just log it) |
1658 # re-add/mark as modified (manifest only, just log it) |
1668 for f, args, msg in actions[ACTION_ADD_MODIFIED]: |
1659 for f, args, msg in actions[ACTION_ADD_MODIFIED]: |
1669 repo.ui.debug(" %s: %s -> am\n" % (f, msg)) |
1660 repo.ui.debug(" %s: %s -> am\n" % (f, msg)) |
1670 z += 1 |
1661 progress.increment(item=f) |
1671 progress(_updating, z, item=f, total=numupdates, unit=_files) |
|
1672 |
1662 |
1673 # keep (noop, just log it) |
1663 # keep (noop, just log it) |
1674 for f, args, msg in actions[ACTION_KEEP]: |
1664 for f, args, msg in actions[ACTION_KEEP]: |
1675 repo.ui.debug(" %s: %s -> k\n" % (f, msg)) |
1665 repo.ui.debug(" %s: %s -> k\n" % (f, msg)) |
1676 # no progress |
1666 # no progress |
1677 |
1667 |
1678 # directory rename, move local |
1668 # directory rename, move local |
1679 for f, args, msg in actions[ACTION_DIR_RENAME_MOVE_LOCAL]: |
1669 for f, args, msg in actions[ACTION_DIR_RENAME_MOVE_LOCAL]: |
1680 repo.ui.debug(" %s: %s -> dm\n" % (f, msg)) |
1670 repo.ui.debug(" %s: %s -> dm\n" % (f, msg)) |
1681 z += 1 |
1671 progress.increment(item=f) |
1682 progress(_updating, z, item=f, total=numupdates, unit=_files) |
|
1683 f0, flags = args |
1672 f0, flags = args |
1684 repo.ui.note(_("moving %s to %s\n") % (f0, f)) |
1673 repo.ui.note(_("moving %s to %s\n") % (f0, f)) |
1685 wctx[f].audit() |
1674 wctx[f].audit() |
1686 wctx[f].write(wctx.filectx(f0).data(), flags) |
1675 wctx[f].write(wctx.filectx(f0).data(), flags) |
1687 wctx[f0].remove() |
1676 wctx[f0].remove() |
1688 updated += 1 |
1677 updated += 1 |
1689 |
1678 |
1690 # local directory rename, get |
1679 # local directory rename, get |
1691 for f, args, msg in actions[ACTION_LOCAL_DIR_RENAME_GET]: |
1680 for f, args, msg in actions[ACTION_LOCAL_DIR_RENAME_GET]: |
1692 repo.ui.debug(" %s: %s -> dg\n" % (f, msg)) |
1681 repo.ui.debug(" %s: %s -> dg\n" % (f, msg)) |
1693 z += 1 |
1682 progress.increment(item=f) |
1694 progress(_updating, z, item=f, total=numupdates, unit=_files) |
|
1695 f0, flags = args |
1683 f0, flags = args |
1696 repo.ui.note(_("getting %s to %s\n") % (f0, f)) |
1684 repo.ui.note(_("getting %s to %s\n") % (f0, f)) |
1697 wctx[f].write(mctx.filectx(f0).data(), flags) |
1685 wctx[f].write(mctx.filectx(f0).data(), flags) |
1698 updated += 1 |
1686 updated += 1 |
1699 |
1687 |
1700 # exec |
1688 # exec |
1701 for f, args, msg in actions[ACTION_EXEC]: |
1689 for f, args, msg in actions[ACTION_EXEC]: |
1702 repo.ui.debug(" %s: %s -> e\n" % (f, msg)) |
1690 repo.ui.debug(" %s: %s -> e\n" % (f, msg)) |
1703 z += 1 |
1691 progress.increment(item=f) |
1704 progress(_updating, z, item=f, total=numupdates, unit=_files) |
|
1705 flags, = args |
1692 flags, = args |
1706 wctx[f].audit() |
1693 wctx[f].audit() |
1707 wctx[f].setflags('l' in flags, 'x' in flags) |
1694 wctx[f].setflags('l' in flags, 'x' in flags) |
1708 updated += 1 |
1695 updated += 1 |
1709 |
1696 |