Understanding your Workflow #1065
Comments
I don't know if there are rules for considering PR and merging them. About releases, a milestone is set to issues (and related PRs). When enough features are set to a milestone, a new milestone is create for the next version. When all issues (and PRs) of a milestone are closed, a new version is released. @DayS, correct me if I'm wrong. |
Thank you for your fast reply. I already guessed that @DayS is the only official contributer at the moment. from the release notes i got the following numbers
i wonder if it would be possible to change the way how PRs get into a release. it looks you do something like the git flow concept. but with develop changes keeping small to be prepared for a 3.0.x release and keeping all upcoming features in branches/PRs. with a look on the numbers above i even belive that there werent that much changes on develop after a release that the patch level update might even be possible right from devlop (only exception the 2.7->2.7.1 step but i think this was due to 3.0 development). that would result in an up to date 3.1-SNAPSHOT with latest features as soon as the changes are good to merge. this also reduces the maintenance on the PR itself like if PR 1 is ready but not merged and a month later someone starts PR 2 where stuff changed that is also changed in PR 1. now its time for a new release and PR 1 gets merged but that breaks PR 2 due to conflicts. with PR 1 merged as soon as its OK the month later started PR2 already has the PR1 changes and does not break anything. i hope you understand what i try to say. |
Congratulation! :) Let's hope the best for AndroidAnnotations. |
Thanks for the link about the git flow concept. @DayS, what do you think ? Is it the way you handled released ? |
Should we keep this open? |
@WonderCsabo I think that depends on how to handle this in the future. The question is, how do you three plan to continue? keeping PRs open until there is enough for a 3.2 or do it like in the last few weeks, merging when a change is ready for prime time. as i suggested, i would go the merge when ready way and actually target a 3.2 release. for the unexpected need of having a 3.1.1 that fixes some 3.1 bugs without adding new features one should take the 3.1 tag or the master branch (which seems to be in an unclean state compared to develop sightly off topic: |
We changed a bit how we handle PRs. We still put milestone on issues to set priorities between issues but we are now merging PRs when they are ready and reviewed (even if the issue has been set to a later milestone). |
@yDelouis I like to hear that. :)
We will see what the future brings. 👍 i think we can close this issue for now. |
This is the diff between master and develop. As you can see, only tag merge commits are on that, and some stale old commits. But i agree with you that master should be simply before dev. @yDelouis @DayS ? |
@WonderCsabo an ideal state in my point of view (and how we have it in my company) would be
|
I absolutely agree with you. Nice table btw. |
any idea when merging stuff for 3.2 starts? ;) if the plan to drop a new release every month is still present, stuff should get some time to be tested by snapshot users. |
I will have some time this week-end to work on AA. I hope I will be able to merge some PR. |
We already have PRs ready, but i do not want to touch the repo until the branching issue is not resolved. |
that's why i asked ;)
@WonderCsabo i know. thats why i added a PR that should fix the issue between master and develop. to avoid this in the future @DayS (or whoever builds the next release) should not merge the maybe it is worth checking the Maven JGit-Flow Plugin for releases as it does the branching, merging and tagging stuff for you. |
Hi, Sorry I'm coming a bit late in this thread :) |
@DayS not sure if i did misunderstood you but there is nothing heavier than now. it seems you actually do the most of git flow already. the work continues to stay on develop. so PRs(like feature branches in git flow) will merge into develop. as soon as you decide to do a new release you create a release/3.2 branch from develop. there you bump versions (3.2-SNAPSHOT to 3.2) and run the maven build etc. as soon everything is done, you merge the release branch into master and after that you create the tag(androidannotations-3.2) from master and if you want, you could take a look at the maven jgitflow plugin linked above. this does the git related stuff for you. |
it happened again. https://github.com/excilys/androidannotations/compare/master |
Thanks for noting that! We are aware of this and had a discussion with @DayS. Actually only the tag commit what are on master and not on dev. This is done intentionally by the maven release plugin. If you check out the git flow concept image, it also adds tag commits only to master. |
not sure how the maven release plugin is configured, but we use it at work too and i'm pretty sure that we don't have any commits on master that are not on develop. i'll check tomorrow. |
Thanks. Here are the instructions how we release currently. |
Damn. You are true. So the merge release is ok! Sorry. But i see you have to do all the git work by hand. There is a jgit-flow plugin from atlassian that is a replacement for the maven release plugin. our workflow is like (copied from a jenkins job):
iirc the second pre-step with build-helper and versions can be dropped as the jgit-flow plugin can update versions too. to bad that i can't remember the reason why it is there (I'm not the one who set up the our maven parent-pom). the steps: |
Thanks. Actually i think @DayS already considered switching to this plugin, but we did not have time to try it. Does it produce the same behavior (e.g. the tag commit only on master)? |
I think this is different than our current setup. I see no tag commits here. Master and develop differs because a new merge commit created for each. |
Hello Guys,
I'm a big fan of AndroidAnnotations, I use it in my own Apps as well in the App we develop in the company where i work.
As I'm also adding PRs i would like to understand the Workflow of how you handle PR and new Versions to get the subjects of a PR to the users.
My first PR was more or less a test to see if I can handle the way AA works while not really needing the changes for my project - this one got merged relatively fast (~12days).
My second one - with changes i actually needed - was first proposed on Oct. 6 2013 with an update after merging the refactoring PR on Dec. 12 2013. The merge happened on Mar. 16 2014, about 160 days later.
The current PR(actually two seperate but related) was proposed on Mar. 2 2014 and is not yet(~120days later) merged - but it seems that a merge is in the near future.
While i understand that most of the work on AA is done in freetime, i would like to understand the politics behind when to merge a PR and when a new release is done. I have no problem with using a SNAPSHOT(i actually started with 3.0-SNAPSHOT and never had a stable 😞) but since Oct 6. I'm forced to use a self built SNAPSHOT to have my changes available in my projects.
TL;DR
I would like to know how you decide when to merge a PR (after they are OK/LGTM) and when there will be a new release or at least a bump to the next minor snapshot (like 3.1.0-SNAPSHOT) where changes for the corresponding release will be merged as soon as they are OK/LGTM. For breaking changes (like a plugin system) that would require a new Major i understand that they will open for a bit longer until there is enough to justify a jump to a new major release.
Thank you all for this beautiful library! ;)
@DayS @yDelouis
The text was updated successfully, but these errors were encountered: