Re: Why can't I stash submodule changes?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 06.04.2015 um 04:15 schrieb Shane da Silva:
I’m having trouble understanding why I cannot stash changes to a submodule.

When adding a submodule to a repository (`git submodule add
./sub-repo`), I can then run `git stash` and `git stash pop` with
expected results—the submodule disappears and reappears in the working
tree.

Just to be sure: Only the index of the superproject and the .gitmodules
file are updated by stash to either contain the submodule or not. But
the subdirectory "sub-repo" stays unchanged and won't be removed or
reappear, right?

However, when I try stashing an update to a submodule, `git stash`
reports “No local changes to save”. The following shell script
illustrates this behavior:


# Create repo
mkdir test-repo
cd test-repo
git init
git commit --allow-empty -m "Initial commit"

# Create submodule
mkdir sub-repo
cd sub-repo
git init
git commit --allow-empty -m "Initial commit"
cd -

# Add submodule
git submodule add ./sub-repo
git commit -m "Add submodule"

# Modify submodule
cd sub-repo
touch foo
git add foo
git commit -m "Submodule changed"
cd -

# Stash submodule change
git stash # <---------------------------Displays "No local changes to save”

Thanks for providing a recipe to reproduce this!

I’m trying to wrap my head around why this is the current behavior, as
I suspect this is intentional but it seems unexpected. If anyone can
shed any light on this, I would really appreciate it!

The current behavior of git is that submodule contents aren't updated
when the superproject changes. Running "git submodule update" later
will then update their content to most submodule changes (but e.g. it
won't remove a deleted submodule from the work tree). So yes, this is
expected until recursive submodule update materializes (and even then
I'm not sure how to handle untracked but not ignored files inside a
submodule when stashing will result in the submodule directory to be
removed).
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]