# Reading remote reflogs

5 messages from 2013-03-29 to 2013-03-30. Participants: Dennis Kaarsemaker, Junio C Hamano.
Thread: https://gitlist.dev/t/33330

## Dennis Kaarsemaker, 2013-03-29 22:25

Subject: Reading remote reflogs
Message-ID: <1364595928.30202.4.camel@localhost>
URL: https://gitlist.dev/e/1364595928.30202.4.camel%40localhost

```
Is it possible to somehow fetch the reflog of a remote?

I would like to delegate some post-receive actions to an automatically
mirrored clone of some repositories. Mirrored repositories don't
maintain a reflog, even with core.logAllRefUpdates = true, so to be able
to know what was pushed per push, it would need to somehow know the
reflog of the origin.

Of course a post-receive hook can send this information downstream, but
I'd like to keep the origin 'dumb' and not do that.

-- 
Dennis Kaarsemaker
www.kaarsemaker.net

```

## Junio C Hamano, 2013-03-29 22:45

Subject: Re: Reading remote reflogs
Message-ID: <7vd2uhn7u1.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vd2uhn7u1.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1364595928.30202.4.camel@localhost>

```
Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:

> ... Mirrored repositories don't
> maintain a reflog, even with core.logAllRefUpdates = true,...

Are you sure about this?  When log_all_ref_updates is not set, by
default we do not log for bare repositories, but other than that, we
do not do anything special with respect to reflogs.

	$ (cd .. && git clone --no-local --mirror git.git victim)
        $ git checkout next
        $ EDITOR=: git commit --amend
        $ cd ../victim
	$ git config core.logallrefupdates true
	$ git fetch
        $ find logs
	logs
        logs/HEAD
        logs/refs
        logs/refs/heads
        logs/refs/heads/next

It seems to record how a branch at its origin was updated just fine,
at least to me.

```

## Dennis Kaarsemaker, 2013-03-29 22:56

Subject: Re: Reading remote reflogs
Message-ID: <1364597780.30202.7.camel@localhost>
URL: https://gitlist.dev/e/1364597780.30202.7.camel%40localhost
In-Reply-To: <7vd2uhn7u1.fsf@alter.siamese.dyndns.org>

```
On vr, 2013-03-29 at 15:45 -0700, Junio C Hamano wrote:
> Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:
> 
> > ... Mirrored repositories don't
> > maintain a reflog, even with core.logAllRefUpdates = true,...
> 
> Are you sure about this?  When log_all_ref_updates is not set, by
> default we do not log for bare repositories, but other than that, we
> do not do anything special with respect to reflogs.

I was, as I tried the recipe below, though with a different repo. Must
have goofed something up, as it works now. Thanks for the braincheck :)

That gives me a reasonable approximation of distinct pushes if I pull
the mirror often enough. It's always going to be an approximation
though, so the original question still stands.
-- 
Dennis Kaarsemaker
www.kaarsemaker.net

```

## Junio C Hamano, 2013-03-29 22:58

Subject: Re: Reading remote reflogs
Message-ID: <7v8v55n790.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v8v55n790.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1364597780.30202.7.camel@localhost>

```
Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:

> On vr, 2013-03-29 at 15:45 -0700, Junio C Hamano wrote:
>> Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:
>> 
>> > ... Mirrored repositories don't
>> > maintain a reflog, even with core.logAllRefUpdates = true,...
>> 
>> Are you sure about this?  When log_all_ref_updates is not set, by
>> default we do not log for bare repositories, but other than that, we
>> do not do anything special with respect to reflogs.
>
> I was, as I tried the recipe below, though with a different repo. Must
> have goofed something up, as it works now. Thanks for the braincheck :)
>
> That gives me a reasonable approximation of distinct pushes if I pull
> the mirror often enough.

Instead of polling, why not "git push --mirror" whenever the
original gets updated?

```

## Dennis Kaarsemaker, 2013-03-30 00:02

Subject: Re: Reading remote reflogs
Message-ID: <1364601776.30202.10.camel@localhost>
URL: https://gitlist.dev/e/1364601776.30202.10.camel%40localhost
In-Reply-To: <7v8v55n790.fsf@alter.siamese.dyndns.org>

```
On vr, 2013-03-29 at 15:58 -0700, Junio C Hamano wrote:
> Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:
> 
> > On vr, 2013-03-29 at 15:45 -0700, Junio C Hamano wrote:
> >> Dennis Kaarsemaker <dennis@kaarsemaker.net> writes:
> >> 
> >> > ... Mirrored repositories don't
> >> > maintain a reflog, even with core.logAllRefUpdates = true,...
> >> 
> >> Are you sure about this?  When log_all_ref_updates is not set, by
> >> default we do not log for bare repositories, but other than that, we
> >> do not do anything special with respect to reflogs.
> >
> > I was, as I tried the recipe below, though with a different repo. Must
> > have goofed something up, as it works now. Thanks for the braincheck :)
> >
> > That gives me a reasonable approximation of distinct pushes if I pull
> > the mirror often enough.
> 
> Instead of polling, why not "git push --mirror" whenever the
> original gets updated?

I considered that, but it has two downsides:
- Slows down the push as it needs to wait for this to complete
- Only works if you control the master, so it won't work with e.g. 
  github hosted repositories
-- 
Dennis Kaarsemaker
www.kaarsemaker.net

```
