Presently, uninitialized submodules are materialized in the working tree as 
empty directories.  We would like to consider having them be symlinks.  
Specifically, we'd like them to be symlinks into a FUSE filesystem which 
retrieves files on demand.

We've actually already got a FUSE filesystem written, but we use a different 
(semi-manual) means to connect it to the initialized submodules.  We hope to 
release this FUSE filesystem as free software at some point soon, but we do not 
yet have a fixed schedule for doing so.  Having to run a command to create the 
symlink-based "union" filesystem is not optimal (since we have to re-run it 
every time we initialize or deinitialize a submodule).

But if the uninitialized submodules could be symlinks into the FUSE filesystem, 
we wouldn't have this problem.  This solution isn't necessarily FUSE-specific 
-- perhaps someone would want copies of the same submodule in multiple repos, 
and would want to save disk space by having all copies point to the same place. 
 So the symlinks would be configured by a per-submodule config variable.

Naturally, this would require some changes to code that examines the working 
tree -- git status, git diff, etc.  They would have to report "unchanged" for 
submodules which were still symlinks to the configured location.  I have not 
yet looked at the implementation details beyond this.

Does this idea make any sense?  If I were to implement it (probably in a few 
months, but no official timeline yet), would patches be considered?

Reply via email to