+1 on the commit messages (but I think that we don't necessarily need to have a tool check it).

Wrt the squashed commits, the reason for me to prefer them is, that one gets a nice and understandable history on the master branch. With several commits - even if they are linked in some way - it gets much harder to understand what the complete change is that was done to fix a problem. Especially if there are several rounds of reviews and fixes, it seems not very useful (from a human perspective) to keep all the intermediate commits in the history. Now I also never had the problem of several dependent feature branches, so I might not appreciate the problem enough.

My 2c,
Till

On 17 Sep 2015, at 22:08, Chen Li wrote:

I support the idea of enforcing certain rules on commit messages.

Regarding squashing commits, it has pros and cons.  I know in other
projects people keep all individual commits.  I want to hear the
reason of our current practice of squashing commits.

Chen

On Thu, Sep 17, 2015 at 8:59 PM, Jianfeng Jia <[email protected]> wrote:
Second the proposal first. It is a good way to track the git with jira.

Another separate but related thought, since we enforce the commit message format, e.g. starting with jira ticket, can we just rebase but do NOT squash the commit when merging into the master? Then the commit is more atomic. It’s easy to pick/merge across the different branches.

In my case, right now I’m facing the merging problem which is not only caused by the package name changes
but also that my personal feature branches dependent on each other.

Let’s say, I’m finishing working on A, and also I have ongoing branches B which is based on some parts of A. After review of A, all A’s commits are squashed to master. At that time I have to merge master to B, but git can’t find the shared part anymore. In contrast, it showed the false “conflicts” everywhere.

If we keep the initial atomic commits, git will know the shared parts. And also, since we link the commits by ticket name, we don’t need to squash them together in order to know which commit is doing what.
Does it make sense?


On Sep 17, 2015, at 8:15 PM, Chris Hillery <[email protected]> wrote:

I implemented a process at Couchbase that can be used to validate whatever we want about a proposed commit, including the form of the message. I could do the same here, with some basic rules in place like "first line no longer than 70 characters, blank line before any additional lines", etc. I could
also validate at least that if there IS a ticket associated with the
message, that it's in the right place and references an actual valid ticket.

Ceej
aka Chris Hillery

On Thu, Sep 17, 2015 at 8:12 PM, Ian Maxon <[email protected]> wrote:

Sounds like a great idea to me. I was talking with Jianfeng in the
hall about this today, and the idea came up that there might be a way
to enforce this via a git hook or similar at Gerrit's end.

Thoughts? I am not sure myself if this should be a strict rule (i.e. you must file tickets to commit) or if it should be on the burden of
the reviewer to verify that.

- Ian

On Thu, Sep 17, 2015 at 1:39 PM, Taewoo Kim <[email protected]> wrote:
+1

Best,
Taewoo

On Thu, Sep 17, 2015 at 1:26 PM, Eldon Carman <[email protected]> wrote:

I like the proposal. This will be helpful when got and Jira are linked.



Sent from my iPhone

On Sep 17, 2015, at 1:14 PM, Chris Hillery <[email protected]>
wrote:

At Couchbase, we have a commit message standard which has proven
useful.
All git commit messages must start with a short one-line summary of no
more
than 60 characters or so. Then a blank line, followed by additional details, specifics, etc. all on lines of no more than 72 characters.
If
it's a simple enough change that the one-line summary is all you need,
that's fine too.

Additionally, if the commit is for a specific ticket, that ticket
number
must be at the beginning of the summary line, followed by a colon. FYI
our
tickets in Jira are named eg. ASTERIXDB-1097. So, for example:

------
ASTERIXDB-1097: Fix threading in printers

Replace static data member with a safe thread-local instance to
avoid data corruption.
------

This really helps in tracking git history - there are several commands
which will only display the first line of a commit message, for
instance,
so having it be self-contained makes it much easier to read. You may
also
have noticed that Gerrit uses that first line for the subjects of
emails
it
sends out. Also, by including the ticket name, we can easily configure Gerrit to provide a hyperlink to the ticket to make things easier to
review.

Here's a blog post which goes into excruciating detail about commit
messages:

http://chris.beams.io/posts/git-commit/

Ceej
aka Chris Hillery





Best,

Jianfeng Jia
PhD Candidate of Computer Science
University of California, Irvine

Reply via email to