Hi folks,

given that Oleg finally took up the chance migrating core and client to a Git-based repo, we should agree how we are going to work with in conformance with a good Git practice to avoid chaos on master. I'd like to provide an example first why a common practive is so necessary to make life easier for us (committers) and as well as for our users reading a beatiful log understanding what we do and why we do it.

Example: as you might know, there are about ten committers for Maven and we already use Git for quite some time, but did not really embrance it's workflow. It finally ended in having people constantly working on master pushing fixes for fixes and reverts for reverts (including myself), rendering master unreadable and unusable. We agreed for a reset on master (we actually skipped 3.4.0 for that reason) (INFRA did) and went through every single ticket wether it should be on 3.5.0 or not and why. The approach we have taken is that for every single ticket a branch MNG-xxxx is created by a dev, pushed to origin. Jenkins will automatically run all ITs. After that has happened you ask for a review on dev@ and leave room for discussion. There are oftern cases you don't see. Having an extra pair of eyes is helpful. This flow works very well because we now have a single-commit-per-issue, fully working, no fiddling.

My proposal:

1. Branch off master (git checkout -b HTTPCORE-XXXX master)
2. Work on your issue. Create as many commits as you want
3. Polish it
4. Squash it/fix it up
5. Ask for a review if you are uncertain
6. merge back to master, but avoid merge commits which are just noise for a single merge (rebase your branch onto mater) 7. Never rewrite (rebase) history on master because you will break others. Infact, you can't because it is a protective branch. Only INFRA can do.
8. Take care of a proper commit message, these references are good:
  * https://chris.beams.io/posts/git-commit/
  * https://github.com/erlang/otp/wiki/Writing-good-commit-messages
Put the title of the JIRA issue (e.g., [HTTPCORE-123] Memory leak in response) in the first line, followed by an explanation why you did take this approach. The ticket desc contains the issue, your commit message contains the solution.
9. If in doubt, ask for help and give people a couple of days to react.
10. When you close the issue, put a link to your commit to create a direct relation between issue and solution. 11. If this change comes for a PR on GitHub, don't steal authorship, let the reporter polish his work and amend the message at the end with "This closes #xy" and push.

Something else I forgot?

What do you think?

Michael

PS: I know this is work, but it pays off really quick

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org

Reply via email to