Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > We might want to consider using a saner Continuous Testing workflow, to > avoid re-testing (and re-finding) breakages in individual patch series > just because completely unrelated patch got updated. > > I mean, yes, it seemed like a good idea a long time ago to have One Branch > that contains All The Patch Series Currently Cooking, back when our most > reliable (because only) test facilities were poor humans. > > But we see how many more subtle bugs are spotted nowadays where Git's > source code is tested automatically on a growing number of Operating > System/CPU architecture "coordinates", and it is probably time to save > some human resources. > > How about testing the individual branches instead? We would benefit from both, so not "instead", but "in addition" would make more sense. Even if a topic passes a test in isolation, the job of the developer who originally did that topic does not end there, as the topic may break in presence of other topics in flight when tested together with them, and because a project is a team effort, we expect those familiar with the topics involved in such a breakage to all participate in diagnosing and fixing. Ideally, in addition to the tips of these integration branches, and in addition to the tips of topics, it would be nicer if we can test individual new commits. When we see the tip of 'pu' updated from A to B, then git rev-list --no-merges A..B would give us all individual non-merge commits that have been added, and assuming that we have already tested commits back when the tip was at A, these are the only commits that needs testing to see what is broken in the new round. I do not know how easy it is to arrange something like that, though. What we currently run with Travis lets us limit the number of jobs to the number of tentative integration branches; a scheme like that would require quite a lot more test cycles, triggered by a single pushout. (Unscientific numbers) $ git rev-list --count --no-merges pu@{48.hours}..pu@{24.hours} 10 $ git rev-list --count --no-merges pu@{24.hours}..pu 37