threads / discuss / 30826

Push to a branch breaks origin, requires a manual gc to fix

Subject: Push to a branch breaks origin, requires a manual gc to fix

## tl;dr

2 messages between Jun 17, 2012 and Jun 20, 2012.

replies: 1people: 2as markdown or json

Sam Varshavchik· Jun 17, 2012, 15:07 UTC · lore
Something's goes wrong every time I push a branch to origin.
When I start, everything looks ok:
$ git remote show origin
* remote origin
  Fetch URL: http://monster/gitrepos/stasher.git/
  Push  URL: http://monster/gitrepos/stasher.git/
  HEAD branch: master
  Remote branches:
    distreboot tracked
    master     tracked
  Local branches configured for 'git pull':
    distreboot merges with remote distreboot
    master     merges with remote master
  Local refs configured for 'git push':
    distreboot pushes to distreboot (fast-forwardable)
    master     pushes to master     (up to date)
I push:
$ git push
Fetching remote heads...
  refs/
  refs/heads/
  refs/tags/
updating 'refs/heads/distreboot'
  from 0000000000000000000000000000000000000000
  to   e0bce568272859eca817455acafb5f0a52b8fd5a
    sending 6 objects
    done
Updating remote server info
To http://monster/gitrepos/stasher.git/
   6d4900e..e0bce56  distreboot -> distreboot
This breaks something:
$ git remote show origin
* remote origin
  Fetch URL: http://monster/gitrepos/stasher.git/
  Push  URL: http://monster/gitrepos/stasher.git/
  HEAD branch: (unknown)
  Remote branches:
    distreboot                 tracked
    refs/remotes/origin/master stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    distreboot merges with remote distreboot
    master     merges with remote master
  Local ref configured for 'git push':
    distreboot pushes to distreboot (up to date)
Going forward, clone will fail:

$ git clone http://monster/gitrepos/stasher.git/ stasher-test Cloning into 'stasher-test'... warning: remote HEAD refers to nonexistent ref, unable to checkout.

If I do some random fiddling in the origin repo (not really knowing what I'm doing, I can usually fix it:

sh-4.2$ cat HEAD ref: refs/heads/master sh-4.2$ ls -al refs/heads total 16 drwxr-xr-x 3 apache apache 4096 Jun 17 10:53 . drwxr-xr-x 4 apache apache 4096 May 24 10:37 .. drwxr-xr-x 2 apache apache 4096 Jun 17 10:53 .DAV -rw-r--r-- 1 apache apache 41 Jun 17 10:53 distreboot sh-4.2$ cat info/refs e0bce568272859eca817455acafb5f0a52b8fd5a refs/heads/distreboot sh-4.2$ git gc Counting objects: 124, done. Delta compression using up to 8 threads. Compressing objects: 100% (59/59), done. Writing objects: 100% (124/124), done. Total 124 (delta 67), reused 116 (delta 63) sh-4.2$ cat info/refs e0bce568272859eca817455acafb5f0a52b8fd5a refs/heads/distreboot ee94edb5fcdc7a28ffbdeaabe841e3ecff863983 refs/heads/master sh-4.2$ ls -al refs/heads total 12 drwxr-xr-x 3 apache apache 4096 Jun 17 10:54 . drwxr-xr-x 4 apache apache 4096 May 24 10:37 .. drwxr-xr-x 2 apache apache 4096 Jun 17 10:53 .DAV

git clone starts working again.
Until I push the branch, and then master breaks again.
Neal Kreitzinger· Jun 20, 2012, 20:10 UTC · re: Sam Varshavchik · lore

Re: Push to a branch breaks origin, requires a manual gc to fix

On 6/17/2012 10:07 AM, Sam Varshavchik wrote:
Show 88 quoted lines
> Something's goes wrong every time I push a branch to origin.
>
> When I start, everything looks ok:
>
> $ git remote show origin
> * remote origin
>    Fetch URL: http://monster/gitrepos/stasher.git/
>    Push  URL: http://monster/gitrepos/stasher.git/
>    HEAD branch: master
>    Remote branches:
>      distreboot tracked
>      master     tracked
>    Local branches configured for 'git pull':
>      distreboot merges with remote distreboot
>      master     merges with remote master
>    Local refs configured for 'git push':
>      distreboot pushes to distreboot (fast-forwardable)
>      master     pushes to master     (up to date)
>
> I push:
>
> $ git push
> Fetching remote heads...
>    refs/
>    refs/heads/
>    refs/tags/
> updating 'refs/heads/distreboot'
>    from 0000000000000000000000000000000000000000
>    to   e0bce568272859eca817455acafb5f0a52b8fd5a
>      sending 6 objects
>      done
> Updating remote server info
> To http://monster/gitrepos/stasher.git/
>     6d4900e..e0bce56  distreboot ->  distreboot
>
> This breaks something:
>
> $ git remote show origin
> * remote origin
>    Fetch URL: http://monster/gitrepos/stasher.git/
>    Push  URL: http://monster/gitrepos/stasher.git/
>    HEAD branch: (unknown)
>    Remote branches:
>      distreboot                 tracked
>      refs/remotes/origin/master stale (use 'git remote prune' to remove)
>    Local branches configured for 'git pull':
>      distreboot merges with remote distreboot
>      master     merges with remote master
>    Local ref configured for 'git push':
>      distreboot pushes to distreboot (up to date)
>
> Going forward, clone will fail:
>
> $ git clone http://monster/gitrepos/stasher.git/ stasher-test
> Cloning into 'stasher-test'...
> warning: remote HEAD refers to nonexistent ref, unable to checkout.
>
> If I do some random fiddling in the origin repo (not really knowing
> what I'm doing, I can usually fix it:
>
> sh-4.2$ cat HEAD
> ref: refs/heads/master
> sh-4.2$ ls -al refs/heads
> total 16
> drwxr-xr-x 3 apache apache 4096 Jun 17 10:53 .
> drwxr-xr-x 4 apache apache 4096 May 24 10:37 ..
> drwxr-xr-x 2 apache apache 4096 Jun 17 10:53 .DAV
> -rw-r--r-- 1 apache apache   41 Jun 17 10:53 distreboot
> sh-4.2$ cat info/refs
> e0bce568272859eca817455acafb5f0a52b8fd5a	refs/heads/distreboot
> sh-4.2$ git gc
> Counting objects: 124, done.
> Delta compression using up to 8 threads.
> Compressing objects: 100% (59/59), done.
> Writing objects: 100% (124/124), done.
> Total 124 (delta 67), reused 116 (delta 63)
> sh-4.2$ cat info/refs
> e0bce568272859eca817455acafb5f0a52b8fd5a	refs/heads/distreboot
> ee94edb5fcdc7a28ffbdeaabe841e3ecff863983	refs/heads/master
> sh-4.2$ ls -al refs/heads
> total 12
> drwxr-xr-x 3 apache apache 4096 Jun 17 10:54 .
> drwxr-xr-x 4 apache apache 4096 May 24 10:37 ..
> drwxr-xr-x 2 apache apache 4096 Jun 17 10:53 .DAV
>
> git clone starts working again.
>
> Until I push the branch, and then master breaks again.

i don't use http with git, but have you looked at git-config manpage and searched for http? i know i've heard http has extra considerations. The version of git you are using may be important info also. there is something in git-config about unclonability problems with older git versions.

v/r, neal

← back to recent threads