From: Tim Otten Date: Mon, 7 Oct 2013 23:46:00 +0000 (+0100) Subject: gitify - Setup both "origin" and "upstream" remotes (optionally) X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=d68421a730e70d397d02a91058ecab3eb87549f1;p=civicrm-core.git gitify - Setup both "origin" and "upstream" remotes (optionally) --- diff --git a/bin/gitify b/bin/gitify index 21421713e8..3b9d4535ab 100755 --- a/bin/gitify +++ b/bin/gitify @@ -4,6 +4,7 @@ #### Helpers #### +########################################### ## usage: do_gitify [git-checkout-options] function do_gitify() { REPO="$1" @@ -32,6 +33,7 @@ function do_gitify() { rm -rf "$TMP" } +########################################### ## add hook shims to a repo ## usage: do_hookify function do_hookify() { @@ -56,6 +58,21 @@ TMPL fi } +########################################### +## Create or update the URL of a git remote +## usage: git_set_remote +function git_set_remote() { + REPODIR="$1" + REMOTE_NAME="$2" + REMOTE_URL="$3" + echo "[[Set remote ($REMOTE_NAME => $REMOTE_URL within $REPODIR)]]" + + pushd "$REPODIR" >> /dev/null + git remote set-url "$REMOTE_NAME" "$REMOTE_URL" >/dev/null 2>&1 || git remote add "$REMOTE_NAME" "$REMOTE_URL" + popd >> /dev/null +} + +########################################### ## usage: do_svnify function do_svnify() { REPO="$1" @@ -74,6 +91,7 @@ function do_svnify() { svn co "$REPO" "$TGT" } +########################################### ## usage: do_gencode function do_gencode() { pushd "$1/xml" > /dev/null @@ -86,10 +104,19 @@ function do_gencode() { popd > /dev/null } +########################################### ## config_repo +## 1 2 3 4 function config_repo() { - do_gitify "${GIT_BASE_URL}/${1}.git" "$2" -b "$3" + do_gitify "${UPSTREAM_GIT_BASE_URL}/${1}.git" "$2" -b "$3" do_hookify "$1" "$2" "$4" + ## doesn't work with http -- git ls-remote "git://github.com/civicrm/civicrm-drupalz.git" HEAD --exit-code &>- ; echo $? + if [ -n "$FORK_GIT_BASE_URL" ]; then + git_set_remote "$2" upstream "${UPSTREAM_GIT_BASE_URL}/${1}.git" + git_set_remote "$2" origin "${FORK_GIT_BASE_URL}/${1}.git" + else + git_set_remote "$2" origin "${UPSTREAM_GIT_BASE_URL}/${1}.git" + fi } function check_dep() { @@ -102,28 +129,33 @@ function check_dep() { fi } -#### Main: Parse arguments #### +########################################### +#### Main: Parse arguments set -e CIVICRM_CMS="" -GIT_BASE_URL="" CIVICRM_ROOT="" CIVICRM_L10N="" CIVICRM_GIT_HOOKS="" CIVICRM_BRANCH="master" +FORK_GIT_BASE_URL="" +UPSTREAM_GIT_BASE_URL="https://github.com/civicrm" while [ -n "$1" ]; do if [ "$1" == "--l10n" ]; then CIVICRM_L10N="$1" elif [ "$1" == "--hooks" ]; then CIVICRM_GIT_HOOKS="$1" + elif [ "$1" == "--upstream" ]; then + shift + UPSTREAM_GIT_BASE_URL="$1" + elif [ "$1" == "--fork" ]; then + shift + FORK_GIT_BASE_URL="$1" elif [ -z "$CIVICRM_CMS" ]; then ## First arg CIVICRM_CMS="$1" - elif [ -z "$GIT_BASE_URL" ]; then - ## Second arg - GIT_BASE_URL="$1" elif [ -z "$CIVICRM_ROOT" ]; then ## Third arg CIVICRM_ROOT="$1" @@ -134,12 +166,14 @@ while [ -n "$1" ]; do shift done -if [ -z "$CIVICRM_ROOT" -o ! -d "$CIVICRM_ROOT" -o -z "$GIT_BASE_URL" -o -z "$CIVICRM_CMS" ]; then +if [ -z "$CIVICRM_ROOT" -o ! -d "$CIVICRM_ROOT" -o -z "$UPSTREAM_GIT_BASE_URL" -o -z "$CIVICRM_CMS" ]; then echo "Convert a directory into a set of CiviCRM git clones" - echo "usage: $0 [--l10n] [--hooks]" + echo "usage: $0 [--fork ] [--upstream ] [--l10n] [--hooks]" echo " : one of: Drupal|Drupal6|Joomla|WordPress|all" echo " : a base URL shared by the desiried git repos (e.g. git://github.com/civicrm)" echo " : the main directory containing CiviCRM" + echo " --upstream : specify the base URL for upstream repositories" + echo " --fork : specify the base URL for your personal fork repositories" echo " --l10n: optionally fetch localization data; currently requires svn" echo " --hooks: optionally install recommended git hooks; the hooks are mostly" echo " tested with git CLI under Linux and OSX; they haven't been" @@ -148,17 +182,18 @@ if [ -z "$CIVICRM_ROOT" -o ! -d "$CIVICRM_ROOT" -o -z "$GIT_BASE_URL" -o -z "$CI echo "Note: If pointing to a pre-existing directory, your local changes may be replaced by" echo "the pristine code from git/svn. If you've made changes, then make sure there's a backup!" echo "" - echo "example: $0 Drupal git://github.com/civicrm /var/www/drupal7/sites/all/modules/civicrm" - echo " (checkout core code plus Drupal 7.x integration code using Git's read-only protocol)" + echo "example: $0 Drupal /var/www/drupal7/sites/all/modules/civicrm" + echo " (checkout core code plus Drupal 7.x integration code)" echo "" - echo "example: $0 Drupal6 https://github.com/civicrm /var/www/drupal6/sites/all/modules/civicrm" - echo " (checkout core code plus Drupal 6.x integration code using read-only HTTP protocol)" + echo "example: $0 Drupal6 /var/www/drupal6/sites/all/modules/civicrm" + echo " (checkout core code plus Drupal 6.x integration code)" echo "" - echo "example: $0 all git@github.com:civicrm ~/src/civicrm l10n" + echo "example: $0 all ~/src/civicrm --upstream git@github.com:civicrm --l10n" echo " (checkout core code plus Drupal 7.x, Joomla, and WordPress integration code and l10n using SSH)" exit 1 fi +########################################### #### Main: Update git repo metadata #### check_dep