Re: [PATCH v2] add test to demonstrate that shallow recursive clones fail
- From
Stefan Beller <sbeller@google.com>
- Date
- Nov 12, 2015, 23:34 UTC
- Message-ID
- <CAGZ79kb3w7STeEdUtGS8wtQdBznhnSOprwTeOx8Csx2bHXX9Rw@mail.gmail.com>
- In-Reply-To
- <1447321061-74381-1-git-send-email-larsxschneider@gmail.com>
On Thu, Nov 12, 2015 at 1:37 AM, <larsxschneider@gmail.com> wrote:
Show 18 quoted lines
> From: Lars Schneider <larsxschneider@gmail.com> > > "git clone --recursive --depth 1 --single-branch <url>" clones the > submodules successfully. However, it does not obey "--depth 1" for > submodule cloning. > > The following workaround does only work if the used submodule pointer > is on the default branch. Otherwise "git submodule update" fails with > "fatal: reference is not a tree:" and "Unable to checkout". > git clone --depth 1 --single-branch <url> > cd <repo-name> > git submodule update --init --recursive --depth 1 > > The workaround does not fail using the "--remote" flag. However, in that > case the wrong commit is checked out. > > Signed-off-by: Lars Schneider <larsxschneider@gmail.com> > ---
Thanks for writing these tests. :)
Show 9 quoted lines
> +test_expect_failure shallow-clone-recursive-workaround ' > + URL="file://$(pwd | sed "s/[[:space:]]/%20/g")/repo" && > + echo $URL && > + git clone --depth 1 --single-branch $URL clone-recursive-workaround && > + ( > + cd "clone-recursive-workaround" && > + git log --oneline >lines && > + test_line_count = 1 lines && > + git submodule update --init --recursive --depth 1
Should we prepend the lines with git submodule update with test_must_fail here?
Show 14 quoted lines
> + ) > +' > + > +test_expect_failure shallow-clone-recursive-with-remote-workaround ' > + URL="file://$(pwd | sed "s/[[:space:]]/%20/g")/repo" && > + echo $URL && > + git clone --depth 1 --single-branch $URL clone-recursive-remote-workaround && > + ( > + cd "clone-recursive-remote-workaround" && > + git log --oneline >lines && > + test_line_count = 1 lines && > + git submodule update --init --remote --recursive --depth 1 && > + git status submodule >status && > + test_must_fail grep "modified:" status
Use ! here instead of test_must_fail.
IIUC we use test_must_fail for git commands (to test that git does return a non null value instead of segfaulting). But on the other hand we trust grep to not segfault, so just negating its output is enough here.
Show 7 quoted lines
> + ) > +' > + > +test_done > -- > 2.5.1 >