# [PATCH] git-submodule fixes for call to git config --get-regexp

3 messages from 2007-07-20 to 2007-07-20. Participants: Chris Larson, Junio C Hamano, Johannes Schindelin.
Thread: https://gitlist.dev/t/9120

## Chris Larson, 2007-07-20 17:23

Subject: [PATCH] git-submodule fixes for call to git config --get-regexp
Message-ID: <b6ebd0a50707201023h12ed3c61v31ccb2b356c1ee42@mail.gmail.com>
URL: https://gitlist.dev/e/b6ebd0a50707201023h12ed3c61v31ccb2b356c1ee42%40mail.gmail.com

```
Two minor git-submodule fixes:
* Escape !'s in the git config --get-regexp, so submodule paths can
contain them.
* Be more explicit about the value regex, otherwise things get confused if one
  submodule name is a prefix of another (since --get-regexp can return
  multiple values).

Signed-off-by: Chris Larson <clarson@kergoth.com>

--- git-submodule.sh.old	2007-07-20 10:13:22.578125000 -0700
+++ git-submodule.sh	2007-07-20 10:14:56.281250000 -0700
@@ -46,7 +46,8 @@ get_repo_base() {
 #
 module_name()
 {
-       name=$(GIT_CONFIG=.gitmodules git config --get-regexp
'^submodule\..*\.path$' "$1" |
+       path=$(echo "$1" | sed -e 's/\!/\\!/g')
+       name=$(GIT_CONFIG=.gitmodules git config --get-regexp
'^submodule\..*\.path$' "^$path$" |
        sed -nre 's/^submodule\.(.+)\.path .+$/\1/p')
        test -z "$name" &&
        die "No submodule mapping found in .gitmodules for path '$path'"

-- 
Chris Larson - clarson at kergoth dot com
Dedicated Engineer - MontaVista - clarson at mvista dot com
Core Developer/Architect - TSLib, BitBake, OpenEmbedded, OpenZaurus

```

## Junio C Hamano, 2007-07-20 18:07

Subject: Re: [PATCH] git-submodule fixes for call to git config --get-regexp
Message-ID: <7vsl7jvthk.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vsl7jvthk.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <b6ebd0a50707201023h12ed3c61v31ccb2b356c1ee42@mail.gmail.com>

```
"Chris Larson" <clarson@kergoth.com> writes:

> Two minor git-submodule fixes:
> * Escape !'s in the git config --get-regexp, so submodule paths can
> contain them.

> --- git-submodule.sh.old	2007-07-20 10:13:22.578125000 -0700
> +++ git-submodule.sh	2007-07-20 10:14:56.281250000 -0700
> @@ -46,7 +46,8 @@ get_repo_base() {
> #
> module_name()
> {
> -       name=$(GIT_CONFIG=.gitmodules git config --get-regexp
> '^submodule\..*\.path$' "$1" |
> +       path=$(echo "$1" | sed -e 's/\!/\\!/g')

My first reaction was if it shouldn't be done for only the '!'
at the very beginning, to defeat "do_not_match" logic, but it
would not hurt if we have extra "\!" in the middle.

Once you introduce that sed to munge the path string, I suspect
you would also want and can afford to quote extended regular
expression metacharacters as well.

> +       name=$(GIT_CONFIG=.gitmodules git config --get-regexp
> '^submodule\..*\.path$' "^$path$" |
>        sed -nre 's/^submodule\.(.+)\.path .+$/\1/p')
>        test -z "$name" &&
>        die "No submodule mapping found in .gitmodules for path '$path'"
>
> -- 
> Chris Larson - clarson at kergoth dot com
> Dedicated Engineer - MontaVista - clarson at mvista dot com
> Core Developer/Architect - TSLib, BitBake, OpenEmbedded, OpenZaurus

```

## Johannes Schindelin, 2007-07-20 18:36

Subject: Re: [PATCH] git-submodule fixes for call to git config --get-regexp
Message-ID: <Pine.LNX.4.64.0707201933360.14781@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0707201933360.14781%40racer.site
In-Reply-To: <7vsl7jvthk.fsf@assigned-by-dhcp.cox.net>

```
Hi,

On Fri, 20 Jul 2007, Junio C Hamano wrote:

> "Chris Larson" <clarson@kergoth.com> writes:
> 
> > +       name=$(GIT_CONFIG=.gitmodules git config --get-regexp
> > '^submodule\..*\.path$' "^$path$" |
> >        sed -nre 's/^submodule\.(.+)\.path .+$/\1/p')

I wonder why it is a regular expression to begin with, since we seem to 
prefer shell patterns on paths.

However, _if_ we already go with regexps, why not just put it into the 
"sed" call, which is _already_ there, and leave "git config" alone?  IOW 
call

	git config --get-regexp '^submodule\..*\.path$' |
		sed -nre 's/^submodule\.(.*$path.*)\.path .+$\1/p'

Hmm?

Ciao,
Dscho

```
