Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

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
Answer accepted
seb 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
TAGS
Community showcase
Published in Bitbucket

New improvements to user management in Bitbucket Cloud 👥

Hey Community! We’re willing to wager that quite a few of you not only use Bitbucket, but administer it too. Our team is excited to share that we’ll be releasing improvements throughout this month of...

3,805 views 10 16
Read article

Community Events

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

Find an event

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

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you