Bug with Git submodules and submodule.recurse setting

5 messages, 3 authors, 2018-08-15 · open the first message on its own page

Bug with Git submodules and submodule.recurse setting

From: Jochen Kühner <hidden>
Date: 2018-08-14 17:54:04

If I set 



 

git config --global submodule.recurse true





and run git via:



 

git pull --progress -v --no-rebase "origin"





The command will fail with following output (Errorlevel is 1)

 



Fetching submodule submodules/tstemplates



From http://10.0.102.194:7990/scm/mcc/tstemplates



= [up to date]      feature/robin -> origin/feature/robin



= [up to date]      master        -> origin/master



Already up to date.



usage: git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]



   or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]



   or: git submodule [--quiet] init [--] [<path>...]



   or: git submodule [--quiet] deinit [-f|--force] (--all| [--] <path>...)



   or: git submodule [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--] [<path>...]



   or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]



   or: git submodule [--quiet] foreach [--recursive] <command>



   or: git submodule [--quiet] sync [--recursive] [--] [<path>...]



   or: git submodule [--quiet] absorbgitdirs [--] [<path>...]



 



seams that the “verbose” parameter “-v” is also sent to “git submodules” wich does not support it.



 



If I remove “-v” it will work.



 



Problem is, I use TortoiseGit, wich will automatically create this command!



 








[PATCH] git-submodule.sh: accept verbose flag in cmd_update to be non-quiet

From: Stefan Beller <hidden>
Date: 2018-08-14 18:22:11

In a56771a668d (builtin/pull: respect verbosity settings in submodules,
2018-01-25), we made sure to pass on both quiet and verbose flag from
builtin/pull.c to the submodule shell script. However git-submodule doesn't
understand a verbose flag, which results in a bug when invoking

  git pull --recurse-submodules -v [...]

There are a few different approaches to fix this bug:

1) rewrite 'argv_push_verbosity' or its caller in builtin/pull.c to
   cap opt_verbosity at 0. Then 'argv_push_verbosity' would only add
   '-q' if any.

2) Have a flag in 'argv_push_verbosity' that specifies if we allow adding
  -q or -v (or both).

3) Add -v to git-submodule.sh and make it a no-op

(1) seems like a maintenance burden: What if we add code after
the submodule operations or move submodule operations higher up,
then we have altered the opt_verbosity setting further down the line
in builtin/pull.c.

(2) seems like it could work reasonably well without more regressions

(3) seems easiest to implement as well as actually is a feature with the
    last-one-wins rule of passing flags to Git commands.

Signed-off-by: Stefan Beller <redacted>
---

On Tue, Aug 14, 2018 at 10:54 AM Jochen Kühner [off-list ref] wrote:
If I set 
git config --global submodule.recurse true
and run git via:
git pull --progress -v --no-rebase "origin"
The command will fail with following output (Errorlevel is 1)
Fetching submodule submodules/tstemplates
From http://10.0.102.194:7990/scm/mcc/tstemplates
= [up to date]      feature/robin -> origin/feature/robin
= [up to date]      master        -> origin/master
Already up to date.
usage: git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]
   or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]
   or: git submodule [--quiet] init [--] [<path>...]
   or: git submodule [--quiet] deinit [-f|--force] (--all| [--] <path>...)
   or: git submodule [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--] [<path>...]
   or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]
   or: git submodule [--quiet] foreach [--recursive] <command>
   or: git submodule [--quiet] sync [--recursive] [--] [<path>...]
   or: git submodule [--quiet] absorbgitdirs [--] [<path>...]

seams that the “verbose” parameter “-v” is also sent to “git submodules” wich does not support it.

If I remove “-v” it will work.

Problem is, I use TortoiseGit, wich will automatically create this command!
 git-submodule.sh | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/git-submodule.sh b/git-submodule.sh
index 8b5ad59bdee..f7fd80345cd 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -438,6 +438,9 @@ cmd_update()
 		-q|--quiet)
 			GIT_QUIET=1
 			;;
+		-v)
+			GIT_QUIET=0
+			;;
 		--progress)
 			progress=1
 			;;
-- 
2.18.0.265.g16de1b435c9.dirty

Re: [PATCH] git-submodule.sh: accept verbose flag in cmd_update to be non-quiet

From: Jonathan Nieder <hidden>
Date: 2018-08-14 18:28:12

