1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#!/usr/bin/env bash
#==========================================================================
#
# Copyright NumFOCUS
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0.txt
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#==========================================================================*/
# Run this script to set up your local repository for development with Git.
cd "${BASH_SOURCE%/*}/.." &&
Utilities/GitSetup/setup-user && echo &&
Utilities/GitSetup/setup-hooks && echo &&
Utilities/GitSetup/setup-git-aliases && echo &&
(Utilities/GitSetup/setup-upstream ||
echo 'Failed to setup origin. Run this again to retry.') && echo &&
(Utilities/GitSetup/setup-github ||
echo 'Failed to setup GitHub. Run this again to retry.') && echo &&
Utilities/GitSetup/tips &&
Utilities/GitSetup/github-tips
# Rebase master by default
git config rebase.stat true
git config branch.master.rebase true
# Disable old Gerrit hooks
hook=$(git config --get hooks.GerritId) &&
if "$hook"; then
echo '
ITK has migrated from Gerrit to GitHub for code reviews.
Disabling the GerritId hook that adds a "Change-Id" footer to commit
messages for interaction with Gerrit. Also, removing the "gerrit" and "stage" remote.' &&
git config hooks.GerritId false
git config --get remote.gerrit.url > /dev/null && \
git remote remove gerrit
git config --get remote.stage.url > /dev/null && \
git remote remove stage
fi
# Blame should ignore bulk style changes by default
git config blame.ignoreRevsFile .git-blame-ignore-revs
# Style hook configuration
git config hooks.KWStyle.conf "Utilities/KWStyle/ITK.kws.xml"
git config hooks.KWStyle.overwriteRulesConf "Utilities/KWStyle/ITKOverwrite.txt"
# Make sure we are inside the repository.
cd "$(echo "$0"|sed 's/[^/]*$//')"/..
if test -d .git/.git; then
die "The directory '.git/.git' exists, indicating a configuration error.
Please 'rm -rf' this directory."
fi
# Check to make sure we have a new enough git.
git_required_major_version=1
git_required_minor_version=6
git_required_release_version=6
git_required_bugfix_version="" # Use "" if there is no bugfix version.
echo "Checking Git version..."
git_version=$(git --version | awk '{print $3}')
declare -a git_version_arr
git_version_arr=(`echo ${git_version//./ }`)
insufficient_version() {
if test -z "${git_required_bugfix_version}"; then
git_required_version="${git_required_major_version}.${git_required_minor_version}.${git_required_release_version}"
else
git_required_version="${git_required_major_version}.${git_required_minor_version}.${git_required_release_version}.${git_required_bugfix_version}"
fi
die "Insufficient Git version.
Detected version was
${git_version}
and the minimum required version is
${git_required_version}"
}
if test ${git_version_arr[0]} -lt $git_required_major_version; then
insufficient_version
elif test ${git_version_arr[0]} -eq $git_required_major_version; then
if test ${git_version_arr[1]} -lt $git_required_minor_version; then
insufficient_version
elif test ${git_version_arr[1]} -eq $git_required_minor_version; then
if test ${git_version_arr[2]} -lt $git_required_release_version; then
insufficient_version
elif test ${git_version_arr[2]} -eq $git_required_release_version; then
if test -n "${git_required_bugfix_version}" -a \
-n "${git_version_arr[3]}" -o \
${git_version_arr[3]} -lt $git_required_bugfix_version; then
insufficient_version
fi
fi
fi
fi
echo -e "Git version $git_version is OK.\n"
# Record the version of this setup so Hooks/pre-commit can check it.
SetupForDevelopment_VERSION=9
git config hooks.SetupForDevelopment ${SetupForDevelopment_VERSION}
|