All of lore.kernel.org
 help / color / mirror / Atom feed
* Post-receive hook for "git pull"
@ 2015-12-07 13:47 Stefan Monnier
  2015-12-07 19:54 ` Junio C Hamano
  0 siblings, 1 reply; 3+ messages in thread
From: Stefan Monnier @ 2015-12-07 13:47 UTC (permalink / raw)
  To: git

I have a system here where it can be quite common to have thousands of
branches in the remote repository, and where I'd like to update some
local state according to the appearance of new branches (or updates of
pre-existing ones).

Currently, I use a "git for-each-ref" after pulling and then check (for
each one of those refs) if an update is warranted, but this can get slow
with that many branches.  Is there some way to get something like the
post-receive hook to be run for "git pull", so that the script gets told
directly which (remote tracking) branches have been modified/created?


        Stefan

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Post-receive hook for "git pull"
  2015-12-07 13:47 Post-receive hook for "git pull" Stefan Monnier
@ 2015-12-07 19:54 ` Junio C Hamano
  2016-02-12 13:39   ` Stefan Monnier
  0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2015-12-07 19:54 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: git

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> I have a system here where it can be quite common to have thousands of
> branches in the remote repository, and where I'd like to update some
> local state according to the appearance of new branches (or updates of
> pre-existing ones).
>
> Currently, I use a "git for-each-ref" after pulling and then check (for
> each one of those refs) if an update is warranted, but this can get slow
> with that many branches.  Is there some way to get something like the
> post-receive hook to be run for "git pull", so that the script gets told
> directly which (remote tracking) branches have been modified/created?

I do not think there is.  But you could easily script along the
lines of...

    #!/bin/sh
    git for-each-ref | sort >prestate
    git pull "$@"
    git for-each-ref | sort >poststate
    comm -12 prestate poststate

... or something like that, no?

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Post-receive hook for "git pull"
  2015-12-07 19:54 ` Junio C Hamano
@ 2016-02-12 13:39   ` Stefan Monnier
  0 siblings, 0 replies; 3+ messages in thread
From: Stefan Monnier @ 2016-02-12 13:39 UTC (permalink / raw)
  To: git

>> I have a system here where it can be quite common to have thousands of
>> branches in the remote repository, and where I'd like to update some
>> local state according to the appearance of new branches (or updates of
>> pre-existing ones).
>> Currently, I use a "git for-each-ref" after pulling and then check (for
>> each one of those refs) if an update is warranted, but this can get slow
>> with that many branches.  Is there some way to get something like the
>> post-receive hook to be run for "git pull", so that the script gets told
>> directly which (remote tracking) branches have been modified/created?

> I do not think there is.  But you could easily script along the
> lines of...

>     #!/bin/sh
>     git for-each-ref | sort >prestate
>     git pull "$@"
>     git for-each-ref | sort >poststate
>     comm -12 prestate poststate

Right, it kinda works, but it can break down in case of
concurrent operations.

I really wish there was a way to get something like the post-receive
hook to be called everytime new commits are added, regardless if it's
due to a push, a pull, a commit, a fast-import, ...


        Stefan

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-02-12 13:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-07 13:47 Post-receive hook for "git pull" Stefan Monnier
2015-12-07 19:54 ` Junio C Hamano
2016-02-12 13:39   ` Stefan Monnier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.