Thread (12 messages) flat view 12 messages, 4 authors, 2016-06-15

Re: [RFC GSoC 2009: git-submodule for multiple, active developers on active trees]

From: P Baker <hidden>
Date: 2016-06-15 22:46:32

I'll paraphrase to see if I understand your points:

*Moving objects from submodule .git directories into the base .git/
directory would protect the submodules and is a good idea.
*Moving to a .git/ file from .gitmodules should be taken off of the
goal list (I went back and read this thread:
http://thread.gmane.org/gmane.comp.version-control.git/78605; seemed
to clear things up).
*git submodule recurse would be a good option (not as a default), if
the remaining issues are resolved.
*It would be a good idea for git submodule to work with foreign VCS,
through Daniel's patches.

I appreciate the guidance, it's helping me to see that some of this
work has already been done, it needs to be finished and pushed into a
public release. As an intense user of submodules, what does it do
poorly/not do for your needs?

Thanks,

Phillip Baker

On Tue, Mar 31, 2009 at 7:05 PM, Johannes Schindelin
[off-list ref] wrote:
Hi,

On Tue, 31 Mar 2009, P Baker wrote:
quoted
On Tue, Mar 31, 2009 at 11:57 AM, Johannes Schindelin
[off-list ref] wrote:
quoted
quoted
*move objects of submodules into base .git/ directory
**This would, as I understand it: protect submodules from being
overwritten and changes lost when switching between branches of the
superproject that might or might not contain the submodules and
centralize their management into one location.  The added benefits of
fully using git's ability to branch and merge submodules makes it
worth adding some complexity within the .git directory.
The main problem with renaming/deleting is not the repository of the
submodule, but the working directoy.
My understanding is that since the submodule objects (history) is
stored in a .git directory in the subdirectory where the submodule is
located, removing that subdirectory during checkout of a branch that
does not include that submodule eliminates the .git directory as well.
Moving the objects from the submodule's .git directory to the base
.git directory would seem to alleviate this problem.
My point was more about "you cannot just remove the subdirectory, or you
_will_ lose data".
quoted
quoted
quoted
*use .git instead of .gitmodules
**I actually don't know why this was included with the project
description, I searched for an explanation of the desired name change
on the mailing list and in commit messages, but came up with nothing.
AFAICT somebody thought that the information about the locations of the
submodules should be in .git/ rather than in the working directory.  But
of course, that is wrong: you want it to be tracked.
So, in looking back through the archives of the mailing list there
seems to be some disagreement between using .gitmodules and
.git/config to track submodules.
No.  .gitmodules has the default information, and "git submodule init"
brings that into .git/config, to be overridden by the user if she so
likes.
quoted
quoted
quoted
*git submodule update --init should initialize nested levels of submodules
**As an ease of use command, either an additional flag to recurse can
be added, or it can act by default. As a requested feature on the
mailing list, this is worth implementing.
I thought there was a patch to support "git submodule recurse"?  That
would be rather less limited than yet another option to submodule update.
There is a git submodule foreach command, but it doesn't look like the
patch for git submodule recurse
(http://marc.info/?l=git&m=120997867213008&w=2) has been incorporated
into a public release.

That is one route, on the other hand, the default action is also open
to question. When I update a submodule, I would probably expect that
anything it depends on is also updated. The default action probably
should be recursive.
No.  Not at all.  At least in my usage, submodules are mostly optional.
IOW I have ways in my projects to cope with the absence of a checkout.
quoted
quoted
quoted
*ability to update submodule pulled from svn repo
**One workaround is to clone it as local copy using git-svn and then
import that local clone as a submodule; clearly a clunky solution.
There are many requests for this feature (see
http://panthersoftware.com/articles/view/4/git-svn-dcommit-workaround-for-git-submodules
for a typical example), and it makes sense integrating git-submodule
with git-svn would expand submodule's usefulness.
I do not think that this would be good.  Both "git svn" and "git
submodule" are rather complex by now, and mixing them would only
complicate code.
Hm, point well taken, but it would seem to have enormous benefit for a
lot of people. I can move it down the priority list, but I'd like to
include it in the proposal - complexity alone isn't a good reason to
avoid something.
Complexity is often a good sign of bad design.

In this case, I want to point out that there has been a better design
already:

http://thread.gmane.org/gmane.comp.version-control.git/114545

(Unfortunately, Daniel decided to post the follow-up patches in different
threads; that will make it hard for you to find them.)

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help