| #!/bin/sh |
| |
| #If a version is set then we only try merging a source plugin with matching version as a generic one could change the ABI to master HEAD |
| merge_internal(){ # $1=repository, $2=refspec |
| branch="sourceplugin-$2" |
| if [ -n "$version" ] ; then |
| branch="$branch-$version" |
| fi |
| git pull --no-rebase --log --stat --commit --no-edit "$1" "$branch" |
| } |
| |
| unset succeeded failed version |
| |
| merge(){ # $1=repository, $2=refspec |
| merge_internal "$1" "$2" || { |
| git reset --hard |
| echo merge of $1 $2 failed, continuing with other plugins |
| failed="$failed $2" |
| return 0 |
| } |
| succeeded="$succeeded $2" |
| } |
| |
| error(){ |
| echo $1 |
| exit 1 |
| } |
| |
| git diff --exit-code >/dev/null ||\ |
| error "Please commit local changes first" |
| |
| git diff --cached --exit-code >/dev/null ||\ |
| error "Please commit local changes first" |
| |
| #version="12.34" |
| |
| [ $# -ne 1 ] &&\ |
| error "Usage: $0 source-plugins.txt" |
| |
| while IFS=' ' read -r a b; do |
| case "$a" in |
| ''|'#'*) continue ;; |
| esac |
| |
| merge "$a" "$b" |
| done < "$1" |
| |
| [ -n "$version" ] && echo version: $version |
| [ -n "$succeeded" ] && echo Succeeded merging: $succeeded |
| [ -n "$failed" ] && echo Failed merging: $failed |