Hi all,
It's been some weeks since we've started discussing how to refactor
JSDT repositories, and a lot of new ideas came to the discussion and
blurred the initial plan.
As a reminder, the idea behind it is to be able to build and test
the whole JSDT with a singe "mvn clean verify", for quality sake and
to lower entry barrier for contributors to run tests. It is
something that we, in the JBoss & Exadel team, feel very
important for our productivity on this project and also to increase
the durability of the JSDT project by making it more accessible for
new contributors.
So we need to define a new plan that allow to make progress as I
feel that the more we discuss it, and the less things are happening.
I re-read the discussion and found the 2 following ideas with there
benefits and drawbacks:
#1: Merge master branches in webtools.jsdt.core
+ Everyone first agreed it was a good idea
+ it's relatively easy and it can be done in one or two hours of
work. 2 merge commits + adapt map files on master.
+ We don't need an additional repo and we can work with the ones
we already have
- It makes master and maintainance branch use different
repositories/workflows, for example, it makes cherry-pick and
backport of changes a bit more difficult (but not impossible)
#2: Merge all active branches (master and maintenance) in
webtools.jsdt.core, and then archive webtools.jsdt debug and tests
repo.
+ More consistency between master and maintenance
+ It's relatively easy and it can be done in about one a day of
work (counting ~2h for each branch to merge them). This can be done
branch after branch (so that solution #1 can be interpreted as a
first increment solution #2
+ We don't need an additional repo and we can work with the ones
we already have
- As we can't merge tags with same name (a tag == a commit,
mustn't be changed after for history sake), then we'll most likely
have to leave tags in their former repository.
. Although they won't be active any more, older repositories must
be kept and archived for history sake (they contain tags). If
repostories are archived and their URL change, most likely older
version of map files won't work any more.
Currently, it looks like we're in a chicken-egg problem because
we're waiting for master branches to be made read-only (
https://bugs.eclipse.org/bugs/show_bug.cgi?id=424538 ) before doing
anything, but our inability to agree on clear plan and action items
make that webmasters left the discussion and won't do anything until
a JSDT project lead give an explicit +1 on this.
Some have said that it is not really necessary to make master branch
read-only before merging and that we can start merging master
without it. I agree with them and I'm personally in favor of just
doing changes since I believe if we do it fast enough there is a
very low risk of missing an incoming commit.
So I suggest the following action items:
1. Apply step #1 and merge master branches. Here is a branch that
does that, as described in
https://bugs.eclipse.org/bugs/show_bug.cgi?id=424210#c5 :
https://github.com/mickaelistria/webtools.jsdt.core/tree/424210-master
. This branch is based on current HEADs for master branches (you can
find the 3 HEADs in the history). You can see that this branch
builds fine locally with:
$ git fetch
https://github.com/mickaelistria/webtools.jsdt.core.git
424210-master
$ git checkout FETCH_HEAD
$ mvn clean verify -Dbuild-individual-bundles -DskipTests
And you can easily merge it into JSDT repo with
$ git push
git://git.eclipse.org/gitroot/jsdt/webtools.jsdt.core.git
FETCH_HEAD:master
2. Ask webmaster to make master branches read-only and if necessary
port commits to this new branch.
3. Create a tag and update map files on master to use this new repo
4. Profit: enable tests for every contribution via Gerrit, create a
category.xml file to be able to test JSDT build output without
having to rebuild all webtools, enable Sonar, Jacoco...
Then repeat for all necessary branches (on demand).
So, can a JSDT project lead give a +1 and merge the branch I suggest
so we can make some progress?
Cheers,
|