[Development] Using Git notes to reflect actual cherry-picks

Thiago Macieira thiago.macieira at intel.com
Sat Feb 12 08:04:25 CET 2022


Implementation: https://codereview.qt-project.org/c/qt/qtbase/+/395465	
(I don't think qtbase is the right place for this)

TL;DR:
I'd like to propose we use Git notes to include information into commits about 
successful cherry-picks. I have the scripts done, see above. All we need is 
that they are run weekly or the results pushed into the repository.

Long version:
The Pick-To footer is very useful so we don't have to remember to actually 
cherry-pick a commit when it's done integrating: the bot will take care of 
doing that for us and let us know if it fails. However, it's not reliable:

* a change may be abandoned in Gerrit after the bot started with it (too 
   difficult to continue, author didn't realise it didn't apply, etc.)
* a change may be cherry-picked without the footer, either in Gerrit or 
   directly using git cherry-pick -x

For that reason, I'd like to ask that we add the use of notes, to indicate 
cherry-picks that have succeeded. Moreover, it will tell the user what commit 
exists in that particular branch. For example, after running the script, I see 
for a commit of mine:

    Pick-to: 6.2.3 6.2 6.3
    Change-Id: Icad7c1bad46a449c8e8afffd16cb743e622b3405
    Reviewed-by: Lars Knoll <lars.knoll at qt.io>

Notes:
    Cherry-picks:
        6.3: 34545edc501947a498bc6b1873624a5e307a7b1a

That tells us that the cherry-picks to 6.2 and 6.2.3 aren't present (I 
abandoned after conflicts happened).

Similarly:
    
    Fixes: QTBUG-99668
    Pick-to: 6.3 6.2 6.2.3 5.15
    Change-Id: I07321ad91be5adce524be18e4ab82eee7110dc6a
    Reviewed-by: Mårten Nordheim <marten.nordheim at qt.io>

Notes:
    Cherry-picks:
        6.2.3: 4db05007d72963c082f3ffdfcc7a68c1fb53c266
        6.3: 84ab463aa3e75c2b78f99d62c95577c6a0b5950f

This one looks wrong: 6.2.3 is present but not 6.2, So I searched Gerrit and 
indeed, the change simply failed in the CI 3 weeks ago and no one pushed the 
button again.

The scripts are pretty fast, but I've also made them work incrementally. See 
the attached run example.
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel DPG Cloud Engineering
-------------- next part --------------
tjmaciei at tjmaciei-mobl5 ~/src/qt/qt6/qtdeclarative (dev u+3) $ git fetch
remote: Counting objects: 122, done.
remote: Compressing objects: 100% (121/121), done.
remote: Total 122 (delta 93), reused 0 (delta 0)
Receiving objects: 100% (122/122), 34.05 KiB | 223.00 KiB/s, done.
Resolving deltas: 100% (93/93), completed with 53 local objects.
>From https://code.qt.io/qt/qtdeclarative
   49ef96b559..7ef9b094c2  dev          -> origin/dev
   9dd1968924..561047e095  6.3          -> origin/6.3
   0bcce743bd..02db3796d6  wip/iosstyle -> origin/wip/iosstyle
tjmaciei at tjmaciei-mobl5 ~/src/qt/qt6/qtdeclarative (dev u+3-11) $ ../qtbase/util/cherrypicknotes/update-all.zsh 
Scanning branch 6.0...
No changes.
Scanning branch 6.0.0...
No changes.
Scanning branch 6.1...
c46b330fa721e82849194472651430ce255d06e1 cherry-picked from a5f0361622eb08eab6c3474d5fc249d1962e3d1e
No changes.
Scanning branch 6.1.0...
2423608d6c0fa55595db3fe0138b0be94307596b cherry-picked from cc58bdfb57f6fe15113b797cad4d0486c9957ac6
Scanning branch 6.1.1...
No changes.
Scanning branch 6.1.2...
No changes.
Scanning branch 6.1.3...
No changes.
Scanning branch 6.2...
c2b6f09d280db2862e9559590312b612b3dd42d0 cherry-picked from a8c729d83979fb0b9939044d246e73b1d578e65b
No changes.
Scanning branch 6.2.0...
No changes.
Scanning branch 6.2.1...
No changes.
Scanning branch 6.2.2...
No changes.
Scanning branch 6.2.3...
No changes.
Scanning branch 6.3...
561047e095c136474b7d433372c5f779f82d7982 cherry-picked from ce942b2cbd97c82bf6e60e936e5f1601994b6d17
9c9d6410cae82aa5d624b7bc2654711f34d6588d cherry-picked from 4d98aa998eceb53ce616e9111553b8fdc5fad906
9dd1968924f88996d78e3e0d8fa2c82d38ccf37e cherry-picked from 2014101583b89128960f645e57192d1d475767e6


More information about the Development mailing list