threads / discuss / 21480

Accessing the reflog remotely

Subject: Accessing the reflog remotely

## tl;dr

8 messages between Nov 4, 2009 and Nov 4, 2009.

replies: 7people: 6as markdown or json

Matthieu Moy· Nov 4, 2009, 09:35 UTC · lore
Hi,
I guess the answer is "no", but I'll still ask in case ...

Is it possible to access the reflog of a remote repository other than logging into this repository?

My use-case is the following: I want to checkout "the last revision pushed in master on ssh://host/repo/ on day D at midnight" (to fetch the project of my students ;-) ). If it were locally, I'd do

  git checkout 'origin/master@{Nov 3 00:00:00}'

But this tells me where _my_ local master was on that date (i.e. the last revision I had pulled).

So, the best I can think of is:

ssh host 'cd /repo/ ; git tag final-version "master@{Nov 3 00:00:00}"' git fetch --tags git checkout tags/final-version

Is there a better way?
Thanks,
-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Emanuele Aina· Nov 4, 2009, 10:16 UTC · re: Matthieu Moy · lore

Re: Accessing the reflog remotely

Matthieu Moy provò:
Show 10 quoted lines
>   git checkout 'origin/master@{Nov 3 00:00:00}'
> 
> But this tells me where _my_ local master was on that date (i.e. the
> last revision I had pulled).
> 
> So, the best I can think of is:
> 
> ssh host 'cd /repo/ ; git tag final-version "master@{Nov 3 00:00:00}"'
> git fetch --tags
> git checkout tags/final-version
At least you can avoid the tag:
git checkout `ssh host 'GIT_DIR=/repo/ git rev-parse "master@{Nov 3 00:00:00}"'`
-- 
Buongiorno.
Complimenti per l'ottima scelta.
Tomas Carnecky· Nov 4, 2009, 10:58 UTC · re: Matthieu Moy · lore

Re: Accessing the reflog remotely

On Nov 4, 2009, at 10:35 AM, Matthieu Moy wrote:
Show 15 quoted lines
> Hi,
>
> I guess the answer is "no", but I'll still ask in case ...
>
> Is it possible to access the reflog of a remote repository other than
> logging into this repository?
>
> My use-case is the following: I want to checkout "the last revision
> pushed in master on ssh://host/repo/ on day D at midnight" (to fetch
> the project of my students ;-) ). If it were locally, I'd do
>
>  git checkout 'origin/master@{Nov 3 00:00:00}'
>
> But this tells me where _my_ local master was on that date (i.e. the
> last revision I had pulled).

Keep in mind that bare repos don't have reflogs by default, so unless you enabled the reflog manually there is none.

tom
Nicolas Pitre· Nov 4, 2009, 17:46 UTC · re: Matthieu Moy · lore

Re: Accessing the reflog remotely

On Wed, 4 Nov 2009, Matthieu Moy wrote:
Show 6 quoted lines
> Hi,
> 
> I guess the answer is "no", but I'll still ask in case ...
> 
> Is it possible to access the reflog of a remote repository other than
> logging into this repository?
No.
Show 8 quoted lines
> My use-case is the following: I want to checkout "the last revision
> pushed in master on ssh://host/repo/ on day D at midnight" (to fetch
> the project of my students ;-) ). If it were locally, I'd do
> 
>   git checkout 'origin/master@{Nov 3 00:00:00}'
> 
> But this tells me where _my_ local master was on that date (i.e. the
> last revision I had pulled).

You could checkout the first revision which committer's date is older than midnight. Of course that means you have to trust that students didn't mess up with time stamps.

Nicolas
Matthieu Moy· Nov 4, 2009, 19:06 UTC · re: Nicolas Pitre · lore

Re: Accessing the reflog remotely

Nicolas Pitre <nico@fluxnic.net> writes:
> You could checkout the first revision which committer's date is older 
> than midnight.  Of course that means you have to trust that students 
> didn't mess up with time stamps.

Not only that: they could have commited something the day before, and pushed it the day after. In the particular case I have in mind, the deliverable is an intermediate one, and we insist a lot on testing, so the senario is not unlikely: commit dangerous code the day of the deadline, and push it the day after. So, the reflog is definitely the answer here.

But thanks anyway!
-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Sverre Rabbelier· Nov 4, 2009, 17:55 UTC · re: Matthieu Moy · lore

Re: Accessing the reflog remotely

Heya,
On Wed, Nov 4, 2009 at 10:35, Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> wrote:
> My use-case is the following: I want to checkout "the last revision
> pushed in master on ssh://host/repo/ on day D at midnight" (to fetch
> the project of my students ;-) ). If it were locally, I'd do

I think your best bet here would be to either run a cronjob at the target time that tags all submissions, or to deny pushes after the target time with a pre-push hook.

-- 
Cheers,

Sverre Rabbelier
Junio C Hamano· Nov 4, 2009, 18:03 UTC · re: Matthieu Moy · lore

Re: Accessing the reflog remotely

Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
Show 8 quoted lines
> I guess the answer is "no", but I'll still ask in case ...
>
> Is it possible to access the reflog of a remote repository other than
> logging into this repository?
>
> My use-case is the following: I want to checkout "the last revision
> pushed in master on ssh://host/repo/ on day D at midnight" (to fetch
> the project of my students ;-) ). If it were locally, I'd do

This won't solve your problem but I'll mention it anyway as it may be related.

A distribution point repository like this is often bare, and reflogs are not enabled in bare repositories (primarily due to my stupidity^Wbeing overly cautious---I was very skeptical about reflogs when we introduced it). It may make sense to enable reflogs everywhere by default in some major version bump.

Also a distribution point repository is often served by gitweb and it would be really nice if there were an option to allow its summary view to show commits annotated with reflog entries, e.g.

    ----------------------------------------------------------------
    2 days ago          JCH Merge branch 'maint'
    (pushed 6 hrs ago)
    ----------------------------------------------------------------
    2 days ago          DVL Makefile: add compat/bswap.h to LIB_H
    ----------------------------------------------------------------
    3 days ago          JCH Revert "Don't create the $GIT_DIR/branches directory on init"
    (pushed 60 hours ago)
    ----------------------------------------------------------------
    4 days ago          JCH fixup tr/stash-format merge
    ----------------------------------------------------------------
        ...
Matthieu Moy· Nov 4, 2009, 19:08 UTC · re: Junio C Hamano · lore

Re: Accessing the reflog remotely

Junio C Hamano <gitster@pobox.com> writes:
> A distribution point repository like this is often bare, and reflogs are
> not enabled in bare repositories (primarily due to my stupidity^Wbeing
> overly cautious---I was very skeptical about reflogs when we introduced
> it).

Thanks for reminding it (I knew it, but I could very well have forgotten at the last minute ...) :-).

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

← back to recent threads