threads / discuss / 23444

Removing alternates -- but how?

Subject: Removing alternates -- but how?

## tl;dr

3 messages between Apr 13, 2010 and Apr 14, 2010.

replies: 2people: 3as markdown or json

Thomas Schwinge· Apr 13, 2010, 12:57 UTC · lore
Hello!

According to ``information on the web'', it should be fine to do ``git repack -a && rm .git/objects/info/alternates'', however that doesn't work for me:

    $ cat .git/objects/info/alternates
    ../../../glibc/.git/objects
    ../../../../O/work.new/.git/objects
    $ git repack -a
    Counting objects: 18670, done.
    Compressing objects: 100% (7655/7655), done.
    Writing objects: 100% (18670/18670), done.
    Total 18670 (delta 10218), reused 18670 (delta 10218)
    $ mv .git/objects/info/alternates{,.DEFUNCT}
    $ git branch
    error: refs/remotes/grubber/master does not point to a valid object!
    error: refs/remotes/sourceware/cvs/fedora-2_3-branch does not point to a valid object!
    error: refs/remotes/sourceware/cvs/fedora-2_5-branch does not point to a valid object!
    [...]
    error: refs/tags/cvs/sparc-980522-merge does not point to a valid object!
    error: refs/tags/cvs/start does not point to a valid object!
    error: refs/tags/master-2008-11-27 does not point to a valid object!
    error: refs/tags/master-2009-02-10 does not point to a valid object!
    error: refs/tags/master-2009-07-10 does not point to a valid object!
    error: refs/top-bases/t/IOCTL_decode_argument does not point to a valid object!
    error: refs/top-bases/t/IOCTL_types does not point to a valid object!
    error: refs/top-bases/t/____longjmp_chk_cleanup_linux_x86_64 does not point to a valid object!
    error: refs/top-bases/t/bits_posix_opt.h__POSIX_THREADS does not point to a valid object!
    error: refs/top-bases/t/bits_pthreadtypes.h does not point to a valid object!
      baseline
      posix/regex_internal.c/MAX_undefined
      t/IOCTL_decode_argument
      t/IOCTL_types
      t/____longjmp_chk
      t/____longjmp_chk_cleanup_linux_x86_64
      t/__rtld_lock_recursive_t
    [...]
      t/verify.h
    * tschwinge/Roger_Whittaker
What am I doing wrong?
Regards,
 Thomas
Miklos Vajna· Apr 13, 2010, 15:58 UTC · re: Thomas Schwinge · lore

Re: Removing alternates -- but how?

On Tue, Apr 13, 2010 at 02:57:04PM +0200, Thomas Schwinge <thomas@schwinge.name> wrote:
Show 34 quoted lines
>     $ cat .git/objects/info/alternates
>     ../../../glibc/.git/objects
>     ../../../../O/work.new/.git/objects
>     $ git repack -a
>     Counting objects: 18670, done.
>     Compressing objects: 100% (7655/7655), done.
>     Writing objects: 100% (18670/18670), done.
>     Total 18670 (delta 10218), reused 18670 (delta 10218)
>     $ mv .git/objects/info/alternates{,.DEFUNCT}
>     $ git branch
>     error: refs/remotes/grubber/master does not point to a valid object!
>     error: refs/remotes/sourceware/cvs/fedora-2_3-branch does not point to a valid object!
>     error: refs/remotes/sourceware/cvs/fedora-2_5-branch does not point to a valid object!
>     [...]
>     error: refs/tags/cvs/sparc-980522-merge does not point to a valid object!
>     error: refs/tags/cvs/start does not point to a valid object!
>     error: refs/tags/master-2008-11-27 does not point to a valid object!
>     error: refs/tags/master-2009-02-10 does not point to a valid object!
>     error: refs/tags/master-2009-07-10 does not point to a valid object!
>     error: refs/top-bases/t/IOCTL_decode_argument does not point to a valid object!
>     error: refs/top-bases/t/IOCTL_types does not point to a valid object!
>     error: refs/top-bases/t/____longjmp_chk_cleanup_linux_x86_64 does not point to a valid object!
>     error: refs/top-bases/t/bits_posix_opt.h__POSIX_THREADS does not point to a valid object!
>     error: refs/top-bases/t/bits_pthreadtypes.h does not point to a valid object!
>       baseline
>       posix/regex_internal.c/MAX_undefined
>       t/IOCTL_decode_argument
>       t/IOCTL_types
>       t/____longjmp_chk
>       t/____longjmp_chk_cleanup_linux_x86_64
>       t/__rtld_lock_recursive_t
>     [...]
>       t/verify.h
>     * tschwinge/Roger_Whittaker
What git version are you using?
It seems to work for me:
$ mkdir s
$ cd s
$ git init
$ echo a > a
$ git add a
$ git commit -m i
$ cd ..
$ git clone -s s c
$ cd c
$ git repack -a
$ mv .git/objects/info/alternates .git/objects/info/alternates.orig
$ git branch
* master
Michael J Gruber· Apr 14, 2010, 07:25 UTC · re: Miklos Vajna · lore

