Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 1944:fdf40c9b3306
incoming: add support for remote repo using bundlerepo
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Mon, 13 Mar 2006 03:54:23 +0100 |
parents | 8198c60f7914 |
children | ebe273a16048 |
comparison
equal
deleted
inserted
replaced
1943:8198c60f7914 | 1944:fdf40c9b3306 |
---|---|
7 | 7 |
8 from demandload import demandload | 8 from demandload import demandload |
9 from node import * | 9 from node import * |
10 from i18n import gettext as _ | 10 from i18n import gettext as _ |
11 demandload(globals(), "os re sys signal shutil imp urllib pdb") | 11 demandload(globals(), "os re sys signal shutil imp urllib pdb") |
12 demandload(globals(), "fancyopts ui hg util lock revlog templater") | 12 demandload(globals(), "fancyopts ui hg util lock revlog templater bundlerepo") |
13 demandload(globals(), "fnmatch hgweb mdiff random signal time traceback") | 13 demandload(globals(), "fnmatch hgweb mdiff random signal tempfile time") |
14 demandload(globals(), "errno socket version struct atexit sets bz2") | 14 demandload(globals(), "traceback errno socket version struct atexit sets bz2") |
15 | 15 |
16 class UnknownCommand(Exception): | 16 class UnknownCommand(Exception): |
17 """Exception raised if command is not in the command table.""" | 17 """Exception raised if command is not in the command table.""" |
18 class AmbiguousCommand(Exception): | 18 class AmbiguousCommand(Exception): |
19 """Exception raised if command shortcut matches more than one command.""" | 19 """Exception raised if command shortcut matches more than one command.""" |
1755 | 1755 |
1756 Show new changesets found in the specified repo or the default | 1756 Show new changesets found in the specified repo or the default |
1757 pull repo. These are the changesets that would be pulled if a pull | 1757 pull repo. These are the changesets that would be pulled if a pull |
1758 was requested. | 1758 was requested. |
1759 | 1759 |
1760 Currently only local repositories are supported. | 1760 For remote repository, using --bundle avoids downloading the changesets |
1761 twice if the incoming is followed by a pull. | |
1761 """ | 1762 """ |
1762 source = ui.expandpath(source) | 1763 source = ui.expandpath(source) |
1763 other = hg.repository(ui, source) | 1764 other = hg.repository(ui, source) |
1764 if not other.local(): | 1765 incoming = repo.findincoming(other) |
1765 raise util.Abort(_("incoming doesn't work for remote repositories yet")) | 1766 if not incoming: |
1766 o = repo.findincoming(other) | |
1767 if not o: | |
1768 return | 1767 return |
1769 o = other.changelog.nodesbetween(o)[0] | 1768 |
1769 cleanup = None | |
1770 if not other.local() or opts["bundle"]: | |
1771 # create an uncompressed bundle | |
1772 if not opts["bundle"]: | |
1773 # create a temporary bundle | |
1774 fd, fname = tempfile.mkstemp(suffix=".hg", | |
1775 prefix="tmp-hg-incoming") | |
1776 f = os.fdopen(fd, "wb") | |
1777 cleanup = fname | |
1778 else: | |
1779 fname = opts["bundle"] | |
1780 f = open(fname, "wb") | |
1781 | |
1782 cg = other.changegroup(incoming, "incoming") | |
1783 write_bundle(cg, fname, compress=other.local(), fh=f) | |
1784 f.close() | |
1785 if not other.local(): | |
1786 # use a bundlerepo | |
1787 other = bundlerepo.bundlerepository(ui, repo.root, fname) | |
1788 | |
1789 o = other.changelog.nodesbetween(incoming)[0] | |
1770 if opts['newest_first']: | 1790 if opts['newest_first']: |
1771 o.reverse() | 1791 o.reverse() |
1772 displayer = show_changeset(ui, other, opts) | 1792 displayer = show_changeset(ui, other, opts) |
1773 for n in o: | 1793 for n in o: |
1774 parents = [p for p in other.changelog.parents(n) if p != nullid] | 1794 parents = [p for p in other.changelog.parents(n) if p != nullid] |
1777 displayer.show(changenode=n) | 1797 displayer.show(changenode=n) |
1778 if opts['patch']: | 1798 if opts['patch']: |
1779 prev = (parents and parents[0]) or nullid | 1799 prev = (parents and parents[0]) or nullid |
1780 dodiff(ui, ui, other, prev, n) | 1800 dodiff(ui, ui, other, prev, n) |
1781 ui.write("\n") | 1801 ui.write("\n") |
1802 | |
1803 if cleanup: | |
1804 os.unlink(cleanup) | |
1782 | 1805 |
1783 def init(ui, dest="."): | 1806 def init(ui, dest="."): |
1784 """create a new repository in the given directory | 1807 """create a new repository in the given directory |
1785 | 1808 |
1786 Initialize a new repository in the given directory. If the given | 1809 Initialize a new repository in the given directory. If the given |
2730 _('hg import [-p NUM] [-b BASE] [-f] PATCH...')), | 2753 _('hg import [-p NUM] [-b BASE] [-f] PATCH...')), |
2731 "incoming|in": (incoming, | 2754 "incoming|in": (incoming, |
2732 [('M', 'no-merges', None, _('do not show merges')), | 2755 [('M', 'no-merges', None, _('do not show merges')), |
2733 ('', 'style', '', _('display using template map file')), | 2756 ('', 'style', '', _('display using template map file')), |
2734 ('n', 'newest-first', None, _('show newest record first')), | 2757 ('n', 'newest-first', None, _('show newest record first')), |
2758 ('', 'bundle', '', _('file to store the bundles into')), | |
2735 ('p', 'patch', None, _('show patch')), | 2759 ('p', 'patch', None, _('show patch')), |
2736 ('', 'template', '', _('display with template'))], | 2760 ('', 'template', '', _('display with template'))], |
2737 _('hg incoming [-p] [-n] [-M] [SOURCE]')), | 2761 _('hg incoming [-p] [-n] [-M] [--bundle FILENAME] [SOURCE]')), |
2738 "^init": (init, [], _('hg init [DEST]')), | 2762 "^init": (init, [], _('hg init [DEST]')), |
2739 "locate": | 2763 "locate": |
2740 (locate, | 2764 (locate, |
2741 [('r', 'rev', '', _('search the repository as it stood at rev')), | 2765 [('r', 'rev', '', _('search the repository as it stood at rev')), |
2742 ('0', 'print0', None, | 2766 ('0', 'print0', None, |