Reviewers: ,


Please review this at http://codereview.tryton.org/240001/

Affected files:
  M hgnested/__init__.py


Index: hgnested/__init__.py
===================================================================

--- a/hgnested/__init__.py
+++ b/hgnested/__init__.py
@@ -12,7 +12,7 @@
from mercurial import commands, localrepo, sshrepo, sshserver, httprepo, hgweb
 from mercurial import ui as _ui
 from mercurial import util
-from mercurial import cmdutil
+from mercurial import cmdutil, scmutil
 from mercurial.i18n import _
 from mercurial.hgweb.common import HTTP_OK
 from mercurial.hgweb.protocol import HGTYPE
@@ -167,19 +167,47 @@
             lui = ui.copy()
             lui.readconfig(os.path.join(lpath, '.hg', 'hgrc'))
             nrepo = hg.repository(lui, lpath)
+            if function is nested_diff:
+                kwargs['prefix'] = npath
         if status:
             lui.status('[%s]\n' % npath)
         function(lui, nrepo, *args, **kwargs)
         if status:
             lui.status('\n')

+def nested_diff(ui, repo, *pats, **opts):
+    from mercurial import patch, extensions
+
+    revs = opts.get('rev')
+    change = opts.get('change')
+    stat = opts.get('stat')
+    reverse = opts.get('reverse')
+    prefix = opts.get('prefix') or ''
+
+    if revs and change:
+        msg = _('cannot specify --rev and --change at the same time')
+        raise util.Abort(msg)
+    elif change:
+        node2 = scmutil.revsingle(repo, change, None).node()
+        node1 = repo[node2].p1().node()
+    else:
+        node1, node2 = scmutil.revpair(repo, revs)
+
+    if reverse:
+        node1, node2 = node2, node1
+
+    diffopts = patch.diffopts(ui, opts)
+    m = scmutil.match(repo[node2], pats, opts)
+    cmdutil.diffordiffstat(ui, repo, diffopts, node1, node2, m, stat=stat,
+ prefix=prefix, listsubrepos=opts.get('subrepos'))
+
 def ndiff(ui, repo, *pats, **opts):
     '''diff nested repositories (or selected files)

     Show differences between revisions for the specified files.

     Look at the help of diff command for more informations.'''
-    _nested_apply(ui, repo, commands.diff, False, *pats, **opts)
+    _nested_apply(ui, repo, nested_diff, False, *pats, **opts)

 def nclone(ui, source, dest=None, **opts):
     '''make a copy of an existing repository and all nested repositories



--
[email protected] mailing list

Reply via email to