Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Shallow update not allowed (git > 1.9)

Tags:

git

There are a lot of answers stating that git 1.9 removes limitations of shallow clones. Nevertheless, I'm using 2.6.1 and still having the following basic issue:

First, I create an empty repo somewhere:

cd /tmp
mkdir target
cd target
git init

Then, I shallow clone some repo and add the above repo as remote:

cd /tmp
git clone --depth 1 [email protected]:muennich/urxvt-perls.git
cd urxvt-perls
git remote add target /tmp/target

Finally, I push this repo to the remote:

git push target master

But then I get:

! [remote rejected] master -> master (shallow update not allowed)
error: failed to push some refs to '/tmp/target'

What am I missing here?

like image 939
memeplex Avatar asked Oct 12 '15 16:10

memeplex


1 Answers

I'm answering my own question.

I tried going the other way around and adding urxvt-perls as a remote for target, then fetching from there. This fails because of the same reason but led me closer to a solution. From the git-fetch man:

  --update-shallow
       By default when fetching from a shallow repository, git fetch
       refuses refs that require updating .git/shallow. This option
       updates .git/shallow and accept such refs.

Now, using this option allows the shallow fetch. So the previous question becomes: Is it possible to specify that --update-shallow behavior while pushing? Well, there is an option for that:

receive.shallowupdate
    If set to true, .git/shallow can be updated when new refs require
    new shallow roots. Otherwise those refs are rejected.

I'm still trying to set this in github and the likes, though.

like image 141
memeplex Avatar answered Oct 13 '22 01:10

memeplex