Re: Removing alternates -- but how?

Miklos Vajna venit, vidit, dixit 13.04.2010 17:58:
Show 53 quoted lines
> On Tue, Apr 13, 2010 at 02:57:04PM +0200, Thomas Schwinge <thomas@schwinge.name> wrote:
>>     $ cat .git/objects/info/alternates
>>     ../../../glibc/.git/objects
>>     ../../../../O/work.new/.git/objects
>>     $ git repack -a
>>     Counting objects: 18670, done.
>>     Compressing objects: 100% (7655/7655), done.
>>     Writing objects: 100% (18670/18670), done.
>>     Total 18670 (delta 10218), reused 18670 (delta 10218)
>>     $ mv .git/objects/info/alternates{,.DEFUNCT}
>>     $ git branch
>>     error: refs/remotes/grubber/master does not point to a valid object!
>>     error: refs/remotes/sourceware/cvs/fedora-2_3-branch does not point to a valid object!
>>     error: refs/remotes/sourceware/cvs/fedora-2_5-branch does not point to a valid object!
>>     [...]
>>     error: refs/tags/cvs/sparc-980522-merge does not point to a valid object!
>>     error: refs/tags/cvs/start does not point to a valid object!
>>     error: refs/tags/master-2008-11-27 does not point to a valid object!
>>     error: refs/tags/master-2009-02-10 does not point to a valid object!
>>     error: refs/tags/master-2009-07-10 does not point to a valid object!
>>     error: refs/top-bases/t/IOCTL_decode_argument does not point to a valid object!
>>     error: refs/top-bases/t/IOCTL_types does not point to a valid object!
>>     error: refs/top-bases/t/____longjmp_chk_cleanup_linux_x86_64 does not point to a valid object!
>>     error: refs/top-bases/t/bits_posix_opt.h__POSIX_THREADS does not point to a valid object!
>>     error: refs/top-bases/t/bits_pthreadtypes.h does not point to a valid object!
>>       baseline
>>       posix/regex_internal.c/MAX_undefined
>>       t/IOCTL_decode_argument
>>       t/IOCTL_types
>>       t/____longjmp_chk
>>       t/____longjmp_chk_cleanup_linux_x86_64
>>       t/__rtld_lock_recursive_t
>>     [...]
>>       t/verify.h
>>     * tschwinge/Roger_Whittaker
> 
> What git version are you using?
> 
> It seems to work for me:
> 
> $ mkdir s
> $ cd s
> $ git init
> $ echo a > a
> $ git add a
> $ git commit -m i
> $ cd ..
> $ git clone -s s c
> $ cd c
> $ git repack -a
> $ mv .git/objects/info/alternates .git/objects/info/alternates.orig
> $ git branch
> * master

Well, according to the log it worked for some branches for Thomas, just not for all of them. I'm not surprised your test succeeds. In Thomas' case it seems that repack is missing some dependencies, but it doesn't even have an --all option or such.

Thomas: In addition to your git version, it would be good to know
whether you use any of
- grafts
- replaced objects
- multiple roots (branches without common commits)
- alternate chains (source repo borrowing objects from a third repo)
Michael

← back to recent threads