[PATCH stable] subrepo: correctly add newline for git subrepo diffs

Mathias De Maré mathias.demare at gmail.com
Wed Jan 21 20:51:06 UTC 2015


# HG changeset patch
# User Mathias De Maré <mathias.demare at gmail.com>
# Date 1421873247 -3600
#      Mit Jan 21 21:47:27 2015 +0100
# Branch stable
# Node ID ea27188a8b907acac56a71fbe006f6780319836e
# Parent  a43fdf33a6beb697945a3dbb7253f0436ea278a6
subrepo: correctly add newline for git subrepo diffs

Previously, git subrepo diffs did not have a newline at the end.
This caused multiple subrepo diffs to be joined on the same line.
Additionally, the command prompt after the diff still contained
a part of the diff.

diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py
--- a/mercurial/subrepo.py
+++ b/mercurial/subrepo.py
@@ -1648,13 +1648,17 @@ class gitsubrepo(abstractsubrepo):
         if match.anypats():
             return #No support for include/exclude yet
 
+        output = ""
         if match.always():
-            ui.write(self._gitcommand(cmd))
+            output += self._gitcommand(cmd) + '\n'
         elif match.files():
             for f in match.files():
-                ui.write(self._gitcommand(cmd + [f]))
+                output += self._gitcommand(cmd + [f]) + '\n'
         elif match(gitprefix): #Subrepo is matched
-            ui.write(self._gitcommand(cmd))
+            output += self._gitcommand(cmd) + '\n'
+
+        if output.strip():
+            ui.write(output)
 
     @annotatesubrepoerror
     def revert(self, substate, *pats, **opts):
diff --git a/tests/test-subrepo-git.t b/tests/test-subrepo-git.t
--- a/tests/test-subrepo-git.t
+++ b/tests/test-subrepo-git.t
@@ -112,7 +112,7 @@ clone root, make local change
   @@ -1,2 +1,3 @@
    g
    gg
-  +ggg (no-eol)
+  +ggg
   $ hg commit --subrepos -m ggg
   committing subrepository s
   $ hg debugsub
@@ -695,7 +695,7 @@ check differences made by most recent ch
   +woopwoop
   +
   +foo
-  +bar (no-eol)
+  +bar
 
   $ hg commit --subrepos -m "Added foobar"
   committing subrepository s
@@ -717,7 +717,7 @@ check differences made by most recent ch
   +woopwoop
   +
   +foo
-  +bar (no-eol)
+  +bar
 
 check output when only diffing the subrepository
   $ hg diff -c . --subrepos s
@@ -730,7 +730,7 @@ check output when only diffing the subre
   +woopwoop
   +
   +foo
-  +bar (no-eol)
+  +bar
 
 check output when diffing something else
   $ hg diff -c . --subrepos .hgsubstate --nodates
@@ -760,7 +760,7 @@ add new changes, including whitespace
   --- /dev/null
   +++ b/s/barfoo
   @@ -0,0 +1 @@
-  +foo (no-eol)
+  +foo
   $ hg diff --subrepos s/foobar
   diff --git a/s/foobar b/s/foobar
   index 8a5a5e2..bd5812a 100644
@@ -771,7 +771,7 @@ add new changes, including whitespace
   +woop    woop
    
    foo
-   bar (no-eol)
+   bar
 
 execute a diffstat
 the output contains a regex, because git 1.7.10 and 1.7.11
@@ -779,7 +779,7 @@ the output contains a regex, because git
   $ hg diff --subrepos --stat
   \s*barfoo |\s*1 + (re)
   \s*foobar |\s*2 +- (re)
-   2 files changed, 2 insertions\(\+\), 1 deletions?\(-\) \(no-eol\) (re)
+   2 files changed, 2 insertions\(\+\), 1 deletions?\(-\) (re)
 
 ensure adding include/exclude ignores the subrepo
   $ hg diff --subrepos -I s/foobar


More information about the Mercurial-devel mailing list