# HG changeset patch # User Alecs King # Date 1120508144 28800 # Node ID 9cd7454372697b3b6ece321bff43ea66b6fed502 # Parent 48c3eb2bf844a7e30b98b303e7477c7177da18ca On Sat, Jul 02, 2005 at 02:11:34PM -0700, Matt Mackall wrote: # HG changeset patch # User Alecs King On Sat, Jul 02, 2005 at 02:11:34PM -0700, Matt Mackall wrote: > On Sun, Jul 03, 2005 at 12:49:27AM +0800, Alecs King wrote: > > Hg is really very nice. The only feature i miss from git is the > > whatchanged -p, which shows a diff along with a changeset. > > python before, i just dig into the mercurial/commands.py a while and > > see what diff(), dodiff(), export(), show_changeset(), log() would > > normally do. There might be one thing or two missed or wrong. But here > > it is: a '-d' option to 'hg log' showing the diff info. You can use 'hg > > log -d' to show the whole history with the diff or 'hg log -d ' to > > show that info of a particular file. And also works with the '-r' > > option. > > Let's use -p. We're going to be combining the global and per command > switch namespace shortly and the global -p will disappear. Okay. '-d' changed to '-p'. Just like 'whatchanged -p', now we have 'hg log -p'. > Also, the argument list for show_changeset is getting a bit unwieldy. This time i remain show_changeset untouched at all. Only changed some bits of log(). diff -r 48c3eb2bf844 -r 9cd745437269 doc/hg.1.txt --- a/doc/hg.1.txt Mon Jul 04 11:20:20 2005 -0800 +++ b/doc/hg.1.txt Mon Jul 04 12:15:44 2005 -0800 @@ -183,7 +183,7 @@ init:: Initialize a new repository in the current directory. -log [-r revision ...] [file]:: +log [-r revision ...] [-p] [file]:: Print the revision history of the specified file or the entire project. By default this command outputs: changeset id and hash, tags, @@ -191,10 +191,13 @@ -v switch adds some more detail, such as changed files, manifest hashes or message signatures. - When a revision argument is given, only this file or changelog revision - is displayed. With two revision arguments all revisions in this range - are listed. Additional revision arguments may be given repeating the above - cycle. + options: + -r, --rev , ... When a revision argument is given, only this file or + changelog revision is displayed. With two revision + arguments all revisions in this range are listed. + Additional revision arguments may be given repeating + the above cycle. + -p, --patch show patch aliases: history diff -r 48c3eb2bf844 -r 9cd745437269 mercurial/commands.py --- a/mercurial/commands.py Mon Jul 04 11:20:20 2005 -0800 +++ b/mercurial/commands.py Mon Jul 04 12:15:44 2005 -0800 @@ -635,10 +635,12 @@ def log(ui, repo, f=None, **opts): """show the revision history of the repository or a single file""" if f: - filelog = repo.file(relpath(repo, [f])[0]) + files = relpath(repo, [f]) + filelog = repo.file(files[0]) log = filelog lookup = filelog.lookup else: + files = None filelog = None log = repo.changelog lookup = repo.lookup @@ -655,6 +657,15 @@ for i in revlist or range(log.count() - 1, -1, -1): show_changeset(ui, repo, filelog=filelog, rev=i) + if opts['patch']: + if filelog: + filenode = filelog.node(i) + i = filelog.linkrev(filenode) + changenode = repo.changelog.node(i) + prev, other = repo.changelog.parents(changenode) + dodiff(sys.stdout, ui, repo, files, prev, changenode) + ui.write("\n") + ui.write("\n") def manifest(ui, repo, rev = []): """output the latest or given revision of the project manifest""" @@ -977,8 +988,9 @@ "hg import [options] "), "^init": (init, [], 'hg init'), "^log|history": (log, - [('r', 'rev', [], 'revision')], - 'hg log [-r A] [-r B] [file]'), + [('r', 'rev', [], 'revision'), + ('p', 'patch', None, 'show patch')], + 'hg log [-r A] [-r B] [-p] [file]'), "manifest": (manifest, [], 'hg manifest [rev]'), "parents": (parents, [], 'hg parents [node]'), "^pull": (pull,