[Development] Qt6 repo

Volker Hilsheimer volker.hilsheimer at qt.io
Thu Jan 14 11:26:21 CET 2021

> On 14 Jan 2021, at 10:49, Benjamin TERRIER <b.terrier at gmail.com> wrote:
> On Thu, 14 Jan 2021 at 08:21, Nibedit Dey <nibedit.dev at gmail.com> wrote:
> Thank you everyone for the suggestions.
> I posted in the development group as there was less participation on the topic in the interest group.
> Below are my suggestions:
> 	• Create a clean qt6 supermodule for better maintainability. It's still not too late.
> 	• If the qt5 supermodule is renamed, then it will still have many qt5 branches. This may create confusion while looking for specific branches.
> 	• The use of a script is a good idea, but it needs to be mentioned in the README document. Else new Qt developer or contributors may face difficulties while building from source.
> Actually, I agree with Thiago and think that scripts to handle the branches is a bad idea and that the current perl script should be gone.
> All is required for new Qt developers is:
> 1. A good branch naming scheme (this we have)
> 2. Rely on standard git submodule mechanisms
> 3. A clear documentation of the branch naming scheme and branching conventions
> Adding a script only adds a black box and makes things confused. What is the script doing? Is it doing special stuff ? Can I use a git submodule command or will it break the magic the script did and I will have to rebuild everything?
> If the goal is to ease the entry of new developers, the use of industry standard tools is to be favored against the use of helper scripts.
> Also I can see the point of renaming the 'qt5' repo to 'qt' since it contains Qt 6 and Qt 5, but I cannot see the point of splitting the repo in 2 ('qt5' and 'qt6').

If we don’t have any script, then people need to do the gerrit plumbing themselves. That’s not exactly lowering the entry level threshold, I think. I agree, we should not require scripts beyond that; fetching and managing the code should be trivial using standard git commands.

Here’s the specific problem i have with git submodules and worktrees:

$ cd ~/qt
$ git clone git://code.qt.io/qt/qt5.git
$ cd qt5
$ ./init-repository blah
$ git submodule foreach ‘git worktree add ~/qt/5.15/$name 5.15'
$ git submodule foreach ‘git worktree add ~/qt/6.0/$name 6.0’
$ git submodule foreach ‘git worktree add ~/qt/dev/$name dev’

Now I have a lovely set of worktrees, I can work on 5.15 by cd’ing into ~/qt/5.15, and on dev by cd’ing into 6.0. I can

$ cd ~/qt/5.15/qtbase
$ git cherry-pick -x $commitsh_in_dev

and it works.

But: ~/qt/dev is empty; ~/qt/5.15 is empty. No toplevel build system (see earlier reply; in Qt 6 I find it really valuable), and no git submodules (which I don’t care about because I never use them; I just fetch and update for each worktree when I need to). I can shoehorn them in there, but it’s messy. Maybe someone has a better idea how that can be done?

From what I see, what I’d want is for the toplevel build system files to live in a separate repository. Then I can just add another worktree for that as well, and ignore that we are using git submodules. If I run into issues because changes between modules break things, then I can check out a consistent set based on the dependencies.yaml data (see earlier email). Those who want to use git submodules may do so.


More information about the Development mailing list