cmd=$1
shift
+fix_upstream_rebase()
+{
+ if [ -z "$r_me" ] || [ -z "$r_other" ]; then
+ return
+ fi
+ r_base=`git merge-base "$r_me" "$r_other"`
+
+ # no merge-base? upstream did filter-branch
+ if [ -n "$r_base" ]; then
+ # otherwise, check if the two histories are "similar"
+ r_l_me=`git log --pretty="format:%s" "$r_other".."$r_me" | grep -v "^Merge" | sort -u`
+ r_l_other=`git log --pretty="format:%s" "$r_me".."$r_other" | grep -v "^Merge" | sort -u`
+
+ # heuristics: upstream rebase/filter-branch if more than 50% of the commits of one of the sides are in the other too
+ r_lc_me=`echo "$r_l_me" | wc -l`
+ r_lc_other=`echo "$r_l_other" | wc -l`
+ r_lc_together=`{ echo "$r_l_me"; echo "$r_l_other"; } | sort -u | wc -l`
+ r_lc_same=$(($r_lc_me + $r_lc_other - $r_lc_together))
+
+ if [ $(( $r_lc_same * 2 )) -gt $(( $r_lc_me )) ] || [ $(( $r_lc_same * 2 )) -gt $(( $r_lc_other )) ]; then
+ if yesno "Probable upstream rebase detected, automatically fix?" 'git log --oneline --graph --date-order --left-right "$r_other"..."$r_me"'; then
+ git reset --hard "$r_me"
+ git pull --rebase
+ return 1
+ fi
+ fi
+ fi
+
+ return 0
+}
+
+fix_upstream_rebase_mergeok()
+{
+ r_me=`git rev-parse --revs-only HEAD^1 2>/dev/null || true`
+ r_other=`git rev-parse --revs-only HEAD^2 2>/dev/null || true`
+ fix_upstream_rebase
+}
+
+fix_upstream_rebase_mergefail()
+{
+ r_me=`git rev-parse --revs-only HEAD 2>/dev/null || true`
+ r_other=`git rev-parse --revs-only MERGE_HEAD 2>/dev/null || true`
+ fix_upstream_rebase
+}
+
case "$cmd" in
+ fix_upstream_rebase)
+ for d in $repos; do
+ enter "$d0/$d" verbose
+ verbose fix_upstream_rebase_mergefail && verbose fix_upstream_rebase_mergeok
+ done
+ ;;
update|pull)
allow_pull=true
if [ x"$1" = x"-N" ]; then
r=${r#refs/heads/}
if git config branch.$r.remote >/dev/null 2>&1; then
if ! verbose git pull; then
+ fix_upstream_rebase_mergefailed || true
check_mergeconflict "$d"
echo "Pulling failed. Press ENTER to continue, or Ctrl-C to abort."
read -r DUMMY
+ else
+ fix_upstream_rebase_mergeok || true
fi
fi
mkdir data fteqcc
tar xvf -
rm -rf misc/builddeps
- mv misc/buildfiles/win32/* .
- mv misc/buildfiles/win64/* .
- mv misc/buildfiles/osx/* .
+ mv misc/buildfiles/win32/* . || true
+ mv misc/buildfiles/win64/* . || true
+ mv misc/buildfiles/osx/* . || true
rm -rf misc/buildfiles
}
;;
;;
release-engine)
"$SELF" release-engine-win32 &
- "$SELF" release-engine-win64 &
+ # "$SELF" release-engine-win64 &
"$SELF" release-engine-osx &
"$SELF" release-engine-linux32 &
"$SELF" release-engine-linux64 &
;;
release-maps)
"$SELF" update-maps
- for X in data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
- if [ -f "$X" ]; then
- cd Xonotic/data/xonotic-maps.pk3dir
- unzip ../../../"$X"
- cd ../../..
- fi
- done
;;
release-finish)
# version numnber and stuff like that
cp "$src"/csprogs.dat Xonotic/temp/
cp "$src"/menu.dat Xonotic/temp/
fi
+ if [ x"$src" = x"data/xonotic-maps.pk3dir" ]; then
+ for X in data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
+ if [ -f "$X" ]; then
+ (
+ cd Xonotic/data/xonotic-maps.pk3dir
+ unzip ../../../"$X"
+ )
+ fi
+ done
+ fi
"$SELF" release-buildpk3-transform-$transform "Xonotic/temp"
cd Xonotic/temp
zip -9r "../../$dst" . ########### 7za a -tzip -mx=9 "../../$dst" .
done
;;
release-pack)
- "$SELF" release-buildpk3s data/font-dejavu.pk3dir raw ''
+ "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir raw ''
"$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '' raw '-raw' low '-low'
"$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '' raw '-raw' low '-low'
"$SELF" release-buildpk3s data/xonotic-music.pk3dir normal '' raw '-raw' low '-low'
;;
release)
"$SELF" release-prepare
- "$SELF" release-engine
- "$SELF" release-maps
- "$SELF" release-finish
- "$SELF" release-qc
+ "$SELF" release-maps &
+ "$SELF" release-engine &
+ "$SELF" release-finish &
+ "$SELF" release-qc &
+ wait
"$SELF" release-pack
;;