mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			804 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			804 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # Shows a log with changes grouped next to their merge-commit.
 | |
| #
 | |
| # Parameters:
 | |
| #   $1    "since" commit
 | |
| #   $2    "inverse match" regex pattern
 | |
| 
 | |
| set -e
 | |
| set -u
 | |
| set -o pipefail
 | |
| 
 | |
| __SINCE=$1
 | |
| __INVMATCH=$2
 | |
| 
 | |
| is_merge_commit() {
 | |
|   git rev-parse $1 >/dev/null 2>&1 \
 | |
|     || { echo "ERROR: invalid commit: $1"; exit 1; }
 | |
|   git log $1^2 >/dev/null 2>&1 && return 0 || return 1
 | |
| }
 | |
| 
 | |
| for commit in $(git log --format='%H' --first-parent "$__SINCE"..HEAD); do
 | |
|   if is_merge_commit ${commit} ; then
 | |
|       if [ -z "$__INVMATCH" ] || ! git log --oneline ${commit}^1..${commit}^2 \
 | |
|            | grep -E "$__INVMATCH" >/dev/null 2>&1 ; then
 | |
|         git log -1 --oneline ${commit}
 | |
|         git log --format='    %h %s' ${commit}^1..${commit}^2
 | |
|       fi
 | |
|   else
 | |
|     git log -1 --oneline ${commit}
 | |
|   fi
 | |
| done
 | 
