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