Ævar Arnfjörð Bjarmason <[email protected]> writes:
> Is getting the results of these builds time-critical? If not perhaps
> an acceptable solution would be to use a source repo that's
> time-delayed, e.g. 24hrs behind on average from Junio's git.git, and
> where commits are pushed in at some configurable trickle.
Because the tip of 'pu' is updated every day, but the tips of
individual topics are not, the tip of the more stable side of
integration branches are less often updated, I would think that an
automated procedure (whether it is Travis or Dscho's Windows thing)
that is most efficient for us would:
- treat updates to 'maint', 'master' and 'next' as they do right
now;
- use update to 'pu' as a mere "trigger" and not test 'pu' as an
aggregate as it is not very interesting (merges near the tip may
be merging known-broken topics, like yesterday's pushout).
And arrange 'pu' update to trigger a procedure like this:
- Grab the list of merge commits beyond what matches 'next':
$ git rev-list --first-parent '^pu^{/^### match next}' pu
- For each of these merges:
- If its second parent (i.e. the tip of a topic) was already
tested with the current 'master', do not bother testing it
again;
- Otherwise, call its second parent "it" in the below:
- Create a merge of it (and nothing else) on top of 'master',
and test it. Each topic is intended to be able to graduate
without other topics in 'pu', so this will catch potential
breakage early and help blocking a broken topic from getting
merged to 'master'.
- When the above fails, test it in isolation to see if it
itself is broken. If this succeeds, we may have discovered
unintended interactions between the topic and other topics
already in 'master'. Or the topic itself may already been
broken.
- In either case, record the test result so that the same tip
of the topic would not have to be tested again, merely
because the tip of 'pu' got updated next day due to updates
in other topics.
We can s/master/next/ in the above description (I am undecided on
pros-and-cons between using 'master' and 'next').