Skip to contentSkip to conversation

doc: Correct man page for the SHAs reported by 'submodule status'

PATCH In review Manish Goregaokar via GitGitGadget 3 participants 6 messages Nov 22, 2019 – Nov 23, 2019 Documentation

lore
Share & tools
lore
#0 lore raw

cover doc: Correct man page for the SHAs reported by 'submodule status'

The documentation is currently incorrect, it talks about the checked out SHAs when git submodule status actually reports the superproject's tracked SHAs.

It's possible (but unlikely IMO) that we should change the behavior of the tool to match the documentation. A flag for this behavior may be useful.

Manish Goregaokar (1):
Documentation: Correct man page for the SHAs reported by 'submodule
status'

 Documentation/git-submodule.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

base-commit: 5fa0f5238b0cd46cfe7f6fa76c3f526ea98148d9
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-470%2FManishearth%2Fsubmodule-sha-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-470/Manishearth/submodule-sha-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/470

Signature · 1 line
gitgitgadget
#1 lore raw

PATCH 1/1 Documentation: Correct man page for the SHAs reported by 'submodule status'

From: Manish Goregaokar <[email protected]>

'git submodule status' reports the SHAs expected by the parent project, not the SHAs that are actually checked out in the submodule. Checking out a new SHA in a submodule will not change the output of 'git submodule status' until you 'git add' the submodule.

---
 Documentation/git-submodule.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Documentation/git-submodule.txt +2 -2
index 0ed5c24dc1..31e089454a 100644
@@ -72,8 +72,8 @@ git-submodule will correctly locate the submodule using the relative
 URL in `.gitmodules`.
 
 status [--cached] [--recursive] [--] [<path>...]::
-	Show the status of the submodules. This will print the SHA-1 of the
-	currently checked out commit for each submodule, along with the
+	Show the status of the submodules. This will print the SHA-1
+	recorded in the superproject for each submodule, along with the
 	submodule path and the output of 'git describe' for the
 	SHA-1. Each SHA-1 will possibly be prefixed with `-` if the submodule is
 	not initialized, `+` if the currently checked out submodule commit
Signature · 1 line
gitgitgadget
#2 lore raw

Re: [PATCH 1/1] Documentation: Correct man page for the SHAs reported by 'submodule status'

"Manish Goregaokar via GitGitGadget" <[email protected]>

Quoted 17 lines · writes:

From: Manish Goregaokar <[email protected]>

'git submodule status' reports the SHAs expected by the parent project, not the SHAs that are actually checked out in the submodule. Checking out a new SHA in a submodule will not change the output of 'git submodule status' until you 'git add' the submodule.

---
 Documentation/git-submodule.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Documentation/git-submodule.txt +0 -0
index 0ed5c24dc1..31e089454a 100644

Documentation/git-submodule.txt git-submodule will correctly locate the submodule using the relative · line 77

Quoted 8 lines
Documentation/git-submodule.txt +2 -2
@@ -72,8 +72,8 @@ git-submodule will correctly locate the submodule using the relative
 URL in `.gitmodules`.
 
 status [--cached] [--recursive] [--] [<path>...]::
-	Show the status of the submodules. This will print the SHA-1 of the
-	currently checked out commit for each submodule, along with the
+	Show the status of the submodules. This will print the SHA-1
+	recorded in the superproject for each submodule, along with the
 	submodule path and the output of 'git describe' for the

Am I mistaken to say that neither the old or the new description is correct, depending on the use (or non-use) of the --cached option?

... print the object name of the commit that is currently checked out, or the commit that is recorded in the superproject if --cached option is given, for each submodule, ...

perhaps?

#3 lore raw

Re: [PATCH 1/1] Documentation: Correct man page for the SHAs reported by 'submodule status'

Turns out that I've found a bug! I was getting this behavior because it wasn't detecting that submodules were modified. I'll submit a patch shortly, but first fix this one since the documentation should be fixed regardless.

Thanks,
-Manish Goregaokar

-Manish Goregaokar

Quoted 39 lines · Junio C Hamano

"Manish Goregaokar via GitGitGadget" <[email protected]>

Quoted 17 lines · writes:

From: Manish Goregaokar <[email protected]>

'git submodule status' reports the SHAs expected by the parent project, not the SHAs that are actually checked out in the submodule. Checking out a new SHA in a submodule will not change the output of 'git submodule status' until you 'git add' the submodule.