Stefan Beller wrote:
quoted hunk
 git-submodule.sh | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/git-submodule.sh b/git-submodule.sh
index 8b5ad59bdee..f7fd80345cd 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -438,6 +438,9 @@ cmd_update()
 		-q|--quiet)
 			GIT_QUIET=1
 			;;
+		-v)
+			GIT_QUIET=0
+			;;
Reviewed-by: Jonathan Nieder <redacted>

Thanks.

Aw: [PATCH] git-submodule.sh: accept verbose flag in cmd_update to be non-quiet

From: Jochen Kühner <hidden>
Date: 2018-08-15 06:27:54

 

We use git for windows, there I cannot fin the git-submodule.sh! How can I fix it there?
 

Gesendet: Dienstag, 14. August 2018 um 20:22 Uhr
Von: "Stefan Beller" [off-list ref]
An: jochen.kuehner@gmx.de
Cc: git@vger.kernel.org, "Stefan Beller" <redacted>
Betreff: [PATCH] git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
In a56771a668d (builtin/pull: respect verbosity settings in submodules,
2018-01-25), we made sure to pass on both quiet and verbose flag from
builtin/pull.c to the submodule shell script. However git-submodule doesn't
understand a verbose flag, which results in a bug when invoking

git pull --recurse-submodules -v [...]

There are a few different approaches to fix this bug:

1) rewrite 'argv_push_verbosity' or its caller in builtin/pull.c to
cap opt_verbosity at 0. Then 'argv_push_verbosity' would only add
'-q' if any.

2) Have a flag in 'argv_push_verbosity' that specifies if we allow adding
-q or -v (or both).

3) Add -v to git-submodule.sh and make it a no-op

(1) seems like a maintenance burden: What if we add code after
the submodule operations or move submodule operations higher up,
then we have altered the opt_verbosity setting further down the line
in builtin/pull.c.

(2) seems like it could work reasonably well without more regressions

(3) seems easiest to implement as well as actually is a feature with the
last-one-wins rule of passing flags to Git commands.

Signed-off-by: Stefan Beller <redacted>
---

On Tue, Aug 14, 2018 at 10:54 AM Jochen Kühner [off-list ref] wrote:
If I set
git config --global submodule.recurse true
and run git via:
git pull --progress -v --no-rebase "origin"
The command will fail with following output (Errorlevel is 1)
Fetching submodule submodules/tstemplates
From http://10.0.102.194:7990/scm/mcc/tstemplates
= [up to date] feature/robin -> origin/feature/robin
= [up to date] master -> origin/master
Already up to date.
usage: git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]
or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]
or: git submodule [--quiet] init [--] [<path>...]
or: git submodule [--quiet] deinit [-f|--force] (--all| [--] <path>...)
or: git submodule [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--] [<path>...]
or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]
or: git submodule [--quiet] foreach [--recursive] <command>
or: git submodule [--quiet] sync [--recursive] [--] [<path>...]
or: git submodule [--quiet] absorbgitdirs [--] [<path>...]

seams that the “verbose” parameter “-v” is also sent to “git submodules” wich does not support it.

If I remove “-v” it will work.

Problem is, I use TortoiseGit, wich will automatically create this command!
git-submodule.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/git-submodule.sh b/git-submodule.sh
index 8b5ad59bdee..f7fd80345cd 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -438,6 +438,9 @@ cmd_update()
-q|--quiet)
GIT_QUIET=1
;;
+ -v)
+ GIT_QUIET=0
+ ;;
--progress)
progress=1
;;
--
2.18.0.265.g16de1b435c9.dirty
 

Re: [PATCH] git-submodule.sh: accept verbose flag in cmd_update to be non-quiet

From: Stefan Beller <hidden>
Date: 2018-08-15 22:52:55

On Tue, Aug 14, 2018 at 11:27 PM "Jochen Kühner" [off-list ref] wrote:



We use git for windows, there I cannot fin the git-submodule.sh! How can I fix it there?
It probably doesn't have the .sh extension. I don't know where all git
executables are located in GfW.

Maybe "dir /s git.exe" can give you a starting point to look for the
executables of Git.
(courtesy stackoverflow, I am no expert on Windows)

As git-submodule is a shell script and doesn't need compilation, you
can just edit
this in to see if it fixes the problem; mind to use a text editor that
doesn't put CRLF,
but LF line endings only in that file ... shell script is not the most portable.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help