# Lift --stdout restriction for using reachability bitmap in pack-objects?

5 messages from 2015-02-17 to 2015-02-19. Participants: Duy Nguyen, Jeff King, Kyle J. McKay.
Thread: https://gitlist.dev/t/38580

## Duy Nguyen, 2015-02-17 10:07

Subject: Lift --stdout restriction for using reachability bitmap in pack-objects?
Message-ID: <CACsJy8AC5ZcsB2_qS4k-+6fJt2_e7m=o8C9UAEcywh=P_4HXAw@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8AC5ZcsB2_qS4k-%2B6fJt2_e7m%3Do8C9UAEcywh%3DP_4HXAw%40mail.gmail.com

```
Commit 6b8fda2 (pack-objects: use bitmaps when packing objects -
2013-12-21) turns off reachability bitmap optimization if --stdout is
not specified. I wonder if we could lift this restriction?

My use case is debugging pack-objects in gdb (repeatedly) where this
optimization could really save time. But specifying --stdout would
clutter gdb interface.. I don't know this code well enough to judge,
but I think the worst thing is we don't write .idx file out (maybe
because it would involve a lot more work).
-- 
Duy

```

## Jeff King, 2015-02-17 10:13

Subject: Re: Lift --stdout restriction for using reachability bitmap in pack-objects?
Message-ID: <20150217101344.GA5343@peff.net>
URL: https://gitlist.dev/e/20150217101344.GA5343%40peff.net
In-Reply-To: <CACsJy8AC5ZcsB2_qS4k-+6fJt2_e7m=o8C9UAEcywh=P_4HXAw@mail.gmail.com>

```
On Tue, Feb 17, 2015 at 05:07:36PM +0700, Duy Nguyen wrote:

> Commit 6b8fda2 (pack-objects: use bitmaps when packing objects -
> 2013-12-21) turns off reachability bitmap optimization if --stdout is
> not specified. I wonder if we could lift this restriction?

I'm not sure what else would break if we did. For instance, would
bitmaps kick in when doing the "Counting objects" phase of "git repack
-ad". And if so, what would the resulting pack look like?

So I'm not opposed to it in principle, but I suspect there's some
cleanup work to be done. But...

> My use case is debugging pack-objects in gdb (repeatedly) where this
> optimization could really save time. But specifying --stdout would
> clutter gdb interface.. I don't know this code well enough to judge,
> but I think the worst thing is we don't write .idx file out (maybe
> because it would involve a lot more work).

If the only reason is for gdb, then perhaps:

  set args pack-objects --stdout </dev/null >/dev/null

in gdb would help?

-Peff

```

## Duy Nguyen, 2015-02-17 10:36

Subject: Re: Lift --stdout restriction for using reachability bitmap in pack-objects?
Message-ID: <CACsJy8C=MC2xVbkXE-RBcLtcn0yEX4iqBLjgOw+M0iK5n-Kyhw@mail.gmail.com>
URL: https://gitlist.dev/e/CACsJy8C%3DMC2xVbkXE-RBcLtcn0yEX4iqBLjgOw%2BM0iK5n-Kyhw%40mail.gmail.com
In-Reply-To: <20150217101344.GA5343@peff.net>

```
On Tue, Feb 17, 2015 at 5:13 PM, Jeff King <peff@peff.net> wrote:
> If the only reason is for gdb, then perhaps:
>
>   set args pack-objects --stdout </dev/null >/dev/null
>
> in gdb would help?

Right. I used "gdb --args command >/dev/null" instead. Stupid
question. Sorry for the noise.
-- 
Duy

```

## Jeff King, 2015-02-17 10:42

Subject: Re: Lift --stdout restriction for using reachability bitmap in pack-objects?
Message-ID: <20150217104228.GA26301@peff.net>
URL: https://gitlist.dev/e/20150217104228.GA26301%40peff.net
In-Reply-To: <CACsJy8C=MC2xVbkXE-RBcLtcn0yEX4iqBLjgOw+M0iK5n-Kyhw@mail.gmail.com>

```
On Tue, Feb 17, 2015 at 05:36:30PM +0700, Duy Nguyen wrote:

> On Tue, Feb 17, 2015 at 5:13 PM, Jeff King <peff@peff.net> wrote:
> > If the only reason is for gdb, then perhaps:
> >
> >   set args pack-objects --stdout </dev/null >/dev/null
> >
> > in gdb would help?
> 
> Right. I used "gdb --args command >/dev/null" instead. Stupid
> question. Sorry for the noise.

I've made the same mistake myself many times. I really wish gdb would
interact over /dev/tty by default. The perl debugger does this, and I
find it quite handy. But I've never managed to make gdb do it. Maybe
there is an option I've missed[1].

The downside of what approach, though, is that you cannot restart the
program reliably from within the debugger (it cannot know how to
re-set-up the descriptors). So you have to quit and restart, which loses
any breakpoints, etc.

-Peff

[1] Having written that, I'm not sure I ever tried a script that does
    something like:

      program=$1; shift
      exec 3<&0
      exec 4>&1
      gdb </dev/tty >/dev/tty -ex "set args <&3 >&4 gdb $*" "$program"

    I think that would work, but it does screw up quoting/whitespace in
    your arguments.

```

## Kyle J. McKay, 2015-02-19 00:09

Subject: Re: Lift --stdout restriction for using reachability bitmap in pack-objects?
Message-ID: <59A24487-0FAC-4E02-B019-8EBCD9306A47@gmail.com>
URL: https://gitlist.dev/e/59A24487-0FAC-4E02-B019-8EBCD9306A47%40gmail.com
In-Reply-To: <20150217104228.GA26301@peff.net>

```
On Feb 17, 2015, at 02:42, Jeff King wrote:

> On Tue, Feb 17, 2015 at 05:36:30PM +0700, Duy Nguyen wrote:
>
>> On Tue, Feb 17, 2015 at 5:13 PM, Jeff King <peff@peff.net> wrote:
>>> If the only reason is for gdb, then perhaps:
>>>
>>>  set args pack-objects --stdout </dev/null >/dev/null
>>>
>>> in gdb would help?
>>
>> Right. I used "gdb --args command >/dev/null" instead. Stupid
>> question. Sorry for the noise.
>
> I've made the same mistake myself many times. I really wish gdb would
> interact over /dev/tty by default. The perl debugger does this, and I
> find it quite handy. But I've never managed to make gdb do it. Maybe
> there is an option I've missed[1].

You may want to try cgdb.  It is a curses front-end to gdb.  I almost  
never run bare gdb anymore.  It has a source file pane (no more line- 
by-line), a gdb pane and, although a bit clumsy, a TTY pane (not shown  
in the screen shot) that you can interact with the debuggee with.   
It's been around for a while, so debian-derived distros can usually  
just `apt-get install cgdb`.  There's a screen shot available [1].

-Kyle

[1] http://cgdb.github.io/

```
