Hi,

For me, the best you can do to avoid this kind of problem is to avoid 
committing directly into the target branch by always submitting a PR for any 
change. And then, once the build is green, merge the PR with "Squash and merge" 
which is the default action on Camel. The action "Rebase and merge" should be 
avoided since the build result reflects the final state of the branch, not the 
intermediate states. In case you need some changes to fix the build, make sure 
to re-synchronize the source branch with the target branch, especially in case 
the changes are not done on the same day because the Camel branches are 
modified very frequently and each change can potentially be in conflicts with 
yours.

it is a quite cumbersome approach but I don't see any safer way.

Regards,
Nicolas
________________________________
From: Otavio Rodolfo Piske <angusyo...@gmail.com>
Sent: Thursday, June 22, 2023 08:53
To: dev@camel.apache.org <dev@camel.apache.org>
Subject: Re: Some thoughts on bisecting Camel and our git commit practices

Hi,

Release-tagged commits don't help here. The whole point of bisecting is
finding out precisely which commit introduced a certain behavior or bug, so
that I and other committers can diagnose, document and fix the problem.
It's not possible to do that effectively with just release-tagged commits.

Also, I don't think each commit needs to be "release quality": that would
be too much right now. I do think, however, that each commit should be
compilable. Consider, for instance, the following commit pattern I notice
when bisecting the code:

commit1: TASK111: did some stuff  ---> not compilable
commit2: TASK111: did some stuff  ---> compilable
commit3: TASK111: did some stuff ---> not compilable
commit4: TASK111: did some stuff ---> compilable

Git bisect run is smart enough to skip commit2 and commit3 if given a
proper exit code (that's what we do). However, the problem gets worse once
these compilable scripts start to pile up, such as:

commit1: TASK111: did some stuff  ---> not compilable
commit2: TASK111: did some stuff  ---> compilable
commit3: TASK111: did some stuff ---> not compilable
commit4: TASK111: did some stuff ---> compilable
commit5: TASK222: did some stuff  ---> not compilable
commit6: TASK222: did some stuff  ---> compilable
commit7: TASK222: did some stuff ---> not compilable
commit8: TASK222: did some stuff ---> compilable

At some point, the bisect execution runs out of skippable commits and you
have to: a) test manually, b) restart the bisect operation with different
good/bad commits, or c) investigate the list of skipped commits one by one.

The same can happen when merging community contributions composed of
multiple commits.

So, I think we can improve here by doing 2 things:

1. When commiting the work on a task, making sure that every commit is
compilable. For instance, in the pattern above, by squashing
commit1+commit2, commit3+4, etc.
2. When merging community contributions with multiple PRs, squashing the
contribution before merging - if suspicious that one or more of the commits
introduce uncompilable changes.

If we start doing this now, bisecting will be much easier in the future.

Kind regards

On Thu, Jun 22, 2023 at 8:08 AM Petr Kuzel <petrku...@eurofins.com.invalid>
wrote:

> Hi Otavio,
>
> the codebase does not have the release quality
> after each commit. Test-driven development could
> even invite devs to separately commit failing tests
> as a proof they are effective.
>
> On contrary the release-tagged commits should
> be safe. Would not help you to focus
> on the release-tagged commits only, pls?


>   Hope it helps
>   Cc.
>
> --
>   Mr. Petr Kužel, Software Engineer
>   Eurofins International Support Services s.à r.l.
>   Val Fleuri 23
>   L-1526 LUXEMBOURG
>
> -----Original Message-----
> From: Otavio Rodolfo Piske <angusyo...@gmail.com>
> Sent: Wednesday, June 21, 2023 11:17
> To: dev <dev@camel.apache.org>
> Subject: Some thoughts on bisecting Camel and our git commit practices
>
>
> Folks,
>
> You may have seen that PRs constantly report failures when testing changes
> on core. This is almost always caused by flaky tests.
>
> I have been trying to find the root causes of those flaky tests. Quite
> often this involves going all the way to early versions of Camel 3 to find
> stable executions of those tests.
>
> The investigation itself is mostly automated by using git bisect run ...
> This significantly improves the developer ability to find the root causes
> of issues.
>
> Despite all this automation, however, the task has been ... quite difficult
> and lengthy. Even considering the extensive resources I have access to
> (thanks to my employer), bisecting a single test failure can take several
> *days*.
>
> In particular, this investigation has been difficult because we have a huge
> amount of dirty commits on the tree: partially modified work, uncompilable
> changes, broken tests and more.
>
> While it's NOT my intention to suggest introducing/discussing a full blown
> clean commit policy, I do wonder if we have some room to discuss how we can
> improve the way we work to ensure that the tree is compilable and somewhat
> testable (and, possibly, enforce that).
>
> We cannot fix the git history of the project, but we can ensure that future
> investigation can be made much easier in the future.
>
> So, folks, does anyone have any suggestions about how we could improve
> here?
>
> Kind regards
> --
> Otavio R. Piske
> https://urldefense.com/v3/__http://orpiske.net/__;!!CiXD_PY!SZvpton5vuSh5elDATUqZmerIhuL7ZGmoTwQB-66e3u34QRJzR2DoTvCjF3miU2oF4glDqKC5VnT439E0B0$
>


--
Otavio R. Piske
https://urldefense.com/v3/__http://orpiske.net__;!!CiXD_PY!SZvpton5vuSh5elDATUqZmerIhuL7ZGmoTwQB-66e3u34QRJzR2DoTvCjF3miU2oF4glDqKC5VnTh1-lNIM$

As a recipient of an email from the Talend Group, your personal data will be 
processed by our systems. Please see our Privacy Notice 
<https://www.talend.com/privacy-policy/> for more information about our 
collection and use of your personal information, our security practices, and 
your data protection rights, including any rights you may have to object to 
automated-decision making or profiling we use to analyze support or marketing 
related communications. To manage or discontinue promotional communications, 
use the communication preferences 
portal<https://info.talend.com/emailpreferencesen.html>. To exercise your data 
protection rights, use the privacy request 
form<https://talend.my.onetrust.com/webform/ef906c5a-de41-4ea0-ba73-96c079cdd15a/b191c71d-f3cb-4a42-9815-0c3ca021704cl>.
 Contact us here <https://www.talend.com/contact/> or by mail to either of our 
co-headquarters: Talend, Inc.: 400 South El Camino Real, Ste 1400, San Mateo, 
CA 94402; Talend SAS: 5/7 rue Salomon De Rothschild, 92150 Suresnes, France

Reply via email to