Skip to content

Instantly share code, notes, and snippets.

@eugeneius
Last active January 19, 2017 19:09
Show Gist options
  • Save eugeneius/99d5bb2b437de7dad036 to your computer and use it in GitHub Desktop.
Save eugeneius/99d5bb2b437de7dad036 to your computer and use it in GitHub Desktop.
Run from a git repo to get stats on how many pull request merges could have been fast-forwarded.
#!/usr/bin/env bash
set -ue
merge_shas="`git rev-list HEAD --merges --grep='^Merge pull request #[0-9]\{1,\} '`"
merges="`echo "$merge_shas" | wc -l | tr -d ' '`"
fast_forwards=0
non_fast_forwards=0
while read -r merge_sha; do
first_parent="`git rev-list -1 $merge_sha^1`"
second_parent="`git rev-list -1 $merge_sha^2`"
merge_base="`git merge-base $first_parent $second_parent`"
if [[ $merge_base = $first_parent || $merge_base == $second_parent ]];
then
((fast_forwards++))
else
((non_fast_forwards++))
fi
done <<< "$merge_shas"
echo "Out of $merges merged pull requests, $fast_forwards were fast-forwardable and $non_fast_forwards were not."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment