| #!/bin/bash |
| # |
| # Check if a given commit is in the current branch, based on the subject |
| # rather than commit sha1. |
| # |
| |
| if [ "$#" -ne 1 ]; then |
| echo "Usage: stable commit-in-tree <commit sha1>" |
| exit 1 |
| fi |
| |
| fullhash=$(git rev-parse $1) |
| # This might happen if someone pointed to a commit that doesn't exist in our |
| # tree. |
| if [ "$?" -gt "0" ]; then |
| exit 0 |
| fi |
| |
| # Hope for the best, same commit is/isn't in the current branch |
| if [ "$(git merge-base $fullhash HEAD)" = "$fullhash" ]; then |
| exit 1 |
| fi |
| |
| # Grab the subject, since commit sha1 is different between branches we |
| # have to look it up based on subject. |
| subj=$(git log -1 --pretty="%s" $1) |
| if [ $? -gt 0 ]; then |
| exit 0 |
| fi |
| |
| STABLE_MAJ_VER=$(grep VERSION Makefile | head -n1 | awk {'print $3'}) |
| STABLE_MIN_VER=$(grep PATCHLEVEL Makefile | head -n1 | awk {'print $3'}) |
| |
| # Try and find if there's a commit with given subject the hard way |
| for i in $(git log --pretty="%H" -F --grep "$subj" v$STABLE_MAJ_VER.$STABLE_MIN_VER..HEAD); do |
| cursubj=$(git log -1 --format="%s" $i) |
| if [ "$cursubj" = "$subj" ]; then |
| exit 1 |
| fi |
| done |
| exit 0 |