'latest' branch for kde-qt (was: kdelibs (tests) doesn't build against qt 4.6.0-tp1)

Thiago Macieira thiago at kde.org
Thu Sep 17 21:30:36 BST 2009


Em Quinta-feira 17. Setembro 2009, às 18.30.16, Matthew Woehlke escreveu:
> Thiago Macieira wrote:
> > qt-copy was the import of a tarball.
> 
> ...which is convenient for people (/me waves) that want latest Qt
> (especially when trunk occasionally depends on a pre-release), but
> usually aren't interested in making changes to Qt.

Indeed, but this is the answer to the call for more transparency. I understand 
that some people don't need this more data.

There is a way to update to "the current latest branch". There's a branch link 
called "HEAD" in the repository that points to the latest. You just have to 
every now and then verify where it's pointing.

But if you're going to do that, you may as well just look at the website.

> > Forcing the update on you will not work. The reason why is because 4.5.2-
> > patched contains commits that are not and will not be in 4.6.
> 
> As a serious question, why not? If they were legitimate patches for 4.5,
> why are they not acceptable for 4.6? If they are, they should be kept,
> no? If they are no longer applicable, then they should be reverted.
> Either way I don't see the problem.

There are various reasons why there are KDE patches that will not be in Qt. Off 
the top of my head:

1) patch was rejected by Qt development (example: 0180)
2) patch breaks binary, source and/or behaviour compatibility (example: 0231)
3) patch is specific to qt-copy (example: 0209)
4) patch will be in the next minor version of Qt, not patch-level

Those are patches that will persist. Besides those, there are patches that are 
either wrong or have been superseded by other changes in Qt (0280 for 
example), patches that haven't been processed yet by Qt developers, etc.

Even if all patches had been accepted for the next patch-level release, when 
they are merged into Qt, they are usually rebased, which means SHA-1s change.

The way I create the branches in kde-qt.git allows us to "start anew" at every 
Qt release, without holding to all previous patches that we had, in the 
history.

> > Git supports
> > updating branches, as long as the new branch tip is a descendant of the
> > current one.
> >
> > If it doesn't contain all commits in the current branch tip, it's called
> > history rewriting. I can't do that. Well, I can, but it'll break for you
> > later.
> 
> Would this work?
> - check out 'latest'¹
> - revert patches that won't be kept after the update

Revert by applying the reverse of the patch? Yes. But then we have two changes 
on top of Qt, instead of 0, per patch that won't be kept.

We cannot rewrite history if we expect "git pull" to work.

> - merge the next branch (e.g. 4.6-stable)
> - tack on an "adjustment commit" dumping any changes from the previous
> 'latest' that aren't in the new upstream²
> - push this as new 'latest'
> - pull from the new "parent" (in this example, 4.6-stable) frequently so
> that the head of 'latest' tracks the head of the parent and push the result

It's possible to do everything that you're saying, except for removing 
completely the old patches.

The only possibility is to keep them and then apply the reverse of them. 
They'll be in history forever this way and KDE's delta on top of Qt will never 
be 0.

The current solution allows us to "start anew". It's also easy for packagers 
to extract all changes. Though I strongly advise against any packager taking 
kde-qt changes wholesale -- please at least understand what the package is 
doing.

If we go with the patch + reverse patch solution, then the script I gave 
packagers to extract commits will have those two patches too.

> Is it perfect? No. Maybe not even "pretty", and you probably wouldn't
> want to submit patches off of it. Fortunately, git makes it really easy
> to migrate patch sets :-).
> 
> I'd be willing to do the branch cutovers (but someone will need to help
> me with what patches should be kept/dropped). I'm /not/ willing to do
> updates by hand, but I would hope that can be automated.

-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
  Senior Product Manager - Nokia, Qt Development Frameworks
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358

Qt Developer Days 2009 | Registration Now Open!
Munich, Germany: Oct 12 - 14     San Francisco, California: Nov 2 - 4
      http://qt.nokia.com/qtdevdays2009
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20090917/abc067c6/attachment.sig>


More information about the kde-core-devel mailing list