Handle gpg signing better (#1123)

Instead of checking whether it was set previously, setting it to false,
then setting it back to true if it was true before, just use the
command-line argument in git to override the config for that command.
Using a variable makes it pretty painless to do.
This commit is contained in:
Kyle Wood 2018-05-24 13:41:50 -05:00 committed by Zach
parent 3eb1cdef72
commit d45565f83b
10 changed files with 87 additions and 102 deletions

11
paper
View File

@ -23,6 +23,7 @@ while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symli
done
SOURCE=$([[ "$SOURCE" = /* ]] && echo "$SOURCE" || echo "$PWD/${SOURCE#./}")
basedir=$(dirname "$SOURCE")
gitcmd="git -c commit.gpgsign=false"
source "$basedir/scripts/functions.sh"
@ -104,7 +105,7 @@ case "$1" in
set -e
paperstash
git rebase -i upstream/upstream
$gitcmd rebase -i upstream/upstream
paperunstash
)
;;
@ -115,7 +116,7 @@ case "$1" in
set -e
paperstash
git rebase -i upstream/upstream
$gitcmd rebase -i upstream/upstream
paperunstash
)
;;
@ -125,9 +126,9 @@ case "$1" in
(
set -e
git add .
git commit --amend
git rebase --continue
$gitcmd add .
$gitcmd commit --amend
$gitcmd rebase --continue
cd "$basedir"
scripts/rebuildPatches.sh "$basedir"

View File

@ -1,4 +1,7 @@
#!/bin/bash
gitcmd="git -c commit.gpgsign=false"
noapply=1
isreject=0
if [[ $1 == "--noapplied" ]]; then
@ -18,18 +21,18 @@ else
fi
applied=$(echo $file | sed 's/.patch$/-applied\.patch/g')
if [ "$1" == "--reset" ]; then
git am --abort
git reset --hard
git clean -f
$gitcmd am --abort
$gitcmd reset --hard
$gitcmd clean -f
exit 0
fi
(test "$isreject" != "1" && git am -3 $file) || (
(test "$isreject" != "1" && $gitcmd am -3 $file) || (
echo "Failures - Wiggling"
git reset --hard
git clean -f
errors=$(git apply --rej $file 2>&1)
$gitcmd reset --hard
$gitcmd clean -f
errors=$($gitcmd apply --rej $file 2>&1)
echo "$errors" >> ~/patch.log
export missingfiles=""
export summaryfail=""
@ -44,12 +47,12 @@ fi
missingfiles="$missingfiles\n$base"
fi
done
for i in $(git status --porcelain | awk '{print $2}'); do
for i in $($gitcmd status --porcelain | awk '{print $2}'); do
filedata=$(cat "$i")
if [ -f "$file" ] && [[ "$filedata" == *"<<<<<"* ]]; then
export summaryfail="$summaryfail\nFAILED TO APPLY: $i"
else
git add "$i"
$gitcmd add "$i"
export summarygood="$summarygood\nAPPLIED CLEAN: $i"
fi
done
@ -64,8 +67,8 @@ fi
echo " "
echo "===========================";
fi
git status
git diff
$gitcmd status
$gitcmd diff
)
if [[ "$noapply" != "1" ]] && [[ "$file" != *-applied.patch ]]; then
mv "$file" "$applied"

View File

@ -4,8 +4,8 @@
PS1="$"
basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/work"
gpgsign="$(git config commit.gpgsign || echo "false")"
applycmd="git am --3way --ignore-whitespace"
gitcmd="git -c commit.gpgsign=false"
applycmd="$gitcmd am --3way --ignore-whitespace"
# Windows detection to workaround ARG_MAX limitation
windows="$([[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" ]] && echo "true" || echo "false")"
@ -18,30 +18,25 @@ function applyPatch {
branch=$3
cd "$basedir/$what"
git fetch
git branch -f upstream "$branch" >/dev/null
$gitcmd fetch
$gitcmd branch -f upstream "$branch" >/dev/null
cd "$basedir"
if [ ! -d "$basedir/$target" ]; then
git clone "$what" "$target"
$gitcmd clone "$what" "$target"
fi
cd "$basedir/$target"
# Disable GPG signing before AM, slows things down and doesn't play nicely.
# There is also zero rational or logical reason to do so for these sub-repo AMs.
# Calm down kids, it's re-enabled (if needed) immediately after, pass or fail.
git config commit.gpgsign false
echo "Resetting $target to $what_name..."
git remote rm upstream > /dev/null 2>&1
git remote add upstream "$basedir/$what" >/dev/null 2>&1
git checkout master 2>/dev/null || git checkout -b master
git fetch upstream >/dev/null 2>&1
git reset --hard upstream/upstream
$gitcmd remote rm upstream > /dev/null 2>&1
$gitcmd remote add upstream "$basedir/$what" >/dev/null 2>&1
$gitcmd checkout master 2>/dev/null || $gitcmd checkout -b master
$gitcmd fetch upstream >/dev/null 2>&1
$gitcmd reset --hard upstream/upstream
echo " Applying patches to $target..."
git am --abort >/dev/null 2>&1
$gitcmd am --abort >/dev/null 2>&1
# Special case Windows handling because of ARG_MAX constraint
if [[ $windows == "true" ]]; then
@ -72,23 +67,16 @@ function applyPatch {
fi
}
function enableCommitSigningIfNeeded {
if [[ "$gpgsign" == "true" ]]; then
git config commit.gpgsign true
fi
}
# Move into spigot dir
cd "$workdir/Spigot"
basedir=$(pwd)
# Apply Spigot
(
applyPatch ../Bukkit Spigot-API HEAD &&
applyPatch ../CraftBukkit Spigot-Server patched
applyPatch ../Bukkit Spigot-API HEAD &&
applyPatch ../CraftBukkit Spigot-Server patched
) || (
echo "Failed to apply Spigot Patches"
enableCommitSigningIfNeeded
exit 1
echo "Failed to apply Spigot Patches"
exit 1
) || exit 1
# Move out of Spigot
basedir="$1"
@ -101,12 +89,10 @@ echo "Importing MC Dev"
# Apply paper
cd "$basedir"
(
applyPatch "work/Spigot/Spigot-API" Paper-API HEAD &&
applyPatch "work/Spigot/Spigot-Server" Paper-Server HEAD
enableCommitSigningIfNeeded
applyPatch "work/Spigot/Spigot-API" Paper-API HEAD &&
applyPatch "work/Spigot/Spigot-Server" Paper-Server HEAD
) || (
echo "Failed to apply Paper Patches"
enableCommitSigningIfNeeded
exit 1
echo "Failed to apply Paper Patches"
exit 1
) || exit 1
)

View File

@ -3,12 +3,13 @@
(
set -e
basedir="$(cd "$1" && pwd -P)"
gitcmd="git -c commit.gpgsign=false"
(git submodule update --init && ./scripts/remap.sh "$basedir" && ./scripts/decompile.sh "$basedir" && ./scripts/init.sh "$basedir" && ./scripts/applyPatches.sh "$basedir") || (
echo "Failed to build Paper"
exit 1
($gitcmd submodule update --init && ./scripts/remap.sh "$basedir" && ./scripts/decompile.sh "$basedir" && ./scripts/init.sh "$basedir" && ./scripts/applyPatches.sh "$basedir") || (
echo "Failed to build Paper"
exit 1
) || exit 1
if [ "$2" == "--jar" ]; then
mvn clean install && ./scripts/paperclip.sh "$basedir"
mvn clean install && ./scripts/paperclip.sh "$basedir"
fi
)

View File

@ -1,5 +1,7 @@
#!/usr/bin/env bash
gitcmd="git -c commit.gpgsign=false"
color() {
if [ $2 ]; then
echo -e "\e[$1;$2m"
@ -12,11 +14,11 @@ colorend() {
}
paperstash() {
STASHED=$(git stash 2>/dev/null|| return 0) # errors are ok
STASHED=$($gitcmd stash 2>/dev/null|| return 0) # errors are ok
}
paperunstash() {
if [[ "$STASHED" != "No local changes to save" ]] ; then
git stash pop 2>/dev/null|| return 0 # errors are ok
$gitcmd stash pop 2>/dev/null|| return 0 # errors are ok
fi
}

View File

@ -6,6 +6,7 @@ nms="net/minecraft/server"
export MODLOG=""
PS1="$"
basedir="$(cd "$1" && pwd -P)"
gitcmd="git -c commit.gpgsign=false"
workdir="$basedir/work"
minecraftversion=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
@ -13,26 +14,26 @@ decompiledir="$workdir/Minecraft/$minecraftversion"
export importedmcdev=""
function import {
export importedmcdev="$importedmcdev $1"
file="${1}.java"
target="$workdir/Spigot/Spigot-Server/src/main/java/$nms/$file"
base="$decompiledir/$nms/$file"
export importedmcdev="$importedmcdev $1"
file="${1}.java"
target="$workdir/Spigot/Spigot-Server/src/main/java/$nms/$file"
base="$decompiledir/$nms/$file"
if [[ ! -f "$target" ]]; then
export MODLOG="$MODLOG Imported $file from mc-dev\n";
echo "Copying $base to $target"
cp "$base" "$target"
else
echo "UN-NEEDED IMPORT: $file"
fi
if [[ ! -f "$target" ]]; then
export MODLOG="$MODLOG Imported $file from mc-dev\n";
echo "Copying $base to $target"
cp "$base" "$target"
else
echo "UN-NEEDED IMPORT: $file"
fi
}
(
cd "$workdir/Spigot/Spigot-Server/"
lastlog=$(git log -1 --oneline)
if [[ "$lastlog" = *"mc-dev Imports"* ]]; then
git reset --hard HEAD^
fi
cd "$workdir/Spigot/Spigot-Server/"
lastlog=$($gitcmd log -1 --oneline)
if [[ "$lastlog" = *"mc-dev Imports"* ]]; then
$gitcmd reset --hard HEAD^
fi
)
import AxisAlignedBB
@ -110,6 +111,6 @@ import WorldProvider
cd "$workdir/Spigot/Spigot-Server/"
rm -rf nms-patches applyPatches.sh makePatches.sh >/dev/null 2>&1
git add . -A >/dev/null 2>&1
echo -e "mc-dev Imports\n\n$MODLOG" | git commit . -F -
$gitcmd add . -A >/dev/null 2>&1
echo -e "mc-dev Imports\n\n$MODLOG" | $gitcmd commit . -F -
)

View File

@ -9,23 +9,16 @@ minecraftversion=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion |
decompiledir="$workdir/Minecraft/$minecraftversion"
nms="$decompiledir/net/minecraft/server"
cb="src/main/java/net/minecraft/server"
gpgsign="$(git config commit.gpgsign || echo "false")"
gitcmd="git -c commit.gpgsign=false"
patch=$(which patch 2>/dev/null)
if [ "x$patch" == "x" ]; then
patch="$basedir/hctap.exe"
fi
function enableCommitSigningIfNeeded {
if [[ "$gpgsign" == "true" ]]; then
git config commit.gpgsign true
fi
}
echo "Applying CraftBukkit patches to NMS..."
cd "$workdir/CraftBukkit"
git checkout -B patched HEAD >/dev/null 2>&1
$gitcmd checkout -B patched HEAD >/dev/null 2>&1
rm -rf "$cb"
mkdir -p "$cb"
for file in $(ls nms-patches)
@ -42,11 +35,7 @@ do
"$patch" -s -d src/main/java/ "net/minecraft/server/$file" < "$patchFile"
done
git add src
# We don't need to sign an automated commit
# All it does is make you input your key passphrase mid-patch
git config commit.gpgsign false
git commit -m "CraftBukkit $ $(date)" --author="Auto <auto@mated.null>"
enableCommitSigningIfNeeded
git checkout -f HEAD^
$gitcmd add src
$gitcmd commit -m "CraftBukkit $ $(date)" --author="Auto <auto@mated.null>"
$gitcmd checkout -f HEAD^
)

View File

@ -4,15 +4,16 @@
PS1="$"
basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/work"
gitcmd="git -c commit.gpgsign=false -c core.safecrlf=false"
echo "Rebuilding patch files from current fork state..."
git config core.safecrlf false
function cleanupPatches {
cd "$1"
for patch in *.patch; do
echo "$patch"
gitver=$(tail -n 2 "$patch" | grep -ve "^$" | tail -n 1)
diffs=$(git diff --staged "$patch" | grep -E "^(\+|\-)" | grep -Ev "(From [a-z0-9]{32,}|\-\-\- a|\+\+\+ b|.index)")
diffs=$($gitcmd diff --staged "$patch" | grep -E "^(\+|\-)" | grep -Ev "(From [a-z0-9]{32,}|\-\-\- a|\+\+\+ b|.index)")
testver=$(echo "$diffs" | tail -n 2 | grep -ve "^$" | tail -n 1 | grep "$gitver")
if [ "x$testver" != "x" ]; then
@ -20,8 +21,8 @@ function cleanupPatches {
fi
if [ "x$diffs" == "x" ] ; then
git reset HEAD "$patch" >/dev/null
git checkout -- "$patch" >/dev/null
$gitcmd reset HEAD "$patch" >/dev/null
$gitcmd checkout -- "$patch" >/dev/null
fi
done
}
@ -50,9 +51,9 @@ function savePatches {
cd "$basedir/$target"
git format-patch --no-stat -N -o "$basedir/${what_name}-Patches/" upstream/upstream >/dev/null
$gitcmd format-patch --no-stat -N -o "$basedir/${what_name}-Patches/" upstream/upstream >/dev/null
cd "$basedir"
git add -A "$basedir/${what_name}-Patches"
$gitcmd add -A "$basedir/${what_name}-Patches"
cleanupPatches "$basedir/${what_name}-Patches"
echo " Patches saved for $what to $what_name-Patches/"
}

View File

@ -6,7 +6,7 @@ basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/work"
minecraftversion=$(cat "$workdir/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
decompiledir="$workdir/Minecraft/$minecraftversion"
gitcmd="git -c commit.gpgsign=false"
#
# FUNCTIONS
@ -15,7 +15,7 @@ decompiledir="$workdir/Minecraft/$minecraftversion"
updateTest() {
paperstash
git reset --hard origin/master
$gitcmd reset --hard origin/master
paperunstash
}
@ -29,9 +29,9 @@ cd "$papertestdir"
#
if [ ! -d .git ]; then
git init
git remote add origin ${PAPER_TEST_SKELETON:-https://github.com/PaperMC/PaperTestServer}
git fetch origin
$gitcmd init
$gitcmd remote add origin ${PAPER_TEST_SKELETON:-https://github.com/PaperMC/PaperTestServer}
$gitcmd fetch origin
updateTest
elif [ "$2" == "update" ] || [ "$3" == "update" ]; then
updateTest

View File

@ -5,12 +5,13 @@ set -e
PS1="$"
basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/work"
gitcmd="git -c commit.gpgsign=false"
function update {
cd "$workdir/$1"
git fetch && git reset --hard origin/master
$gitcmd fetch && $gitcmd reset --hard origin/master
cd ../
git add $1
$gitcmd add $1
}
update Bukkit