Re: [GSoC][PATCH v5 1/3] submodule: fix buggy $path and $sm_path variable's value
From: Ramsay Jones <hidden>
Date: 2017-05-26 16:31:14
On 26/05/17 16:17, Prathamesh Chavan wrote:
quoted hunk ↗ jump to hunk
According to the documentation about git-submodule foreach subcommand's $path variable: $path is the name of the submodule directory relative to the superproject But it was observed when the value of the $path value deviates from this for the nested submodules when the <command> is run from a subdirectory. This patch aims for its correction. Mentored-by: Christian Couder [off-list ref] Mentored-by: Stefan Beller [off-list ref] Signed-off-by: Prathamesh Chavan <redacted> --- This series of patch is based on gitster/jk/bug-to-abort for untilizing its BUG() macro. The observation made was as follows: For a project - super containing dir (not a submodule) and a submodule sub which contains another submodule subsub. When we run a command from super/dir: git submodule foreach "echo \$path-\$sm_path" actual results: Entering '../sub' ../sub-../sub Entering '../sub/subsub' ../subsub-../subsub expected result wrt documentation and current test suite: Entering '../sub' sub-../sub Entering '../sub/subsub' subsub-../sub/subsub This make the value of $path confusing and I also feel it deviates from its documentation: $path is the name of the submodule directory relative to the superproject. Hence, this patch corrects the value assigned to the $path and $sm_path. git-submodule.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)diff --git a/git-submodule.sh b/git-submodule.sh index c0d0e9a4c..ea6f56337 100755 --- a/git-submodule.sh +++ b/git-submodule.sh@@ -344,9 +344,9 @@ cmd_foreach() prefix="$prefix$sm_path/" sanitize_submodule_env cd "$sm_path" && - sm_path=$(git submodule--helper relative-path "$sm_path" "$wt_prefix") && # we make $path available to scripts ... path=$sm_path && + sm_path=$displaypath && if test $# -eq 1 then eval "$1"
Hmm, I'm not sure which documentation you are referring to, but if $path != $sm_path then something is wrong. (unless their definition has changed, of course). commit 091a6eb0fe may have muddied the water a little by using $sm_path in the test in t7407, since (as far as I know) $path is the user-facing variable (NOT $sm_path). ATB, Ramsay Jones