---
 Documentation/git-submodule.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
Documentation/git-submodule.txt +0 -0
index 0ed5c24dc1..31e089454a 100644

Documentation/git-submodule.txt git-submodule will correctly locate the submodule using the relative · line 77

Quoted 8 lines
Documentation/git-submodule.txt +2 -2
@@ -72,8 +72,8 @@ git-submodule will correctly locate the submodule using the relative
 URL in `.gitmodules`.
 
 status [--cached] [--recursive] [--] [<path>...]::
-     Show the status of the submodules. This will print the SHA-1 of the
-     currently checked out commit for each submodule, along with the
+     Show the status of the submodules. This will print the SHA-1
+     recorded in the superproject for each submodule, along with the
      submodule path and the output of 'git describe' for the

Am I mistaken to say that neither the old or the new description is correct, depending on the use (or non-use) of the --cached option?

... print the object name of the commit that is currently checked out, or the commit that is recorded in the superproject if --cached option is given, for each submodule, ...

perhaps?

#4 lore raw

v2 cover doc: Document 'git submodule status --cached'

In reply to Manish Goregaokar via GitGitGadget

It's currently undocumented, and should be mentioned.

I previously thought that git submodule status was displaying the behaviors of git submodule status --cached and was thus incorrectly documented, but that wasn't actually the case: turns out that git submodule status just doesn't work when not in the root directory.

Manish Goregaokar (1):
doc: Document 'git submodule status --cached'

 Documentation/git-submodule.txt | 3 +++
 1 file changed, 3 insertions(+)

base-commit: 5fa0f5238b0cd46cfe7f6fa76c3f526ea98148d9
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-470%2FManishearth%2Fsubmodule-sha-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-470/Manishearth/submodule-sha-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/470

Range-diff vs v1:

1: 0eabb27ba0 ! 1: 3168924c3c Documentation: Correct man page for the SHAs reported by 'submodule status'
@@ -1,11 +1,9 @@
Author: Manish Goregaokar <[email protected]>

- Documentation: Correct man page for the SHAs reported by 'submodule status'
+ doc: Document 'git submodule status --cached'

- 'git submodule status' reports the SHAs expected by the parent project,
- not the SHAs that are actually checked out in the submodule. Checking
- out a new SHA in a submodule will not change the output of 'git
- submodule status' until you 'git add' the submodule.
+ 'git submodule status --cached' reports the SHAs expected by the parent project,
+ instead of the SHAs that are actually checked out in the submodule.

@@ -13,13 +11,12 @@
--- a/Documentation/git-submodule.txt
+++ b/Documentation/git-submodule.txt
@@
- URL in .gitmodules.
-
- status [--cached] [--recursive] [--] [<path>...]::
-- Show the status of the submodules. This will print the SHA-1 of the
-- currently checked out commit for each submodule, along with the
-+ Show the status of the submodules. This will print the SHA-1
-+ recorded in the superproject for each submodule, along with the
- submodule path and the output of 'git describe' for the
- SHA-1. Each SHA-1 will possibly be prefixed with - if the submodule is
- not initialized, + if the currently checked out submodule commit
+ does not match the SHA-1 found in the index of the containing
+ repository and U if the submodule has merge conflicts.
+ +
++If --cached is specified, this command will instead print the SHA-1 ++recorded in the superproject for each submodule.
+++
+ If --recursive is specified, this command will recurse into nested
+ submodules, and show their status as well.
+ +

Signature · 1 line
gitgitgadget
#5 lore raw

PATCH v2 1/1 doc: Document 'git submodule status --cached'

From: Manish Goregaokar <[email protected]>

'git submodule status --cached' reports the SHAs expected by the parent project, instead of the SHAs that are actually checked out in the submodule.

---
 Documentation/git-submodule.txt | 3 +++
 1 file changed, 3 insertions(+)
Documentation/git-submodule.txt +3 -0
index 0ed5c24dc1..f05c2b92fb 100644
@@ -80,6 +80,9 @@ status [--cached] [--recursive] [--] [<path>...]::
 	does not match the SHA-1 found in the index of the containing
 	repository and `U` if the submodule has merge conflicts.
 +
+If `--cached` is specified, this command will instead print the SHA-1
+recorded in the superproject for each submodule.
++
 If `--recursive` is specified, this command will recurse into nested
 submodules, and show their status as well.
 +
Signature · 1 line
gitgitgadget