How to access the commit message in pre-receive hook

Hi,

I am attempting to write a pre-recieve hook in Stash 2.2 where I check the formatting of the commit message. I have been unsuccessful at accessing the message and am hoping I could get some guidance or even an example.

Thanks,

-Jim

1 answer

1 accepted

5 votes
Seb Ruiz Atlassian Team Mar 06, 2013

Hi Jim,

These are the steps involved for what you need:

  1. Create a PreReceiveRepositoryHook as detailed here: https://developer.atlassian.com/stash/docs/latest/how-tos/repo-hook-examples/pre-receive-no-config.html
  2. Iterate over the RefChanges (as shown in the example above). The pre receive hook does not receive a collection of changesets, but rather a list of the refs that have changed. There can be multiple refs that have changed in one push (eg pushing multiple commits to multiple branches at once)
  3. For each RefChange, use the fromHash and toHash to extract the individual changesets: https://developer.atlassian.com/static/javadoc/stash/latest/api/reference/com/atlassian/stash/repository/RefChange.html
  4. Using HistoryService.getChangesetsBetween stream a list of changesets from RefChange.getFromHash and RefChange.getToHash
  5. For each of these changesets, validate the message as you need.

Hope that helps,

Seb

This solution works, but the use of HistoryService.getChangesetsBetween with fromHash and toHash is deprecated in between.

The recommended ChangeSetBetweenRequest does not seem to provide a similar 'fromHash' - 'toHash' mechanism. We added fromHash to builder.include(), but this included everything. Using toHash as builder.exclude() in turn excluded everything.

Any hints on how to proceed?

Hi Jan,

While the terminology might seem a little strange, you want to reverse those arguments. You want to exclude the fromHash and include the toHash. That is exactly what the deprecated method is doing. This gives you a might more powerful way to include/exclude multiple changesets, rather than just a single from/to pair.

Cheers,

Charles

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Posted Jun 12, 2018 in Bitbucket

Do you use any Atlassian products for your personal projects?

After spinning my wheels trying to get organized enough to write a book for National Novel Writing Month (NaNoWriMo) I took my affinity for Atlassian products from my work life and decided to tr...

23,365 views 26 12
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you