Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[wtp-dev] Actions for JSDT Git repo refactoring?

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,
--
Mickael Istria
Eclipse developer at JBoss, by Red Hat
My blog - My Tweets

Back to the top