Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 4450:8fa54b9c6c5a
accept -r REV in more places
Commands affected:
* update
* merge
* backout
author | Daniel Holth <dholth@fastmail.fm> |
---|---|
date | Thu, 17 May 2007 13:55:24 -0400 |
parents | af8db3b42a4a |
children | 08ae451148b2 c927c568a5ad |
comparison
equal
deleted
inserted
replaced
4449:7eb604da8764 | 4450:8fa54b9c6c5a |
---|---|
180 if not prefix: prefix = os.path.basename(repo.root) + '-%h' | 180 if not prefix: prefix = os.path.basename(repo.root) + '-%h' |
181 prefix = cmdutil.make_filename(repo, prefix, node) | 181 prefix = cmdutil.make_filename(repo, prefix, node) |
182 archival.archive(repo, dest, node, kind, not opts['no_decode'], | 182 archival.archive(repo, dest, node, kind, not opts['no_decode'], |
183 matchfn, prefix) | 183 matchfn, prefix) |
184 | 184 |
185 def backout(ui, repo, rev, **opts): | 185 def backout(ui, repo, node=None, rev=None, **opts): |
186 '''reverse effect of earlier changeset | 186 '''reverse effect of earlier changeset |
187 | 187 |
188 Commit the backed out changes as a new changeset. The new | 188 Commit the backed out changes as a new changeset. The new |
189 changeset is a child of the backed out changeset. | 189 changeset is a child of the backed out changeset. |
190 | 190 |
197 The --merge option remembers the parent of the working directory | 197 The --merge option remembers the parent of the working directory |
198 before starting the backout, then merges the new head with that | 198 before starting the backout, then merges the new head with that |
199 changeset afterwards. This saves you from doing the merge by | 199 changeset afterwards. This saves you from doing the merge by |
200 hand. The result of this merge is not committed, as for a normal | 200 hand. The result of this merge is not committed, as for a normal |
201 merge.''' | 201 merge.''' |
202 if rev and node: | |
203 raise util.Abort(_("please specify just one revision")) | |
204 | |
205 if not rev: | |
206 rev = node | |
202 | 207 |
203 bail_if_changed(repo) | 208 bail_if_changed(repo) |
204 op1, op2 = repo.dirstate.parents() | 209 op1, op2 = repo.dirstate.parents() |
205 if op2 != nullid: | 210 if op2 != nullid: |
206 raise util.Abort(_('outstanding uncommitted merge')) | 211 raise util.Abort(_('outstanding uncommitted merge')) |
1830 ui.write("%40s " % hex(m[f])) | 1835 ui.write("%40s " % hex(m[f])) |
1831 if ui.verbose: | 1836 if ui.verbose: |
1832 ui.write("%3s " % (m.execf(f) and "755" or "644")) | 1837 ui.write("%3s " % (m.execf(f) and "755" or "644")) |
1833 ui.write("%s\n" % f) | 1838 ui.write("%s\n" % f) |
1834 | 1839 |
1835 def merge(ui, repo, node=None, force=None): | 1840 def merge(ui, repo, node=None, force=None, rev=None): |
1836 """merge working directory with another revision | 1841 """merge working directory with another revision |
1837 | 1842 |
1838 Merge the contents of the current working directory and the | 1843 Merge the contents of the current working directory and the |
1839 requested revision. Files that changed between either parent are | 1844 requested revision. Files that changed between either parent are |
1840 marked as changed for the next commit and a commit must be | 1845 marked as changed for the next commit and a commit must be |
1843 If no revision is specified, the working directory's parent is a | 1848 If no revision is specified, the working directory's parent is a |
1844 head revision, and the repository contains exactly one other head, | 1849 head revision, and the repository contains exactly one other head, |
1845 the other head is merged with by default. Otherwise, an explicit | 1850 the other head is merged with by default. Otherwise, an explicit |
1846 revision to merge with must be provided. | 1851 revision to merge with must be provided. |
1847 """ | 1852 """ |
1853 | |
1854 if rev and node: | |
1855 raise util.Abort(_("please specify just one revision")) | |
1856 | |
1857 if not node: | |
1858 node = rev | |
1848 | 1859 |
1849 if not node: | 1860 if not node: |
1850 heads = repo.heads() | 1861 heads = repo.heads() |
1851 if len(heads) > 2: | 1862 if len(heads) > 2: |
1852 raise util.Abort(_('repo has %d heads - ' | 1863 raise util.Abort(_('repo has %d heads - ' |
2556 f = urllib.urlopen(fname) | 2567 f = urllib.urlopen(fname) |
2557 gen = changegroup.readbundle(f, fname) | 2568 gen = changegroup.readbundle(f, fname) |
2558 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname) | 2569 modheads = repo.addchangegroup(gen, 'unbundle', 'bundle:' + fname) |
2559 return postincoming(ui, repo, modheads, opts['update']) | 2570 return postincoming(ui, repo, modheads, opts['update']) |
2560 | 2571 |
2561 def update(ui, repo, node=None, clean=False, date=None): | 2572 def update(ui, repo, node=None, rev=None, clean=False, date=None): |
2562 """update working directory | 2573 """update working directory |
2563 | 2574 |
2564 Update the working directory to the specified revision, or the | 2575 Update the working directory to the specified revision, or the |
2565 tip of the current branch if none is specified. | 2576 tip of the current branch if none is specified. |
2566 | 2577 |
2572 merge command. | 2583 merge command. |
2573 | 2584 |
2574 By default, update will refuse to run if doing so would require | 2585 By default, update will refuse to run if doing so would require |
2575 discarding local changes. | 2586 discarding local changes. |
2576 """ | 2587 """ |
2588 if rev and node: | |
2589 raise util.Abort(_("please specify just one revision")) | |
2590 | |
2591 if not rev: | |
2592 rev = node | |
2593 | |
2577 if date: | 2594 if date: |
2578 if node: | 2595 if rev: |
2579 raise util.Abort(_("you can't specify a revision and a date")) | 2596 raise util.Abort(_("you can't specify a revision and a date")) |
2580 node = cmdutil.finddate(ui, repo, date) | 2597 rev = cmdutil.finddate(ui, repo, date) |
2581 | 2598 |
2582 if clean: | 2599 if clean: |
2583 return hg.clean(repo, node) | 2600 return hg.clean(repo, rev) |
2584 else: | 2601 else: |
2585 return hg.update(repo, node) | 2602 return hg.update(repo, rev) |
2586 | 2603 |
2587 def verify(ui, repo): | 2604 def verify(ui, repo): |
2588 """verify the integrity of the repository | 2605 """verify the integrity of the repository |
2589 | 2606 |
2590 Verify the integrity of the current repository. | 2607 Verify the integrity of the current repository. |
2680 [('', 'merge', None, | 2697 [('', 'merge', None, |
2681 _('merge with old dirstate parent after backout')), | 2698 _('merge with old dirstate parent after backout')), |
2682 ('d', 'date', '', _('record datecode as commit date')), | 2699 ('d', 'date', '', _('record datecode as commit date')), |
2683 ('', 'parent', '', _('parent to choose when backing out merge')), | 2700 ('', 'parent', '', _('parent to choose when backing out merge')), |
2684 ('u', 'user', '', _('record user as committer')), | 2701 ('u', 'user', '', _('record user as committer')), |
2702 ('r', 'rev', '', _('revision to backout')), | |
2685 ] + walkopts + commitopts, | 2703 ] + walkopts + commitopts, |
2686 _('hg backout [OPTION]... REV')), | 2704 _('hg backout [OPTION]... [-r] REV')), |
2687 "branch": (branch, | 2705 "branch": (branch, |
2688 [('f', 'force', None, | 2706 [('f', 'force', None, |
2689 _('set branch name even if it shadows an existing branch'))], | 2707 _('set branch name even if it shadows an existing branch'))], |
2690 _('hg branch [NAME]')), | 2708 _('hg branch [NAME]')), |
2691 "branches": (branches, [], _('hg branches')), | 2709 "branches": (branches, [], _('hg branches')), |
2856 ] + walkopts, | 2874 ] + walkopts, |
2857 _('hg log [OPTION]... [FILE]')), | 2875 _('hg log [OPTION]... [FILE]')), |
2858 "manifest": (manifest, [], _('hg manifest [REV]')), | 2876 "manifest": (manifest, [], _('hg manifest [REV]')), |
2859 "^merge": | 2877 "^merge": |
2860 (merge, | 2878 (merge, |
2861 [('f', 'force', None, _('force a merge with outstanding changes'))], | 2879 [('f', 'force', None, _('force a merge with outstanding changes')), |
2862 _('hg merge [-f] [REV]')), | 2880 ('r', 'rev', '', _('revision to merge')), |
2881 ], | |
2882 _('hg merge [-f] [[-r] REV]')), | |
2863 "outgoing|out": (outgoing, | 2883 "outgoing|out": (outgoing, |
2864 [('M', 'no-merges', None, _('do not show merges')), | 2884 [('M', 'no-merges', None, _('do not show merges')), |
2865 ('f', 'force', None, | 2885 ('f', 'force', None, |
2866 _('run even when remote repository is unrelated')), | 2886 _('run even when remote repository is unrelated')), |
2867 ('p', 'patch', None, _('show patch')), | 2887 ('p', 'patch', None, _('show patch')), |
2988 _('update to new tip if changesets were unbundled'))], | 3008 _('update to new tip if changesets were unbundled'))], |
2989 _('hg unbundle [-u] FILE')), | 3009 _('hg unbundle [-u] FILE')), |
2990 "^update|up|checkout|co": | 3010 "^update|up|checkout|co": |
2991 (update, | 3011 (update, |
2992 [('C', 'clean', None, _('overwrite locally modified files')), | 3012 [('C', 'clean', None, _('overwrite locally modified files')), |
2993 ('d', 'date', '', _('tipmost revision matching date'))], | 3013 ('d', 'date', '', _('tipmost revision matching date')), |
2994 _('hg update [-C] [-d DATE] [REV]')), | 3014 ('r', 'rev', '', _('revision'))], |
3015 _('hg update [-C] [-d DATE] [[-r] REV]')), | |
2995 "verify": (verify, [], _('hg verify')), | 3016 "verify": (verify, [], _('hg verify')), |
2996 "version": (version_, [], _('hg version')), | 3017 "version": (version_, [], _('hg version')), |
2997 } | 3018 } |
2998 | 3019 |
2999 norepo = ("clone init version help debugancestor debugcomplete debugdata" | 3020 norepo = ("clone init version help debugancestor debugcomplete debugdata" |