On Thu, Oct 20, 2016 at 4:29 PM, Aaron Schrab <aaron@xxxxxxxxxx> wrote: > I was working with a fresh clone of a repository where I'd forgotten that > one of the directories was setup as a submodule, so I hadn't initialized it. > > I tried to add a symlink to a location outside the repository and this > failed with an assertion (exact text in comment below). When looking into > that I realized that the directory was meant to be a submodule and decided > to try to change that. So I tried to remove the submodule, and got an error > (misleadingly) saying that couldn't be done because it uses a .git > directory. > > I first noticed this with git 2.9.3 from Debian unstable, but I also see it > building from v2.10.1-502-g6598894 fetched from master recently. > > The following script replicates both of these issues. These could both be > classified as "don't do that", although at lease the assertion is quite > ugly. > > --- >8 ---- > #!/bin/sh -e > > directory=$(mktemp -d) > echo "Using directory '$directory'" > cd $directory > git init --quiet orig > ( > cd orig > # Using a random, small repository for the submodule. > git submodule --quiet add https://github.com/diepm/vim-rest-console.git sub > git commit -m init >/dev/null > ) > git clone --quiet orig dup > cd dup > > ( > cd sub > ln -s /tmp/dont_care > # Next command aborts with > # git: pathspec.c:317: prefix_pathspec: Assertion `item->nowildcard_len <= > item->len && item->prefix <= item->len' failed.` For this bug see https://public-inbox.org/git/CAFOYHZDw-P0ST8WKoSVxBpbFCiACZpgiDPMfw5MRtFTMosO0rg@xxxxxxxxxxxxxx/ Specifically try this patch https://public-inbox.org/git/CAGZ79kZaZCwZ-cesB_voq0s0Qt+ipcgb6TkdzLE+EWSF_qRj7A@xxxxxxxxxxxxxx/ > git add . || : expected to fail > ) > > rm -f .git/index.lock > # Next command fails with error wrongly saying that the submodule uses a > .git > # directory. I believe that the real problem is that the uninitialized > # submodule has content. > git rm sub