7 |
7 |
8 from node import hex, nullid, nullrev, short |
8 from node import hex, nullid, nullrev, short |
9 from repo import RepoError, NoCapability |
9 from repo import RepoError, NoCapability |
10 from i18n import _, gettext |
10 from i18n import _, gettext |
11 import os, re, sys |
11 import os, re, sys |
12 import hg, util, revlog, bundlerepo, extensions, copies |
12 import hg, util, revlog, bundlerepo, extensions, copies, context |
13 import difflib, patch, time, help, mdiff, tempfile, url |
13 import difflib, patch, time, help, mdiff, tempfile, url |
14 import version |
14 import version |
15 import archival, changegroup, cmdutil, hgweb.server, sshserver, hbisect |
15 import archival, changegroup, cmdutil, hgweb.server, sshserver, hbisect |
16 import merge as merge_ |
16 import merge as merge_ |
17 |
17 |
286 displayer = cmdutil.show_changeset(ui, repo, {}) |
286 displayer = cmdutil.show_changeset(ui, repo, {}) |
287 transition = (good and "good" or "bad") |
287 transition = (good and "good" or "bad") |
288 if len(nodes) == 1: |
288 if len(nodes) == 1: |
289 # narrowed it down to a single revision |
289 # narrowed it down to a single revision |
290 ui.write(_("The first %s revision is:\n") % transition) |
290 ui.write(_("The first %s revision is:\n") % transition) |
291 displayer.show(changenode=nodes[0]) |
291 displayer.show(repo[nodes[0]]) |
292 else: |
292 else: |
293 # multiple possible revisions |
293 # multiple possible revisions |
294 ui.write(_("Due to skipped revisions, the first " |
294 ui.write(_("Due to skipped revisions, the first " |
295 "%s revision could be any of:\n") % transition) |
295 "%s revision could be any of:\n") % transition) |
296 for n in nodes: |
296 for n in nodes: |
297 displayer.show(changenode=n) |
297 displayer.show(repo[n]) |
298 |
298 |
299 def check_state(state, interactive=True): |
299 def check_state(state, interactive=True): |
300 if not state['good'] or not state['bad']: |
300 if not state['good'] or not state['bad']: |
301 if (good or bad or skip or reset) and interactive: |
301 if (good or bad or skip or reset) and interactive: |
302 return |
302 return |
1268 heads.extend(bheads) |
1268 heads.extend(bheads) |
1269 if not heads: |
1269 if not heads: |
1270 return 1 |
1270 return 1 |
1271 displayer = cmdutil.show_changeset(ui, repo, opts) |
1271 displayer = cmdutil.show_changeset(ui, repo, opts) |
1272 for n in heads: |
1272 for n in heads: |
1273 displayer.show(changenode=n) |
1273 displayer.show(repo[n]) |
1274 |
1274 |
1275 def help_(ui, name=None, with_version=False): |
1275 def help_(ui, name=None, with_version=False): |
1276 """show help for a given topic or a help overview |
1276 """show help for a given topic or a help overview |
1277 |
1277 |
1278 With no arguments, print a list of commands and short help. |
1278 With no arguments, print a list of commands and short help. |
1865 only_branches = opts.get('only_branch') |
1865 only_branches = opts.get('only_branch') |
1866 |
1866 |
1867 displayer = cmdutil.show_changeset(ui, repo, opts, True, matchfn) |
1867 displayer = cmdutil.show_changeset(ui, repo, opts, True, matchfn) |
1868 for st, rev, fns in changeiter: |
1868 for st, rev, fns in changeiter: |
1869 if st == 'add': |
1869 if st == 'add': |
1870 changenode = repo.changelog.node(rev) |
|
1871 parents = [p for p in repo.changelog.parentrevs(rev) |
1870 parents = [p for p in repo.changelog.parentrevs(rev) |
1872 if p != nullrev] |
1871 if p != nullrev] |
1873 if opts.get('no_merges') and len(parents) == 2: |
1872 if opts.get('no_merges') and len(parents) == 2: |
1874 continue |
1873 continue |
1875 if opts.get('only_merges') and len(parents) != 2: |
1874 if opts.get('only_merges') and len(parents) != 2: |
1911 if opts.get('copies') and rev: |
1910 if opts.get('copies') and rev: |
1912 for fn in get(rev)[3]: |
1911 for fn in get(rev)[3]: |
1913 rename = getrenamed(fn, rev) |
1912 rename = getrenamed(fn, rev) |
1914 if rename: |
1913 if rename: |
1915 copies.append((fn, rename[0])) |
1914 copies.append((fn, rename[0])) |
1916 displayer.show(rev, changenode, copies=copies) |
1915 displayer.show(context.changectx(repo, rev), copies=copies) |
1917 elif st == 'iter': |
1916 elif st == 'iter': |
1918 if count == limit: break |
1917 if count == limit: break |
1919 if displayer.flush(rev): |
1918 if displayer.flush(rev): |
1920 count += 1 |
1919 count += 1 |
1921 |
1920 |
2024 break |
2023 break |
2025 parents = [p for p in repo.changelog.parents(n) if p != nullid] |
2024 parents = [p for p in repo.changelog.parents(n) if p != nullid] |
2026 if opts.get('no_merges') and len(parents) == 2: |
2025 if opts.get('no_merges') and len(parents) == 2: |
2027 continue |
2026 continue |
2028 count += 1 |
2027 count += 1 |
2029 displayer.show(changenode=n) |
2028 displayer.show(repo[n]) |
2030 |
2029 |
2031 def parents(ui, repo, file_=None, **opts): |
2030 def parents(ui, repo, file_=None, **opts): |
2032 """show the parents of the working dir or revision |
2031 """show the parents of the working dir or revision |
2033 |
2032 |
2034 Print the working directory's parent revisions. If a |
2033 Print the working directory's parent revisions. If a |
2064 p = [cp.node() for cp in ctx.parents()] |
2063 p = [cp.node() for cp in ctx.parents()] |
2065 |
2064 |
2066 displayer = cmdutil.show_changeset(ui, repo, opts) |
2065 displayer = cmdutil.show_changeset(ui, repo, opts) |
2067 for n in p: |
2066 for n in p: |
2068 if n != nullid: |
2067 if n != nullid: |
2069 displayer.show(changenode=n) |
2068 displayer.show(repo[n]) |
2070 |
2069 |
2071 def paths(ui, repo, search=None): |
2070 def paths(ui, repo, search=None): |
2072 """show definition of symbolic path names |
2071 """show definition of symbolic path names |
2073 |
2072 |
2074 Show definition of symbolic path name NAME. If no name is given, show |
2073 Show definition of symbolic path name NAME. If no name is given, show |
2840 If you have just made a commit, that commit will be the tip. If |
2839 If you have just made a commit, that commit will be the tip. If |
2841 you have just pulled changes from another repository, the tip of |
2840 you have just pulled changes from another repository, the tip of |
2842 that repository becomes the current tip. The "tip" tag is special |
2841 that repository becomes the current tip. The "tip" tag is special |
2843 and cannot be renamed or assigned to a different changeset. |
2842 and cannot be renamed or assigned to a different changeset. |
2844 """ |
2843 """ |
2845 cmdutil.show_changeset(ui, repo, opts).show(len(repo) - 1) |
2844 cmdutil.show_changeset(ui, repo, opts).show(repo[len(repo) - 1]) |
2846 |
2845 |
2847 def unbundle(ui, repo, fname1, *fnames, **opts): |
2846 def unbundle(ui, repo, fname1, *fnames, **opts): |
2848 """apply one or more changegroup files |
2847 """apply one or more changegroup files |
2849 |
2848 |
2850 Apply one or more compressed changegroup files generated by the |
2849 Apply one or more compressed changegroup files generated by the |