You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					54 lines
				
				1.1 KiB
			
		
		
			
		
	
	
					54 lines
				
				1.1 KiB
			| 
								 
											10 years ago
										 
									 | 
							
								#!/usr/bin/env bash
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# mfup
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Fetch and merge upstream changes, optionally with a branch
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MFINFO=$(mfinfo) || exit
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								IFS=' ' read -a INFO <<< "$MFINFO"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								ORG=${INFO[0]}
							 | 
						||
| 
								 | 
							
								FORK=${INFO[1]}
							 | 
						||
| 
								 | 
							
								REPO=${INFO[2]}
							 | 
						||
| 
								 | 
							
								TARG=${INFO[3]}
							 | 
						||
| 
								 | 
							
								OLDBRANCH=${INFO[4]}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [[ $OLDBRANCH == "(no" ]]; then
							 | 
						||
| 
								 | 
							
								  echo "Branch is unavailable!"
							 | 
						||
| 
								 | 
							
								  exit 1
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								case "$#" in
							 | 
						||
| 
								 | 
							
								  0 ) BRANCH=$OLDBRANCH ;;
							 | 
						||
| 
								 | 
							
								  1 ) BRANCH=$1 ;;
							 | 
						||
| 
								 | 
							
								  * ) echo "Usage: `basename $0` [branch]" 1>&2 ; exit 1 ;;
							 | 
						||
| 
								 | 
							
								esac
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set -e
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "Fetching upstream ($ORG/$REPO)..."
							 | 
						||
| 
								 | 
							
								git fetch upstream
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo ; echo "Bringing $TARG up to date..."
							 | 
						||
| 
								 | 
							
								git checkout -q $TARG || git branch checkout upstream/$TARG -b $TARG && git push --set-upstream origin $TARG
							 | 
						||
| 
								 | 
							
								git merge upstream/$TARG
							 | 
						||
| 
								 | 
							
								git push origin
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [[ $BRANCH != $TARG ]]; then
							 | 
						||
| 
								 | 
							
								  echo ; echo "Rebasing $BRANCH on $TARG..."
							 | 
						||
| 
								 | 
							
								  if git checkout $BRANCH; then
							 | 
						||
| 
								 | 
							
								    echo
							 | 
						||
| 
								 | 
							
								    if git rebase $TARG; then
							 | 
						||
| 
								 | 
							
								      git push -f ; echo
							 | 
						||
| 
								 | 
							
								      [[ $BRANCH != $OLDBRANCH ]] && git checkout $OLDBRANCH
							 | 
						||
| 
								 | 
							
								    else
							 | 
						||
| 
								 | 
							
								      echo "Looks like merge conflicts. Stopping here."
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    echo "No such branch!" ; echo
							 | 
						||
| 
								 | 
							
								    git checkout $OLDBRANCH
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								fi
							 |