mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 01:21:03 +01:00
91 lines
2.9 KiB
Bash
Executable File
91 lines
2.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Updates src/third_party/wiredtiger contents
|
|
# from github.com/wiredtiger/wiredtiger branch "mongodb-3.2" or the first argument passed
|
|
#
|
|
|
|
set -o errexit
|
|
|
|
REMOTEBRANCH="${1:-mongodb-3.4}"
|
|
LOCALBRANCH=$(git symbolic-ref HEAD)
|
|
|
|
# Ensure working directory is TOPLEVEL/src/third_party
|
|
STARTPWD=$(pwd)
|
|
TOPLEVEL=$(git rev-parse --show-toplevel)
|
|
cd ${TOPLEVEL}/src/third_party
|
|
|
|
# Write file according to "Content-Disposition: attachment" header. Example:
|
|
# Content-Disposition: attachment; filename=wiredtiger-wiredtiger-2.4.0-109-ge5aec44.tar.gz
|
|
|
|
rm -f wiredtiger-wiredtiger-*.tar.gz
|
|
curl -OJL https://api.github.com/repos/wiredtiger/wiredtiger/tarball/${REMOTEBRANCH}
|
|
|
|
TARBALL=$(echo wiredtiger-wiredtiger-*.tar.gz)
|
|
test -f "$TARBALL"
|
|
|
|
# Delete everything in wiredtiger dir, then selectively undelete
|
|
|
|
mkdir -p wiredtiger
|
|
(cd wiredtiger;
|
|
rm -rf *;
|
|
git checkout -- .gitignore 'SCons*';
|
|
git checkout -- 'build_*/wiredtiger_config.h')
|
|
|
|
# Tar options:
|
|
# - Exclude subdirs "api", "test", "src/docs"
|
|
# - Strip 'wiredtiger-wiredtiger-e5aec44/' prefix after exclude applied
|
|
# - Change to dir "wiredtiger" before extracting
|
|
|
|
tar -x --strip-components 1 \
|
|
--exclude '*/api' --exclude '*/dist/package' --exclude '*/examples' \
|
|
--exclude '*/src/docs' --exclude '*/test' \
|
|
--exclude '*/tools/wtperf_stats' \
|
|
--exclude '*/tools/wtstats/template' \
|
|
-C wiredtiger -f ${TARBALL}
|
|
|
|
# Add wiredtiger as a remote called 'wt'; ignore errors if it already
|
|
# exists -- fetch will catch any problems
|
|
echo "Fetching latest wiredtiger code; this may take a while..."
|
|
git remote add wt git@github.com:wiredtiger/wiredtiger.git > /dev/null 2>&1 || true
|
|
git fetch wt
|
|
|
|
# Build a changelog for the revision history
|
|
# - get the githash for this drop from the tarball name
|
|
newhash="`echo $TARBALL | sed -e 's/.*-g\([0-9a-f]*\)\..*/\1/'`"
|
|
[ -z "$newhash" ] && echo "Can't find hash for this drop" && exit 1
|
|
|
|
# - find the githash from the previous drop from the summary
|
|
oldhash="`git log --format=%s | grep 'Import wiredtiger' | head -n 1 | sed -e's/.*-g\([0-9a-f]*\)\..*/\1/g'`"
|
|
[ -z "$oldhash" ] && echo "Can't find hash for previous drop" && exit 1
|
|
|
|
# - build the changelog; unfortunately the format is branch-dependant
|
|
case ${REMOTEBRANCH} in
|
|
"mongodb-3.0") format="--format=\"%h %s\"" ;;
|
|
"mongodb-3.2"|"mongodb-3.4") format="--grep=\"Merge pull\" --format=\"%h %b\"" ;;
|
|
*) echo "${REMOTEBRANCH} is not supported; bailing out" ; exit 1 ;;
|
|
esac
|
|
gitlog="git log $format ${oldhash}..${newhash} wt/${REMOTEBRANCH}"
|
|
changelog="`eval $gitlog`"
|
|
|
|
echo
|
|
git add wiredtiger
|
|
git commit -m "Import ${TARBALL} from wiredtiger branch ${REMOTEBRANCH}" \
|
|
-m "ref: ${oldhash}..${newhash}" \
|
|
-m "$changelog"
|
|
echo
|
|
git log -n 1
|
|
|
|
set -o errexit
|
|
cd $STARTPWD
|
|
echo "
|
|
Done applying $TARBALL to $LOCALBRANCH.
|
|
The revision history was computed as follows:
|
|
|
|
$gitlog
|
|
|
|
Please review it before you push. You can edit it with:
|
|
|
|
git commit --amend
|
|
|
|
"
|