Kieran Kelleher
2012-07-17 17:22:54 UTC
Hi all, especially active Wonder-committers,
Introduction
--------------
integration and master had diverged since '1c15dd97e6aeed49bbe292249cc892d5288776d2' (Feb 29 2012).
The original plan with integration was that commits that survived for at least a month in integration without
breakage or bugs would be deemed worthy of merging to master.
Meanwhile, we began a habit of cherry-picking from integration, somtimes making slight modifications to cherry-picked
commits and making it very difficult as time went by to reconcile what was really in one month old integration that was not in master, even with git commands that are designed to figure this out.
Solution
---------
In any case, I have attempted to merge integration from a month ago to current master, choosing commit 6154e359 on integration as a logical month-old merge point. I have pushed this temporarily to wonder branch temp/MergeOneMonthIntegrationToMaster.
I would really like anyone who works with source to checkout this branch and work with it this week, run any tests (selenium, functional, JUnit or otherwise) on your projects to make sure we have no bugs introduced by this merge.
Also, I am asking wonder committers to NOT commit to master until we resolve this divergence.
If all goes well, this merge will be shifted to master and then we can from then on ONLY merge integration commits that are a month old PERIODICALLY (1-4 weeks intervals).
If anyone objects to this merge commit moving to master branch on this Friday, Jul 20th, speak up now :-)
Prevention
-----------
* ONLY fast-forward merge commits from integration to master that are a month old PERIODICALLY (1-4 weeks intervals).
* log can be used to pick a month old (or older) merge commit on integration each time we update master, and thus ideally, as long as we are not fiddling with and cherry-picking into master, we will always have easy, reliable fast forward merges each time we update master.
* merge-base can be used to find the current common ancestor of integration and master
* please avoid cherry-picking stuff into master. All commits (except important hotfix/bug-fix for example) should incubate in integration for a month before being ff-merged to master.
* Also, remember integration is not a testing ground, it is a place for committers to bring in contributions that they have reviewed and approved. Contributions should still be by pull request. Contributors should carefully test and review their code quality before committing. Controversial pull requests might need to be reconsidered and/or rejected. :-)
Merge Details
---------------
FYI, a few merge strategies and options were tried, all of which resulted in
130+ conflicts. The final merge command (resulting in just 9 conflicts) was:
git merge -s recursive -Xpatience -Xtheirs -Xignore-all-space 6154e35930182cabcb4263e92f47de27c6c4fefe
Conflicts:
.cvsignore
Examples/Ajax/JqueryMobileExample/.gitignore
Examples/Ajax/MooToolsExample/build.xml
Examples/Misc/ERPDFExamples/.gitignore
Frameworks/Ajax/Ajax/Support/yuicompressor-2.4.2.jar
Frameworks/Ajax/Ajax/Support/yuicompressor-2.4.6.jar
Frameworks/Ajax/Ajax/Support/yuicompressor-2.4.7.jar
Frameworks/Ajax/MooTools/.gitignore
Frameworks/Ajax/MooTools/build.xml
In addition to conflicts, the following files needed corrections after the merge to fix compilation errors. Issues
were mostly missing imports and duplicate identical methods:
Frameworks/Ajax/Ajax/Sources/er/ajax/AjaxDatePicker.java
Frameworks/Core/ERExtensions/Sources/er/extensions/ERXExtensions.java
Frameworks/Core/ERExtensions/Sources/er/extensions/foundation/ERXStringUtilities.java
Frameworks/Core/ERExtensions/Sources/er/extensions/jdbc/ERXSQLHelper.java
Introduction
--------------
integration and master had diverged since '1c15dd97e6aeed49bbe292249cc892d5288776d2' (Feb 29 2012).
The original plan with integration was that commits that survived for at least a month in integration without
breakage or bugs would be deemed worthy of merging to master.
Meanwhile, we began a habit of cherry-picking from integration, somtimes making slight modifications to cherry-picked
commits and making it very difficult as time went by to reconcile what was really in one month old integration that was not in master, even with git commands that are designed to figure this out.
Solution
---------
In any case, I have attempted to merge integration from a month ago to current master, choosing commit 6154e359 on integration as a logical month-old merge point. I have pushed this temporarily to wonder branch temp/MergeOneMonthIntegrationToMaster.
I would really like anyone who works with source to checkout this branch and work with it this week, run any tests (selenium, functional, JUnit or otherwise) on your projects to make sure we have no bugs introduced by this merge.
Also, I am asking wonder committers to NOT commit to master until we resolve this divergence.
If all goes well, this merge will be shifted to master and then we can from then on ONLY merge integration commits that are a month old PERIODICALLY (1-4 weeks intervals).
If anyone objects to this merge commit moving to master branch on this Friday, Jul 20th, speak up now :-)
Prevention
-----------
* ONLY fast-forward merge commits from integration to master that are a month old PERIODICALLY (1-4 weeks intervals).
* log can be used to pick a month old (or older) merge commit on integration each time we update master, and thus ideally, as long as we are not fiddling with and cherry-picking into master, we will always have easy, reliable fast forward merges each time we update master.
* merge-base can be used to find the current common ancestor of integration and master
* please avoid cherry-picking stuff into master. All commits (except important hotfix/bug-fix for example) should incubate in integration for a month before being ff-merged to master.
* Also, remember integration is not a testing ground, it is a place for committers to bring in contributions that they have reviewed and approved. Contributions should still be by pull request. Contributors should carefully test and review their code quality before committing. Controversial pull requests might need to be reconsidered and/or rejected. :-)
Merge Details
---------------
FYI, a few merge strategies and options were tried, all of which resulted in
130+ conflicts. The final merge command (resulting in just 9 conflicts) was:
git merge -s recursive -Xpatience -Xtheirs -Xignore-all-space 6154e35930182cabcb4263e92f47de27c6c4fefe
Conflicts:
.cvsignore
Examples/Ajax/JqueryMobileExample/.gitignore
Examples/Ajax/MooToolsExample/build.xml
Examples/Misc/ERPDFExamples/.gitignore
Frameworks/Ajax/Ajax/Support/yuicompressor-2.4.2.jar
Frameworks/Ajax/Ajax/Support/yuicompressor-2.4.6.jar
Frameworks/Ajax/Ajax/Support/yuicompressor-2.4.7.jar
Frameworks/Ajax/MooTools/.gitignore
Frameworks/Ajax/MooTools/build.xml
In addition to conflicts, the following files needed corrections after the merge to fix compilation errors. Issues
were mostly missing imports and duplicate identical methods:
Frameworks/Ajax/Ajax/Sources/er/ajax/AjaxDatePicker.java
Frameworks/Core/ERExtensions/Sources/er/extensions/ERXExtensions.java
Frameworks/Core/ERExtensions/Sources/er/extensions/foundation/ERXStringUtilities.java
Frameworks/Core/ERExtensions/Sources/er/extensions/jdbc/ERXSQLHelper.java