Hello Everyone, I refer to the discussion about moving to git initiated by Hans Bakker back in April. After a long, long discussion followed by a vote the community agreed that we should develop a more elaborate and formal workflow to vote on, as the initial vote was not detailed enough. Based on that, I have proposed a workflow to see if people are interested in it. But the topic just slowly died out.
The links to both threads are listed below. I understand that there was a lot of interest in the community as the thread was really long. I would like to revive the discussion and see if people are still interested in implementing / amending the proposed workflow if they find it appealing. discussion and vote thread : http://ofbiz.markmail.org/message/ldo77qz34kte4gat?q=move+to+git+from:%22Hans+Bakker%22+list:org.apache.ofbiz.dev&page=1 workflow proposition thread : http://ofbiz.markmail.org/message/nkthnbsgt37orynu?q=git+commit+workflow Taher Alkhateeb ----- Original Message ----- From: "Taher Alkhateeb" <slidingfilame...@gmail.com> To: dev@ofbiz.apache.org Sent: Wednesday, 24 June, 2015 5:25:31 PM Subject: Re: git commit workflow for ofbiz Hi Jacques, Very good read, thank you for sharing. The person who wrote complaining about gitflow (I think Adam Ruka) makes a good point. He prefers linear to branched history. I do not mind branched history myself as I know how to navigate it but to each his own. Either way, The workflow can be accomplished the way he suggested by rebasing rather than merging the history and making a few other changes like dropping "develop". It is up to community to decide, and git is flexible enough to accommodate any model. Taher Alkhateeb ----- Original Message ----- From: "Jacques Le Roux" <jacques.le.r...@les7arts.com> To: dev@ofbiz.apache.org Sent: Wednesday, 24 June, 2015 4:19:42 PM Subject: Re: git commit workflow for ofbiz Le 24/06/2015 14:06, Jacques Le Roux a écrit : > If you get a chance to read these articles I highly recommend them > > http://www.alwaysagileconsulting.com/organisation-pattern-trunk-based-development/ > Of course don't miss http://www.alwaysagileconsulting.com/organisation-antipattern-release-feature-branching/ Jacques > > http://endoflineblog.com/gitflow-considered-harmful > http://endoflineblog.com/follow-up-to-gitflow-considered-harmful > > Jacques > > > Le 12/05/2015 19:28, Adam Heath a écrit : >> Nice. This is quite thorough. There is an option missing. SVN committers who >> use git offline. In this case, their changes can be published as >> primary SVN branches, for collaboration.. See OFBIZ-6271 in JIRA, and as an >> SVN branch, for an example. >> >> I've read through most of what follows, and am in agreement, but I'm dealing >> with hardware problems, so I need to let it sink in first. >> >> On 05/12/2015 04:43 AM, Taher Alkhateeb wrote: >>> Hi everyone, >>> >>> This email refers to the thread for voting to move to git (link at bottom) >>> in which the vote decision was to delay and elaborate on the workflow >>> first. I am not well versed in ASF guidelines and appreciate any help and >>> feedback and also please note some of the below is my opinion and not >>> necessarily 100% factual. >>> >>> ## First, identified problems >>> >>> 1. patches can quickly be outdated if not applied quickly >>> 2. big patches are hard to audit and not desired nor preferred and It is >>> hard to break big patches to smaller ones because if any of those patches >>> is outdated or modified then everything needs to be re-patched >>> 3. to collaborate with other people (non-committers) freely on big >>> features, we need a separate branch. On svn this is lengthy and heavily >>> controlled. If we create a git repository then we need to constantly update >>> from svn and merge . Another solution is to clone the ofbiz read-only >>> git repository but then there are some patch issues to convert them to >>> clean svn patches (I faced a few including things like white space) >>> 4. a lot of _local_ offline freedom to branch, merge, commit, share and >>> experiment cannot be easily done without initiating a local git repository >>> which triggers the other problems identified above. >>> 6. There are too many public branches in the repositoy. Some are not active >>> nor complete and quite old >>> >>> ## Second, how does git provide solutions >>> >>> So, adopting git in relation to the above mentioned problems solves them as >>> follows: >>> >>> 1. even if a patch gets outdated, I can easily recreate it by switching to >>> a branch that I created and has the work (e.g. OFBIZ-12345), merging >>> everything from trunk and re-patching >>> 2. to allow for proper feedback by community, a pull request can replace a >>> big patch and that request can hold an X amount of commits each with >>> its own message and diff details. If changes happen to any of the commits, >>> then reconciling that into the code base is minor, you just branch >>> again, do it, and merge. Furthermore, I suggest to follow the guidelines >>> which recommend rebasing before pushing to a shared repository to keep a >>> nice linear history as much as possible as shown here -> >>> https://git-wip-us.apache.org/docs/committer-practices.html >>> 3. large features can be done in a remote repository in github or bitbucket >>> with pull requests when complete and ready for review. >>> 4. the issue is immediately solved with git which is not only local but >>> much, much faster >>> 6. We do not need to pollute the main repository with branches if we decide >>> on a distributed model like git with remote repositories to contribute >>> to the project with pull requests. >>> >>> ## Third, proposed workflow >>> >>> I will make a distinction between small features / bug fixes and large >>> features. >>> >>> ### small features >>> >>> Small features follow the exact same workflow that currently exists in svn. >>> You do your work, diff it, and attach the patch to a JIRA and request >>> a commit from one of the committers. >>> >>> ### large features >>> >>> For large features usually multiple people need to collaborate on a >>> separate branch. Here is where git shines and the distributed model kicks >>> in: >>> 1. A JIRA is created for a large feature >>> 2. The team (not necessarily having a committer) creates a remote >>> repository which itself may have many branches with the master branch >>> having all >>> the work agreed upon and merged (actually, rebased) >>> 3. The collaboration for this branch happens in the JIRA including >>> discussions, comments, and even links to the commits etc ... >>> 4. A request is made to a committer to make a pull request from the >>> repository after reaching a certain milestone with consensus from the >>> community of course >>> 5. Here, for extra safety, the branch model may have a trunk and a develop >>> branches. Everything is pulled to the develop branch and trickles down >>> to the master branch after thorough and proper testing. >>> >>> The above workflow can also adhere to the now famous Vincent Driessen git >>> branching model found here -> >>> http://nvie.com/posts/a-successful-git-branching-model/ >>> >>> I am not sure whether this proposal is enough or correct so I appreciate >>> your guidance and feedback to fix whatever needs fixing. >>> >>> Taher Alkhateeb >>> >>> original voting thread: >>> http://ofbiz.markmail.org/search/?q=move%20to%20git#query:move%20to%20git+page:1+mid:p62ofojcbb3oyoi4+state:results >>> >>> >> >> >