Updated Home (textile)
[git-submod-enhancements.wiki.git] / Home.textile
1 *Welcome to the git-submod-enhancements wiki!*
2
3 As Dscho put it, submodules are the "neglected ugly duckling" of git. Time to change that ...
4
5 *Issues still to be tackled in this repo:*
6
7 * Teach @git mv@ to not only move the gitlink and the work tree but also update core.worktree and the gitfile
8 * Let @am@, @bisect@, @checkout@, @checkout-index@, @cherry-pick@, @merge@, @pull@, @read-tree@, @rebase@, @reset@ & @stash@ work recursively on submodules (in progress)
9 * 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/)
10 * 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
11 * Teach @grep@ the @--recursive@ option
12 * 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)
13 * Showing that a submodule has a HEAD not on any branch in @git status@
14 * @gitk@: Add popup menu for submodules to see the detailed history of changes
15 * Teach @git prune@ the @--recurse-submodules@ option (and maybe honour the same default and options @git fetch@ uses)
16 * Better support for displaying merge conflicts of submodules
17 * Make the @git submodule@ script run in non top-level directories too
18 * @git gui@: Add submodule menu for adding and fetching submodules
19 * @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.
20 * Other commands that could benefit from a @--recurse-submodules@ option: @archive@, @branch@, @clean@, @commit@, @revert@, @tag@.
21 * 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.
22
23 *Submodule related bugs to fix*
24
25 * @git fetch@ doesn't fetch referenced commits after a submodule rename
26 * Cherry picking across submodule creation fails even if the cherry pick doesn't touch any file in the submodules path
27 * @git submodule add@ doesn't record the URL in .git/config when the submodule path doesn't exist.
28
29 *Issues already solved and merged into Junio's Repo:*
30
31 * Since git 1.6.6:
32 ** New @--submodule@ option to @git diff@ (many thanks to Dscho for writing the core part!)
33 ** Display of submodule summaries instead of plain hashes in @git gui@ and @gitk@
34 * Since git 1.7.0:
35 ** @git status@ and @git diff*@ show submodules with untracked or modified files in their work tree as "dirty"
36 ** @git gui@: New popup menu for submodule diffs
37 * Since git 1.7.1:
38 ** Show the reason why working directories of submodules are dirty (untracked content and/or modified content) in superproject
39 * Since git 1.7.2:
40 ** Add parameters to the @--ignore-submodules@ option for @git diff@ and @git status@ to control when a submodule is considered dirty
41 * Since git 1.7.3:
42 ** 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
43 ** Add a global config option to control when a submodule is considered dirty (written by Dscho)
44 ** Better support for merging of submodules (thanks to Heiko Voigt for writing that)
45 * Since git 1.7.4:
46 ** Recursive fetching of submodules can be enabled via command line option or configuration.
47 * Since git 1.7.5:
48 ** @fetch@ runs recursively on submodules by default when new commits have been recorded for them in the superproject
49 * Since git 1.7.7:
50 ** @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)
51 * Since git 1.7.8:
52 ** The @update@ option learned the value @none@, which disables @submodule init@ and @submodule update@
53 ** 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)
54 * Since git 1.7.11:
55 ** @git rebase --continue@ works if the commit only contains submodule changes.
56 ** @git push@ learned the --recurse-submodules=on-demand option
57 * Since git 1.8.1:
58 ** @git rm@ removes submodules from index and work tree (unless they contain a .git directory)
59 ** @git submodule add@ learned the @--name@ option so the user can choose the name for a submodule (e.g. when its name clashes with that of a submodule which was present at the same path earlier in history but was removed).
60 * Since git 1.8.2:
61 ** Tracked floating submodules are supported in core git through the new @--remote@ option for @git submodule update@ and the new @--branch@ option for @git submodule add@