On Sat, Jul 02, 2005 at 02:11:34PM -0700, Matt Mackall wrote:
authorAlecs King <alecsk@gmail.com>
Mon, 04 Jul 2005 12:15:44 -0800
changeset 612 9cd745437269
parent 611 48c3eb2bf844
child 613 5374955ec5b1
On Sat, Jul 02, 2005 at 02:11:34PM -0700, Matt Mackall wrote: # HG changeset patch # User Alecs King <alecsk@gmail.com> 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 <file>' 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().
doc/hg.1.txt
mercurial/commands.py
--- 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 <A>, ...  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
 
--- 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] <patches>"),
     "^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,