[libvirt PATCH 000/351] port libvirt to Meson build system
mkletzan at redhat.com
Tue Jul 28 11:08:43 UTC 2020
On Tue, Jul 28, 2020 at 10:46:07AM +0100, Daniel P. Berrangé wrote:
>On Fri, Jul 17, 2020 at 07:27:50PM +0200, Martin Kletzander wrote:
>> On Fri, Jul 17, 2020 at 03:12:00PM +0100, Daniel P. Berrangé wrote:
>> > On Fri, Jul 17, 2020 at 04:10:01PM +0200, Pavel Hrdina wrote:
>> > > On Fri, Jul 17, 2020 at 03:02:10PM +0100, Daniel P. Berrangé wrote:
>> > > > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
>> > > > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
>> > > > > > Personally I'd really like to avoid squashing them, because splitting
>> > > > > > up big patches is not merely to benefit the initial pre-merge review,
>> > > > > > but to also benefit people who need to debug stuff that's already
>> > > > > > merged and understand the scope of the intended change. So being able
>> > > > > > to look back at the changes in isolation after commit is still a big
>> > > > > > plus point.
>> > > > >
>> > > > > I would like to avoid squashing the patches as well and in most cases I
>> > > > > would object to it as well. I only suggested that to not break git
>> > > > > bisect.
>> > > > >
>> > > > > If we don't care about git bisect and the fact that we would not be able
>> > > > > to build libvirt correctly within these patches I'm OK with pushing it
>> > > > > without squashing.
>> > > >
>> > > > git bisect reliabity is key, so I reluctantly think we'll need to
>> > > > squash. I don't want to hit a pathc in this series with a bisect
>> > > > and be unable to continue the bisect due to inability to build the
>> > > > code.
>> > >
>> > > I can try to rearrange the patches to not break git bisect. It will
>> > > still require some script to be used for git bisect to detect if it
>> > > should run autotools or Meson.
>> > Maybe there's a reasonable tradeoff - instead of a 350 patch series,
>> > just a 10-20 patch series.
>> One other option would be a semi-linear merge. bisect would try the commit
>> before the rewrite and after, if both of them worked or both were broken then it
>> will not try the commits in the middle. If it does, then you know it was
>> because of the autotools=>meson rewrite. You will not break git-bisect and
>> you'll keep the history of the commits.
>I'm not sure I follow exactly what you are saying here, so let me try to
>illustrate what I think you mean and you can correct me.
> - The current repo has commits A, B and C
> - The Meson series has commits R, S, T and U
> - After meson, we add commits H, I and J
>IIUC, by "semi-linear merge" you mean a graph that looks
> | |
>Now we notice a regression at J and know the last good commit was B.
>IIUC you're saying that when "git bisect" runs it will stop on
>commits 'C' and 'H', and only bisect into R, S, T, & U, if
>the results of C & H show the problem is in the meson series.
>That would certainly be nice, but I can't find any documentation
>that clearly says this is what git bisect will do.
>The docs I see merely say that bisect will look for a commit half way
>between the current good & bad markers, but doesn't clarify what
>"half way" means when there are two possible paths to follow in
>the graph. You seem to be saying it will choose the shorter of the
>two paths, but I don't see that mentioned anywhere. I could easily
>see it deciding the "S" was the first half-way points to try, not
>C or H.
>If someone can point me to credible docs explaining what git does
>wrt merges I'd be interested if I'm right or wrong.
Thank you for correcting me. I genuinely believed that this was happening in
another project that I was bisecting, but I should've checked more.
I spent some more time looking at the workarounds and there are ways how to
achieve what I described. Unfortunately it is not built in the bisect command
itself and there is nowhere to supply your own bisect helper or list of skipped
commits per-repo (which would be pretty easy and helpful, actually). Anyway,
whatever does not work automatically with the unmodified `git bisect` command is
not going to be helpful, no matter how much we'd document it.
One other idea would be to have a Makefile (or some other mean) that just tells
you what to do if you got to any of the commits in the middle a bisect. But
maybe I'm overthinking it.
Sorry, let's leave this, I guess. I do not have any time to look at adding the
feature in git :)
>|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org -o- https://fstop138.berrange.com :|
>|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 833 bytes
Desc: not available
More information about the libvir-list