<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/git-submodule.sh, branch v2.8.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.8.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.8.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2016-02-24T23:24:49Z</updated>
<entry>
<title>submodule: try harder to fetch needed sha1 by direct fetching sha1</title>
<updated>2016-02-24T23:24:49Z</updated>
<author>
<name>Stefan Beller</name>
<email>sbeller@google.com</email>
</author>
<published>2016-02-24T03:32:13Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=fb43e31f2b43076e7a30c9cd00d0241cb8cf97eb'/>
<id>urn:sha1:fb43e31f2b43076e7a30c9cd00d0241cb8cf97eb</id>
<content type='text'>
When reviewing a change that also updates a submodule in Gerrit, a
common review practice is to download and cherry-pick the patch
locally to test it. However when testing it locally, the 'git
submodule update' may fail fetching the correct submodule sha1 as
the corresponding commit in the submodule is not yet part of the
project history, but also just a proposed change.

If $sha1 was not part of the default fetch, we try to fetch the $sha1
directly. Some servers however do not support direct fetch by sha1,
which leads git-fetch to fail quickly. We can fail ourselves here as
the still missing sha1 would lead to a failure later in the checkout
stage anyway, so failing here is as good as we can get.

Helped-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Signed-off-by: Stefan Beller &lt;sbeller@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Sync with 2.6.1</title>
<updated>2015-10-05T20:20:08Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-10-05T19:46:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=590f6e4235a7d44ad39511186ca8bbac02ae8c2e'/>
<id>urn:sha1:590f6e4235a7d44ad39511186ca8bbac02ae8c2e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'sb/submodule-helper'</title>
<updated>2015-10-05T19:30:19Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-10-05T19:30:19Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=65e1449614d3af34a022007cd335d0e563dea721'/>
<id>urn:sha1:65e1449614d3af34a022007cd335d0e563dea721</id>
<content type='text'>
The infrastructure to rewrite "git submodule" in C is being built
incrementally.  Let's polish these early parts well enough and make
them graduate to 'next' and 'master', so that the more involved
follow-up can start cooking on a solid ground.

* sb/submodule-helper:
  submodule: rewrite `module_clone` shell function in C
  submodule: rewrite `module_name` shell function in C
  submodule: rewrite `module_list` shell function in C
</content>
</entry>
<entry>
<title>Sync with 2.4.10</title>
<updated>2015-09-28T22:33:56Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-09-28T22:33:56Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=11a458befcd7662fbe6d2d53c76d49ae2b0fe219'/>
<id>urn:sha1:11a458befcd7662fbe6d2d53c76d49ae2b0fe219</id>
<content type='text'>
</content>
</entry>
<entry>
<title>submodule: allow only certain protocols for submodule fetches</title>
<updated>2015-09-23T18:35:48Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2015-09-16T17:13:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=33cfccbbf35a56e190b79bdec5c85457c952a021'/>
<id>urn:sha1:33cfccbbf35a56e190b79bdec5c85457c952a021</id>
<content type='text'>
Some protocols (like git-remote-ext) can execute arbitrary
code found in the URL. The URLs that submodules use may come
from arbitrary sources (e.g., .gitmodules files in a remote
repository). Let's restrict submodules to fetching from a
known-good subset of protocols.

Note that we apply this restriction to all submodule
commands, whether the URL comes from .gitmodules or not.
This is more restrictive than we need to be; for example, in
the tests we run:

  git submodule add ext::...

which should be trusted, as the URL comes directly from the
command line provided by the user. But doing it this way is
simpler, and makes it much less likely that we would miss a
case. And since such protocols should be an exception
(especially because nobody who clones from them will be able
to update the submodules!), it's not likely to inconvenience
anyone in practice.

Reported-by: Blake Burkhart &lt;bburky@bburky.com&gt;
Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ah/submodule-typofix-in-error' into maint</title>
<updated>2015-09-17T19:11:08Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-09-17T19:11:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=cfc3e0ee4a01873b50c080560c519762491cd60a'/>
<id>urn:sha1:cfc3e0ee4a01873b50c080560c519762491cd60a</id>
<content type='text'>
Error string fix.

* ah/submodule-typofix-in-error:
  git-submodule: remove extraneous space from error message
</content>
</entry>
<entry>
<title>submodule: rewrite `module_clone` shell function in C</title>
<updated>2015-09-08T22:48:21Z</updated>
<author>
<name>Stefan Beller</name>
<email>sbeller@google.com</email>
</author>
<published>2015-09-08T18:57:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ee8838d157761acf4cc38f2378277dc894c10eb0'/>
<id>urn:sha1:ee8838d157761acf4cc38f2378277dc894c10eb0</id>
<content type='text'>
This reimplements the helper function `module_clone` in shell
in C as `clone`. This functionality is needed for converting
`git submodule update` later on, which we want to add threading
to.

Signed-off-by: Stefan Beller &lt;sbeller@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>submodule: rewrite `module_name` shell function in C</title>
<updated>2015-09-03T21:12:40Z</updated>
<author>
<name>Stefan Beller</name>
<email>sbeller@google.com</email>
</author>
<published>2015-09-02T21:42:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0ea306ef1701d6f42e74d3c33addfcd630248904'/>
<id>urn:sha1:0ea306ef1701d6f42e74d3c33addfcd630248904</id>
<content type='text'>
This implements the helper `name` in C instead of shell,
yielding a nice performance boost.

Before this patch, I measured a time (best out of three):

  $ time ./t7400-submodule-basic.sh  &gt;/dev/null
    real	0m11.066s
    user	0m3.348s
    sys	0m8.534s

With this patch applied I measured (also best out of three)

  $ time ./t7400-submodule-basic.sh  &gt;/dev/null
    real	0m10.063s
    user	0m3.044s
    sys	0m7.487s

Signed-off-by: Stefan Beller &lt;sbeller@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>submodule: rewrite `module_list` shell function in C</title>
<updated>2015-09-03T21:12:40Z</updated>
<author>
<name>Stefan Beller</name>
<email>sbeller@google.com</email>
</author>
<published>2015-09-02T21:42:24Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=74703a1e4dfc5affcb8944e78b53f0817b492246'/>
<id>urn:sha1:74703a1e4dfc5affcb8944e78b53f0817b492246</id>
<content type='text'>
Most of the submodule operations work on a set of submodules.
Calculating and using this set is usually done via:

       module_list "$@" | {
           while read mode sha1 stage sm_path
           do
                # the actual operation
           done
       }

Currently the function `module_list` is implemented in the
git-submodule.sh as a shell script wrapping a perl script.
The rewrite is in C, such that it is faster and can later be
easily adapted when other functions are rewritten in C.

git-submodule.sh, similar to the builtin commands, will navigate
to the top-most directory of the repository and keep the
subdirectory as a variable. As the helper is called from
within the git-submodule.sh script, we are already navigated
to the root level, but the path arguments are still relative
to the subdirectory we were in when calling git-submodule.sh.
That's why there is a `--prefix` option pointing to an alternative
path which to anchor relative path arguments.

Signed-off-by: Stefan Beller &lt;sbeller@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'ah/submodule-typofix-in-error'</title>
<updated>2015-09-01T23:31:21Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-09-01T23:31:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=2953140a6593c14d68ef2dbd5efaccb0d59da925'/>
<id>urn:sha1:2953140a6593c14d68ef2dbd5efaccb0d59da925</id>
<content type='text'>
Error string fix.

* ah/submodule-typofix-in-error:
  git-submodule: remove extraneous space from error message
</content>
</entry>
</feed>
