try out: git clone --depth=1 git://git.kernel.org/pub/scm/git/git cd git git fetch --depth=2 It then silently fails, except for the return code of 1. With -v this is the same result. Only if I remove --depth= do I get: >From git://git.kernel.org/pub/scm/git/git = [up to date] html -> origin/html = [up to date] maint -> origin/maint = [up to date] man -> origin/man = [up to date] master -> origin/master = [up to date] next -> origin/next = [up to date] pu -> origin/pu = [up to date] todo -> origin/todo and a return code of 0. It seems that commit c6bc400585 is partly responsible for that misbehavior. At least reverting it makes the status list appear again even with the presence of --depth=. But still, actual result isn't any better. Using --depth=2 or --depth=1000 doesn't change anything, unless there is _also_ a ref that was updated on the remote end. Looks like the code is happy to conclude that there is nothing to do if local refs match remote refs and never go to talk further to the remote end ("no "shallow ..." nor "deepen ..." are sent over the wire) despite the fact that --depth=1000 would certainly have to trigger a pack transfer. I'm also surprised that such thing as simple deepening of a repo is not in the test suite. We certainly document this operation in the git-fetch man page though. The code in builtin-fetch-pack.c still looks rather confusing to me, so hopefully you are more familiar with it and can provide a fix. Nicolas -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html