1570 except error.UnsupportedBundleSpecification as e: |
1568 except error.UnsupportedBundleSpecification as e: |
1571 raise error.InputError( |
1569 raise error.InputError( |
1572 pycompat.bytestr(e), |
1570 pycompat.bytestr(e), |
1573 hint=_(b"see 'hg help bundlespec' for supported values for --type"), |
1571 hint=_(b"see 'hg help bundlespec' for supported values for --type"), |
1574 ) |
1572 ) |
1575 cgversion = bundlespec.contentopts[b"cg.version"] |
1573 cgversion = bundlespec.params[b"cg.version"] |
1576 |
1574 |
1577 # Packed bundles are a pseudo bundle format for now. |
1575 # Packed bundles are a pseudo bundle format for now. |
1578 if cgversion == b's1': |
1576 if cgversion == b's1': |
1579 raise error.InputError( |
1577 raise error.InputError( |
1580 _(b'packed bundles cannot be produced by "hg bundle"'), |
1578 _(b'packed bundles cannot be produced by "hg bundle"'), |
1599 if base: |
1597 if base: |
1600 if dests: |
1598 if dests: |
1601 raise error.InputError( |
1599 raise error.InputError( |
1602 _(b"--base is incompatible with specifying destinations") |
1600 _(b"--base is incompatible with specifying destinations") |
1603 ) |
1601 ) |
1604 common = [repo[rev].node() for rev in base] |
1602 cl = repo.changelog |
1605 heads = [repo[r].node() for r in revs] if revs else None |
1603 common = [cl.node(rev) for rev in base] |
|
1604 heads = [cl.node(r) for r in revs] if revs else None |
1606 outgoing = discovery.outgoing(repo, common, heads) |
1605 outgoing = discovery.outgoing(repo, common, heads) |
1607 missing = outgoing.missing |
1606 missing = outgoing.missing |
1608 excluded = outgoing.excluded |
1607 excluded = outgoing.excluded |
1609 else: |
1608 else: |
1610 missing = set() |
1609 missing = set() |
1679 compopts[b'threads'] = compthreads |
1678 compopts[b'threads'] = compthreads |
1680 |
1679 |
1681 # Bundling of obsmarker and phases is optional as not all clients |
1680 # Bundling of obsmarker and phases is optional as not all clients |
1682 # support the necessary features. |
1681 # support the necessary features. |
1683 cfg = ui.configbool |
1682 cfg = ui.configbool |
1684 contentopts = { |
1683 obsolescence_cfg = cfg(b'experimental', b'evolution.bundle-obsmarker') |
1685 b'obsolescence': cfg(b'experimental', b'evolution.bundle-obsmarker'), |
1684 bundlespec.set_param(b'obsolescence', obsolescence_cfg, overwrite=False) |
1686 b'obsolescence-mandatory': cfg( |
1685 obs_mand_cfg = cfg(b'experimental', b'evolution.bundle-obsmarker:mandatory') |
1687 b'experimental', b'evolution.bundle-obsmarker:mandatory' |
1686 bundlespec.set_param( |
1688 ), |
1687 b'obsolescence-mandatory', obs_mand_cfg, overwrite=False |
1689 b'phases': cfg(b'experimental', b'bundle-phases'), |
1688 ) |
1690 } |
1689 phases_cfg = cfg(b'experimental', b'bundle-phases') |
1691 bundlespec.contentopts.update(contentopts) |
1690 bundlespec.set_param(b'phases', phases_cfg, overwrite=False) |
1692 |
1691 |
1693 bundle2.writenewbundle( |
1692 bundle2.writenewbundle( |
1694 ui, |
1693 ui, |
1695 repo, |
1694 repo, |
1696 b'bundle', |
1695 b'bundle', |
1697 fname, |
1696 fname, |
1698 bversion, |
1697 bversion, |
1699 outgoing, |
1698 outgoing, |
1700 bundlespec.contentopts, |
1699 bundlespec.params, |
1701 compression=bcompression, |
1700 compression=bcompression, |
1702 compopts=compopts, |
1701 compopts=compopts, |
1703 ) |
1702 ) |
1704 |
1703 |
1705 |
1704 |
2475 helpcategory=command.CATEGORY_HELP, |
2474 helpcategory=command.CATEGORY_HELP, |
2476 norepo=True, |
2475 norepo=True, |
2477 ) |
2476 ) |
2478 def debugcommands(ui, cmd=b'', *args): |
2477 def debugcommands(ui, cmd=b'', *args): |
2479 """list all available commands and options""" |
2478 """list all available commands and options""" |
2480 for cmd, vals in sorted(pycompat.iteritems(table)): |
2479 for cmd, vals in sorted(table.items()): |
2481 cmd = cmd.split(b'|')[0] |
2480 cmd = cmd.split(b'|')[0] |
2482 opts = b', '.join([i[1] for i in vals[1]]) |
2481 opts = b', '.join([i[1] for i in vals[1]]) |
2483 ui.write(b'%s: %s\n' % (cmd, opts)) |
2482 ui.write(b'%s: %s\n' % (cmd, opts)) |
2484 |
2483 |
2485 |
2484 |
2542 |
2541 |
2543 .. note:: |
2542 .. note:: |
2544 |
2543 |
2545 :hg:`diff` may generate unexpected results for merges, as it will |
2544 :hg:`diff` may generate unexpected results for merges, as it will |
2546 default to comparing against the working directory's first |
2545 default to comparing against the working directory's first |
2547 parent changeset if no revisions are specified. |
2546 parent changeset if no revisions are specified. To diff against the |
|
2547 conflict regions, you can use `--config diff.merge=yes`. |
2548 |
2548 |
2549 By default, the working directory files are compared to its first parent. To |
2549 By default, the working directory files are compared to its first parent. To |
2550 see the differences from another revision, use --from. To see the difference |
2550 see the differences from another revision, use --from. To see the difference |
2551 to another revision, use --to. For example, :hg:`diff --from .^` will show |
2551 to another revision, use --to. For example, :hg:`diff --from .^` will show |
2552 the differences from the working copy's grandparent to the working copy, |
2552 the differences from the working copy's grandparent to the working copy, |
6181 else: |
6179 else: |
6182 # backup pre-resolve (merge uses .orig for its own purposes) |
6180 # backup pre-resolve (merge uses .orig for its own purposes) |
6183 a = repo.wjoin(f) |
6181 a = repo.wjoin(f) |
6184 try: |
6182 try: |
6185 util.copyfile(a, a + b".resolve") |
6183 util.copyfile(a, a + b".resolve") |
6186 except (IOError, OSError) as inst: |
6184 except FileNotFoundError: |
6187 if inst.errno != errno.ENOENT: |
6185 pass |
6188 raise |
|
6189 |
6186 |
6190 try: |
6187 try: |
6191 # preresolve file |
6188 # preresolve file |
6192 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} |
6189 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} |
6193 with ui.configoverride(overrides, b'resolve'): |
6190 with ui.configoverride(overrides, b'resolve'): |
6200 # replace filemerge's .orig file with our resolve file |
6197 # replace filemerge's .orig file with our resolve file |
6201 try: |
6198 try: |
6202 util.rename( |
6199 util.rename( |
6203 a + b".resolve", scmutil.backuppath(ui, repo, f) |
6200 a + b".resolve", scmutil.backuppath(ui, repo, f) |
6204 ) |
6201 ) |
6205 except OSError as inst: |
6202 except FileNotFoundError: |
6206 if inst.errno != errno.ENOENT: |
6203 pass |
6207 raise |
|
6208 |
6204 |
6209 if hasconflictmarkers: |
6205 if hasconflictmarkers: |
6210 ui.warn( |
6206 ui.warn( |
6211 _( |
6207 _( |
6212 b'warning: the following files still have conflict ' |
6208 b'warning: the following files still have conflict ' |
7095 |
7091 |
7096 status = repo.status(unknown=True) |
7092 status = repo.status(unknown=True) |
7097 |
7093 |
7098 c = repo.dirstate.copies() |
7094 c = repo.dirstate.copies() |
7099 copied, renamed = [], [] |
7095 copied, renamed = [], [] |
7100 for d, s in pycompat.iteritems(c): |
7096 for d, s in c.items(): |
7101 if s in status.removed: |
7097 if s in status.removed: |
7102 status.removed.remove(s) |
7098 status.removed.remove(s) |
7103 renamed.append(d) |
7099 renamed.append(d) |
7104 else: |
7100 else: |
7105 copied.append(d) |
7101 copied.append(d) |