Initial project structure. More to come soon..

This commit is contained in:
Troy Frew 2016-06-27 02:09:47 -04:00 committed by Marc Baloup
commit 2019a80ee4
5 changed files with 183 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
Travertine-Proxy

21
LICENSE.txt Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2015-2016 Waterfall Team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

33
README.md Normal file
View File

@ -0,0 +1,33 @@
# Travertine <a href="https://ci.getwaterfall.xyz/project.html?projectId=Travertine"><img src="https://ci.getwaterfall.xyz/app/rest/builds/buildType:Travertine_Build,branch:master/statusIcon"/></a>
Travertine is Waterfall with additional protocols. Waterfall is a fork of the well-known [BungeeCord](https://github.com/SpigotMC/BungeeCord) server teleportation suite.
Waterfall focuses on three main areas:
* **Stability**: Waterfall aims to be stable. We will achieve this through making the code base testable and discouraging practices that lead to proxy lag.
* **Features**: Waterfall aims to include more features than canonical BungeeCord.
* **Scalability**: Waterfall should be able to handle a large number of concurrent players, given a reasonably modern CPU, memory, and good network connection.
Travertine focuses on one main area:
* **Additional Client Version Support**: Travertine aims to support client versions older then what is supported in upstream. This includes 1.7 support. Additionally Travertine may release Snapshot and PRE Client support patches as time permits.
## Why fork Waterfall?
Travertine has a goal of adding additional protocol versions.
Travertine was forked because of the fact that Waterfall intends to only support protocol versions supported by upstream BungeeCord.
Travertine will track upstream Waterfall and merge changes as needed.
## Join us
* Feel free to open a PR! We accept contributions.
* Join us on IRC (irc.esper.net #waterfall, [webchat](http://webchat.esper.net/?nick=&channels=waterfall)).
* Visit our forums on [Aquifer](https://aquifermc.org).
Special Thanks To
-----------------
![YourKit-Logo](https://yourkit.com/images/yklogo.png)
[YourKit](https://yourkit.com/), makers of the outstanding Java profiler, supports open source projects of all kinds with their full-featured [Java](https://yourkit.com/features/) and [.NET](https://yourkit.com/dotnet/features/) application profilers. We thank them for granting Waterfall an OSS license so that we can make our software the best it can be.

67
applyPatches.sh Executable file
View File

@ -0,0 +1,67 @@
#!/usr/bin/env bash
PS1="$"
basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/work"
gpgsign="$(git config commit.gpgsign || echo "false")"
echo "Rebuilding Forked projects.... "
function enableCommitSigningIfNeeded {
if [[ "$gpgsign" == "true" ]]; then
echo "Re-enabling GPG Signing"
# Yes, this has to be global
git config --global commit.gpgsign true
fi
}
function applyPatch {
what=$1
what_name=$(basename "$what")
target=$2
branch=$3
cd "$basedir/$what"
git fetch
git branch -f upstream "$branch" >/dev/null
cd "$basedir"
if [ ! -d "$basedir/$target" ]; then
git clone "$what" "$target"
fi
cd "$basedir/$target"
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
echo " Applying patches to $target..."
git am --abort >/dev/null 2>&1
git am --3way --ignore-whitespace "$basedir/${what_name}-Patches/"*.patch
if [ "$?" != "0" ]; then
echo " Something did not apply cleanly to $target."
echo " Please review above details and finish the apply then"
echo " save the changes with rebuildPatches.sh"
enableCommitSigningIfNeeded
exit 1
else
echo " Patches applied cleanly to $target"
fi
}
# 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.
if [[ "$gpgsign" == "true" ]]; then
echo "_Temporarily_ disabling GPG signing"
git config --global commit.gpgsign false
fi
# Apply patches
applyPatch Waterfall/Waterfall-Proxy Travertine-Proxy HEAD
enableCommitSigningIfNeeded

61
rebuildPatches.sh Executable file
View File

@ -0,0 +1,61 @@
#!/usr/bin/env bash
(
PS1="$"
basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/work"
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)")
testver=$(echo "$diffs" | tail -n 2 | grep -ve "^$" | tail -n 1 | grep "$gitver")
if [ "x$testver" != "x" ]; then
diffs=$(echo "$diffs" | sed 'N;$!P;$!D;$d')
fi
if [ "x$diffs" == "x" ] ; then
git reset HEAD "$patch" >/dev/null
git checkout -- "$patch" >/dev/null
fi
done
}
function savePatches {
what=$1
what_name=$(basename "$what")
target=$2
echo "Formatting patches for $what..."
cd "$basedir/${what_name}-Patches/"
if [ -d "$basedir/$target/.git/rebase-apply" ]; then
# in middle of a rebase, be smarter
echo "REBASE DETECTED - PARTIAL SAVE"
last=$(cat "$basedir/$target/.git/rebase-apply/last")
next=$(cat "$basedir/$target/.git/rebase-apply/next")
for i in $(seq -f "%04g" 1 1 $last)
do
if [ $i -lt $next ]; then
rm ${i}-*.patch
fi
done
else
rm -rf *.patch
fi
cd "$basedir/$target"
git format-patch --no-stat -N -o "$basedir/${what_name}-Patches/" upstream/upstream >/dev/null
cd "$basedir"
git add -A "$basedir/${what_name}-Patches"
cleanupPatches "$basedir/${what_name}-Patches"
echo " Patches saved for $what to $what_name-Patches/"
}
savePatches "Waterfall/Waterfall-Proxy" "Travertine-Proxy"
)