Reading remote reflogs
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.
Signature · 2 lines
Dennis Kaarsemaker www.kaarsemaker.net
Quoted 2 lines · Dennis Kaarsemaker
... 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/nextIt seems to record how a branch at its origin was updated just fine, at least to me.
Quoted 8 lines · Junio C Hamano
Quoted 2 lines · Dennis Kaarsemaker
... Mirrored repositories don't
maintain a reflog, even with core.logAllRefUpdates = true,...Are you sure about this? When
log_all_ref_updatesis 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.
Signature · 2 lines
Dennis Kaarsemaker www.kaarsemaker.net
Quoted 10 lines · Dennis Kaarsemaker
Quoted 8 lines · Junio C Hamano
Quoted 2 lines · Dennis Kaarsemaker
... Mirrored repositories don't
maintain a reflog, even with core.logAllRefUpdates = true,...Are you sure about this? When
log_all_ref_updatesis 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.
Quoted 5 lines
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?
Quoted 12 lines · Junio C Hamano
Quoted 10 lines · Dennis Kaarsemaker
Quoted 8 lines · Junio C Hamano
Quoted 2 lines · Dennis Kaarsemaker
... Mirrored repositories don't
maintain a reflog, even with core.logAllRefUpdates = true,...Are you sure about this? When
log_all_ref_updatesis 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.
Quoted 8 lines
Quoted 5 lines
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
Signature · 2 lines
Dennis Kaarsemaker www.kaarsemaker.net