[Development] Instructions how to set up cherry-picking between Qt5 and Qt4 repositories?

ext-sami.1.rosendahl at nokia.com ext-sami.1.rosendahl at nokia.com
Tue Jan 17 10:27:33 CET 2012


From: development-bounces+ext-sami.1.rosendahl=nokia.com at qt-project.org [development-bounces+ext-sami.1.rosendahl=nokia.com at qt-project.org] on behalf of Rosendahl Sami.1 (EXT-Reaktor/Helsinki)
Sent: Tuesday, January 17, 2012 10:35 AM
To: development at qt-project.org
Subject: [Development] Instructions how to set up cherry-picking between Qt5 and Qt4 repositories?

Hi

I am backporting fixes I have pushed to Qt5 to Qt4.8 now that 4.8 is available in gerrit. I got comments to my Qt4.8 patches that I should preferably cherry-pick the Qt5 commits to Qt4. I do not know how to set up my environment to enable the cherry-picking because of the separate Qt5 and Qt4.x repositories and their different directory structures.

I found the tool qtrepotools/bin/git-qt-cherry-pick in Qt5 repository, but have not been able to figure out how to use it or how to set up the repositories to enable its use. Lacking the cherry-picking capability I have moved commits between Qt5 and 4.x using git format-patch & apply and have edited the paths in the patches to match the target repo.

Any help or instructions for setting up cherry-picking would be much appreciated.

Regards,
Sami R
________________________________
(Apologies for possibly weird message formatting, using a webmail client)

Was able to figure something out:
- git-qt-cherry-pick seems to prefer that the Qt4.x and Qt5 repository directories are siblings in the same directory and the Qt5 path (looking from the Qt4.x repository path) is ../qt5
- The <repo> in the script usage means the base name of a Qt5 subrepository (e.g. 'qtbase')

Alas, the script still fails:
$ ../qt5/qtrepotools/bin/git-qt-cherry-pick -l qtbase b851c764a61c0de781ef3447230a0a6a3f4a0ed9
Porting from qt5/qtbase to qt
Other path is ../qt5/qtbase
Applying: Fix stack overwrite in QDBusDemarshaller
fatal: sha1 information is lacking or useless (tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
Patch failed at 0001 Fix stack overwrite in QDBusDemarshaller
When you have resolved this problem run "git am --resolved".
If you would prefer to skip this patch, instead run "git am --skip".
To restore the original branch and stop patching run "git am --abort".
Aborting at b851c764a61c0de781ef3447230a0a6a3f4a0ed9
$

I am assuming that the message "Repository lacks necessary blobs to fall back on 3-way merge." may be related to the note "it's strongly recommended to have linked object stores between the repositories to enable 3-way merges." in this announcement about qt-cherry-pick I was able to find: http://lists.qt-project.org/pipermail/development/2011-November/000483.html.

I don't know how to set up "linked object stores between the repositories". I did set up the Git Grafts as instructed in the Qt5 README, but that did not help with the git-qt-cherry-pick.

Sami R
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20120117/00f7cc56/attachment.html>


More information about the Development mailing list