Submodule-modes: Distinguish between update modes and update targets
[git-submod-enhancements.wiki.git] / Home.textile
index 11178d8370afddbf85e6b25b4019a3b70fd6c907..8882dd002c532210aa295d2701d09b84cbac8257 100644 (file)
@@ -2,49 +2,36 @@
 
 As Dscho put it, submodules are the "neglected ugly duckling" of git. Time to change that ...
 
-*Issues still to be tackled in this repo:*
+*Issues currently being worked on*
 
-* Let @am@, @bisect@, @checkout@, @checkout-index@, @cherry-pick@, @merge@, @pull@, @read-tree@, @rebase@, @reset@ & @stash@ work recursively on submodules (in progress)
+* [[Recursive submodule checkout]]: teach all work tree manipulating commands to update the submodule work trees according to the commit recorded in the superproject.
+* Teach @git fetch@ to also fetch commits for submodule not currently in the work tree into .git/modules/<name>
+
+*Issues still to be tackled*
+
+* Add functionality to move the .git directory of a submodule into the .git/modules directory of the superproject (either by adding a new @git submodule@ command or by providing a script in contrib/)
+* Add a git-config aware merge driver and make it the default for .gitmodules
+* Attempt a 3-way merge when @git mv@, @git rm@ or @git submodule add@ want to change a .gitmodules file which has unstaged changes
+* Add configuration options (global, per repo and per submodule) to set the default of @git push --recurse-submodules@
+* Add a tutorial explaining the different use cases and the configuration settings which suit them.
+* Add an option to @git submodule add@ to move the .git directory of a local repository to be added as submodule into the .git/modules directory of the superproject
 * Teach @grep@ the @--recursive@ option
-* Add means to specify which submodules shall be populated on clone
-* Showing that a submodule has a HEAD not on any branch in @git status@
+* Add means to specify which submodules shall be populated on clone (which I'd like to implement by teaching @git fetch@ to create submodule repos in .git/modules, recursive checkout will then do the rest)
+* Showing that a submodule has a HEAD not on any branch in the @git status@ of the superproject
 * @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.
+* To enable history rewriting @git filter-branch@ could write a list of rewritten commits which can then be used to update submodule commits in a superproject.
+
+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
-* @git submodule add@ doesn't record the URL in .git/config when the submodule path doesn't exist.
-* @git rebase --continue@ won't work if the commit only contains submodule changes.
-
-*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
-* Since git 1.7.7:
-** @git push@ learned the @--recurse-submodules=check@ option, which errors out when trying to push a superproject commit where the submodule changes are not pushed (part of Frederik Gustafsson's 2011 GSoC project)
-* Since git 1.7.8:
-** The @update@ option learned the value @none@, which disables @submodule init@ and @submodule update@
-** The git directory of a newly cloned submodule is stored in the .git directory of the superproject; the submodules work tree contains only a gitfile. This is the first step towards recursive checkout, as it enables us to remove a submodule directory (part of Frederik Gustafsson's 2011 GSoC project)
\ No newline at end of file
+* @git submodule add@ doesn't record the URL in .git/config when the submodule path doesn't exist
+* @git submodule add@ happily stages any unstaged modifications of the .gitmodules file together with the new section while it should error out telling the user to stash them (at least unless it attempts the 3-way merge described in the "Issues still to be tackled" paragraph)
+
+*[[Issues already solved and merged into Junio's Repo|history]]*