| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/usr/bin/env bash
- #=============================================================================
- # Copyright 2010-2012 Kitware, Inc.
- #
- # 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
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # 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 the topic stage for pushing changes.
- # Project configuration instructions:
- #
- # - Run a Topic Stage repository next to the main project repository.
- #
- # - Populate adjacent "config" file with:
- # stage.url = Topic Stage repository URL
- # stage.pushurl = Topic Stage push URL if not "$url"
- egrep-q() {
- egrep "$@" >/dev/null 2>/dev/null
- }
- die() {
- echo 1>&2 "$@" ; exit 1
- }
- # Make sure we are inside the repository.
- cd "${BASH_SOURCE%/*}" &&
- # Load the project configuration.
- fetchurl_=$(git config -f config --get stage.url) &&
- pushurl_=$(git config -f config --get stage.pushurl || echo "$fetchurl_") &&
- remote=$(git config -f config --get stage.remote || echo 'stage') ||
- die 'This project is not configured to use a topic stage.'
- # Get current stage push URL.
- pushurl=$(git config --get remote."$remote".pushurl ||
- git config --get remote."$remote".url || echo '') &&
- # Tell user about current configuration.
- if test -n "$pushurl"; then
- echo 'Remote "'"$remote"'" is currently configured to push to
- '"$pushurl"'
- ' &&
- read -ep 'Reconfigure Topic Stage? [y/N]: ' ans &&
- if [ "$ans" == "y" ] || [ "$ans" == "Y" ]; then
- setup=1
- else
- setup=''
- fi
- else
- setup=1
- fi
- # Perform setup if necessary.
- if test -n "$setup"; then
- echo 'Setting up the topic stage...' &&
- fetchurl="${fetchurl_}" &&
- if test -z "$pushurl"; then
- git remote add "$remote" "$fetchurl"
- else
- git config remote."$remote".url "$fetchurl"
- fi &&
- pushurl="${pushurl_}" &&
- if test "$pushurl" != "$fetchurl"; then
- git config remote."$remote".pushurl "$pushurl"
- fi &&
- echo 'Remote "'"$remote"'" is now configured to push to
- '"$pushurl"'
- '
- fi || die 'Could not configure the topic stage remote.'
|