*Welcome to the git-submod-enhancements wiki!* As Dscho put it, submodules are the "neglected ugly duckling" of git. Time to change that ... *Issues still to be tackled in this repo:* * Let am, checkout, checkout-index, cherry-pick, merge, pull, read-tree, rebase, reset & stash work recursively on submodules (in progress) * Teach grep the --recursive option (in progress thanks to Chris Packham) * Add means to specify which submodules shall be populated on clone * Move the submodules git directories into the superproject's .git so that submodules can be created and deleted (part of the 2011 GSoC project) * Check before a push in the superproject that all submodules HEADs are pushed (part of the 2011 GSoC project) * Showing that a submodule has a HEAD not on any branch in "git status" (part of the 2011 GSoC project) * gitk: Add popup menu for submodules to see the detailed history of changes * Teach "git prune" the "--recurse-submodules" option (and maybe honour the same default and options "git fetch" uses) * Better support for displaying merge conflicts of submodules * git gui: Add submodule menu for adding and fetching submodules * git status should call "git diff --submodule --ignore-submodules=dirty" instead of "git submodule summary" for providing a submodule summary when configured to do so. * Add an "always-tip" mode * Other commands that could benefit from a "--recurse-submodules" option: archive, branch, clean, commit, revert, tag. * In the long run git-submodule.sh should be converted to a rather simple wrapper script around core git functionality as more and more of that is implemented in the git core. *Submodule related bugs to fix* * Cherry picking across submodule creation fails even if the cherry pick doesn't touch any file in the submodules path *Issues already solved and merged into Junio's Repo:* * Since git 1.6.6: ** New --submodule option to "git diff" (many thanks to Dscho for writing the core part!) ** Display of submodule summaries instead of plain hashes in git gui and gitk * Since git 1.7.0: ** "git status" and "git diff*" show submodules with untracked or modified files in their work tree as "dirty" ** git gui: New popup menu for submodule diffs * Since git 1.7.1: ** Show the reason why working directories of submodules are dirty (untracked content and/or modified content) in superproject * Since git 1.7.2: ** Add parameters to the "--ignore-submodules" option for "git diff" and "git status" to control when a submodule is considered dirty * Since git 1.7.3: ** Add the "ignore" config option for the default behaviour of "git diff" and "git status". Both .git/config and .gitmodules are parsed for this option, the value set in .git/config. will override that from .gitmodules ** Add a global config option to control when a submodule is considered dirty (written by Dscho) ** Better support for merging of submodules (thanks to Heiko Voigt for writing that) * Since git 1.7.4: ** Recursive fetching of submodules can be enabled via command line option or configuration. * Since git 1.7.5: ** fetch runs recursively on submodules by default when new commits have been recorded for them in the superproject