git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/7] git-submodule: Extract functions module_info and module_url

From
Ping Yin <pkufranky@gmail.com>
Date
Mar 13, 2008, 17:56 UTC
Message-ID
<1205431001-18590-3-git-send-email-pkufranky@gmail.com>
In-Reply-To
<1205431001-18590-2-git-send-email-pkufranky@gmail.com>

module_info is extracted to remove the logic redundance which acquires module names and urls by path filter in several places.

module_url is also extracted to prepare for an alternative logic to get url by module name.

Signed-off-by: Ping Yin <pkufranky@gmail.com>
---
 git-submodule.sh |   40 ++++++++++++++++++++++++++++------------
 1 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/git-submodule.sh b/git-submodule.sh
index 2f40620..7545d1a 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -82,6 +82,25 @@ module_name()
        echo "$name"
 }
 
+module_url() {
+	git config submodule.$1.url
+}
+
+module_info() {
+	git ls-files --stage -- "$@" | grep -e '^160000 ' |
+	while read mode sha1 stage path
+	do
+		name=$(module_name "$path")
+		if test -n "$name"
+		then
+			url=$(module_url "$name")
+			echo "$sha1	$path	$name	$url"
+		else
+			echo "$sha1	$path		"
+		fi
+	done
+}
+
 #
 # Clone a submodule
 #
@@ -232,12 +251,11 @@ cmd_init()
 		shift
 	done
 
-	git ls-files --stage -- "$@" | grep -e '^160000 ' |
-	while read mode sha1 stage path
+	module_info "$@" |
+	while read sha1 path name url
 	do
+		test -n "$name" || exit
 		# Skip already registered paths
-		name=$(module_name "$path") || exit
-		url=$(git config submodule."$name".url)
 		test -z "$url" || continue
 
 		url=$(GIT_CONFIG=.gitmodules git config submodule."$name".url)
@@ -286,11 +304,10 @@ cmd_update()
 		shift
 	done
 
-	git ls-files --stage -- "$@" | grep -e '^160000 ' |
-	while read mode sha1 stage path
+	module_info "$@" |
+	while read sha1 path name url
 	do
-		name=$(module_name "$path") || exit
-		url=$(git config submodule."$name".url)
+		test -n "$name" || exit
 		if test -z "$url"
 		then
 			# Only mention uninitialized submodules when its
@@ -537,11 +554,10 @@ cmd_status()
 		shift
 	done
 
-	git ls-files --stage -- "$@" | grep -e '^160000 ' |
-	while read mode sha1 stage path
+	module_info "$@" |
+	while read sha1 path name url
 	do
-		name=$(module_name "$path") || exit
-		url=$(git config submodule."$name".url)
+		test -n "$name" || exit
 		if test -z "$url" || ! test -d "$path"/.git
 		then
 			say "-$sha1 $path"
-- 
1.5.4.4.653.g7cf1e
Previous: Ping YinNext: Ping Yin
Message 3 of 10 in “git-submodule enhancements”
  1. 0/7 git-submodule enhancementsPing Yin, Mar 13, 2008
  2. 1/7 git-submodule: Avoid 'fatal: cannot describe' messagePing Yin, Mar 13, 2008
  3. 2/7 git-submodule: Extract functions module_info and module_urlPing Yin, Mar 13, 2008
  4. 3/7 git-submodule: Extract absolute_url & move absolute url logic to module_clonePing Yin, Mar 13, 2008
  5. 4/7 git-submodule: Fall back on .gitmodules if info not found in $GIT_DIR/configPing Yin, Mar 13, 2008
  6. 5/7 git-submodule: Extract module_add from cmd_addPing Yin, Mar 13, 2008
  7. 6/7 git-submodule: multi-level module definitionPing Yin, Mar 13, 2008
  8. 7/7 git-submodule: Don't die when command fails for one submodulePing Yin, Mar 13, 2008
  9. Ping YinMar 14, 2008
  10. Ping YinMar 13, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.