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.
--- a/mercurial/subrepo.py Thu Jan 22 00:10:26 2015 +0900
+++ b/mercurial/subrepo.py Wed Jan 21 21:47:27 2015 +0100
@@ -1648,13 +1648,17 @@
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):
--- a/tests/test-subrepo-git.t Thu Jan 22 00:10:26 2015 +0900
+++ b/tests/test-subrepo-git.t Wed Jan 21 21:47:27 2015 +0100
@@ -112,7 +112,7 @@
@@ -1,2 +1,3 @@
g
gg
- +ggg (no-eol)
+ +ggg
$ hg commit --subrepos -m ggg
committing subrepository s
$ hg debugsub
@@ -695,7 +695,7 @@
+woopwoop
+
+foo
- +bar (no-eol)
+ +bar
$ hg commit --subrepos -m "Added foobar"
committing subrepository s
@@ -717,7 +717,7 @@
+woopwoop
+
+foo
- +bar (no-eol)
+ +bar
check output when only diffing the subrepository
$ hg diff -c . --subrepos s
@@ -730,7 +730,7 @@
+woopwoop
+
+foo
- +bar (no-eol)
+ +bar
check output when diffing something else
$ hg diff -c . --subrepos .hgsubstate --nodates
@@ -760,7 +760,7 @@
--- /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 @@
+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 @@
$ 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