git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Initial support for cloning submodules

From
Junio C Hamano <junkio@cox.net>
Date
May 5, 2007, 08:46 UTC
Message-ID
<7vmz0jk68d.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<20070505081404.GR955MdfPADPa@greensroom.kotnet.org>
Sven Verdoolaege <skimo@kotnet.org> writes:
Show 9 quoted lines
> On Fri, May 04, 2007 at 03:52:15PM -0700, Junio C Hamano wrote:
>> I do not like the Porcelain part very much, though.  I do not
>> think we would want to add anything new to git-clone.  We should
>> lose as much code from git-clone that is common with git-fetch
>> as we can first, and add new features to git-fetch, with
>> possibly passthru options added to git-clone as needed (e.g. a
>> new --submodule option).
>
> So what would you want to keep in git-clone ?
 - Figuring out the name of the new directory we create (think
   "git clone git://repo.or.cz/git.git" -- it does "mkdir git &&
   cd git" for you before doing the other things).
 - Run "git init" there, obviously.
 - Probably run "git ls-remote" to figure out which branch HEAD
   should point at; you would definitely want to add a mechanism
   to pass the ls-remote result to the "git fetch" you are going
   to call next, as it is the first thing "git fetch" usually
   does -- we would want to reuse it.
 - Recently suggested good addition is to have "--track $branch"
   option to "git clone" to point remotes/origin/HEAD to
   something other than what the remote's HEAD actually points
   at (the discussion was primarily between Carl Worth and
   Linus; see archive).
 - Run "git remote add origin" with the given URL to set up the
   standard "separate remotes" tracking structure.
 - Run "git fetch" for initial fetch ("git remote add -f" could
   do that as well).  You would probably need to pass --tags to
   this "git fetch" to mimick what "git clone" does today.
 - Run initial checkout if asked.
Show 9 quoted lines
>>  (3) "git-fetch --submodules", after finishing what it would do
>>      without "--submodules" option, would inspect the fetched
>>      tree (or the index derived from it), find the tree entries
>>      with mode 160000 (i.e. submodule graft points), and _then_
>>      uses the pathnames of these tree entries to consult the
>>      config mechanism to see which URL(s) can be used to
>>      retrieve them, probably only for new submodules.
>
> Would git-fetch then call git-clone for these new submodules?

Most likely yes but that is just my gut feeling -- I readily admit I haven't thought it through.

Previous: Sven VerdoolaegeNext: Alon Ziv
Message 12 of 14 in “Initial support for cloning submodules”
  1. Sven VerdoolaegeMay 4, 2007
  2. 1/5 Add dump-configSven Verdoolaege, May 4, 2007
  3. 2/5 git-config: add --remote option for reading config from remote repoSven Verdoolaege, May 4, 2007
  4. Frank LichtenheldMay 4, 2007
  5. Sven VerdoolaegeMay 4, 2007
  6. Frank LichtenheldMay 4, 2007
  7. 3/5 http.h: make fill_active_slots a function pointerSven Verdoolaege, May 4, 2007
  8. 4/5 git-config: read remote config files over HTTPSven Verdoolaege, May 4, 2007
  9. 5/5 git-clone: add --submodules for cloning submodulesSven Verdoolaege, May 4, 2007
  10. Junio C HamanoMay 4, 2007
  11. Sven VerdoolaegeMay 5, 2007
  12. Junio C HamanoMay 5, 2007
  13. Alon ZivMay 6, 2007
  14. Sven VerdoolaegeMay 18, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.