Actually, the .keep file is simply not removed as it should. But first it appears that commit f64d7fd2 added an && on line 431 of git-fetch.sh and that cannot be right. There is simply no condition for not removing the lock file. It must be removed regardless if the previous command succeeded or not. Junio? Now for the actual problem. I instrumented git-fetch.sh to understand what's going on as follows: diff --git a/git-fetch.sh b/git-fetch.sh index 8365785..042040e 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -397,10 +397,12 @@ fetch_main () { continue ;; keep) pack_lockfile="$GIT_OBJECT_DIRECTORY/pack/pack-$remote_name.keep" +echo "a $pack_lockfile" continue ;; esac found= single_force= +echo "b $pack_lockfile" for ref in $refs do case "$ref" in @@ -425,10 +427,13 @@ fetch_main () { esac done local_name=$(expr "z$found" : 'z[^:]*:\(.*\)') +echo "c $pack_lockfile" append_fetch_head "$sha1" "$remote" \ "$remote_name" "$remote_nick" "$local_name" \ "$not_for_merge" || exit - done && +echo "d $pack_lockfile" + done +echo "e $pack_lockfile" if [ "$pack_lockfile" ]; then rm -f "$pack_lockfile"; fi ) || exit ;; esac And performing a fetch -k produced the following output: a .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep b .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep c .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep * refs/heads/next: fast forward to branch 'next' of git://git.kernel.org/pub/scm/git/git old..new: ede546b..c41921b d .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep b .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep c .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep d .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep b .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep c .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep d .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep b .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep c .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep d .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep b .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep c .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep d .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep b .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep c .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep d .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep b .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep c .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep d .git/objects/pack/pack-da39a3ee5e6b4b0d3255bfef95601890afd80709.keep e So....... How the heck could pack_lockfile become empty on the line with the "e" mark? $ /bin/sh --version GNU bash, version 3.1.17(1)-release (i686-redhat-linux-gnu) 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