tools/scripts/git - Add recommended hooks
[civicrm-core.git] / bin / gitify
CommitLineData
bed96570
TO
1#!/bin/bash
2
3## Take an existing, tar-based CiviCRM directory and convert it to a git working directory
4
5#### Helpers ####
6
7## usage: do_gitify <repo-url> <existing-dir> [git-checkout-options]
8function do_gitify() {
9 REPO="$1"
10 TGT="$2"
11 TMP="${TGT}.tmp"
12 shift 2
13
14 if [ -d "$TGT/.git" ]; then
15 echo "[[Already checked out git repo ($TGT) -- skip $REPO]]"
16 return
17 fi
18 [ -d $TGT ] || mkdir -p "$TGT"
19 [ -d $TMP ] && rm -rf "$TMP"
20 echo "[[Checkout $REPO ($TMP)]]"
21 echo "[git clone "$@" "$REPO" "$TMP"]"
22 git clone "$@" "$REPO" "$TMP"
23
24 echo "[[Swap metadata]]"
25 mv "$TMP/.git" "$TGT/.git"
26
27 echo "[[Remove local modifications]]"
28 pushd "$TGT" > /dev/null
29 git checkout -- .
30 popd > /dev/null
31
32 rm -rf "$TMP"
33}
34
35## usage: do_svnify <repo-url> <existing-dir>
36function do_svnify() {
37 REPO="$1"
38 TGT="$2"
39 shift 2
40
41 if [ -d "$TGT/.svn" ]; then
42 echo "[[Already checked out SVN repo ($TGT) -- skip $REPO]]"
43 return
44 fi
45 [ -d $TGT ] || mkdir -p "$TGT"
46 [ -d $TMP ] && rm -rf "$TMP"
47 echo "[[Checkout $REPO ($TMP)]]"
48
49 echo "[svn co \"$REPO\" \"$TGT\"]"
50 svn co "$REPO" "$TGT"
51}
52
53function check_dep() {
54 if [ -z `which git` ]; then
55 echo "command not found: git"
56 exit
57 fi
58}
59
60#### Main ####
61
62set -e
63
64CIVICRM_CMS="$1"
65GIT_BASE_URL="$2"
66CIVICRM_ROOT="$3"
67CIVICRM_L10N="$4"
68CIVICRM_BRANCH="master"
69if [ -z "$CIVICRM_ROOT" -o ! -d "$CIVICRM_ROOT" -o -z "$GIT_BASE_URL" -o -z "$CIVICRM_CMS" ]; then
70 echo "Convert a directory into a set of CiviCRM git clones"
71 echo "usage: $0 <Drupal|Drupal6|Joomla|WordPress|all> <git-base-url> <existing-civicrm-root> [--l10n]"
72 echo " <cms-name>: one of: Drupal|Drupal6|Joomla|WordPress|all"
73 echo " <git-base-url>: a base URL shared by the desiried git repos (e.g. git://github.com/civicrm)"
74 echo " <existing-civicrm-root>: the main directory containing CiviCRM"
75 echo " [l10n]: optionally fetch localization data; currently requires svn"
76 echo ""
77 echo "Note: If pointing to a pre-existing directory, your local changes may be replaced by"
78 echo "the pristine code from git/svn. If you've made changes, then make sure there's a backup!"
79 echo ""
591a8a6b 80 echo "example: $0 Drupal git://github.com/civicrm /var/www/drupal7/sites/all/modules/civicrm"
bed96570
TO
81 echo " (checkout core code plus Drupal 7.x integration code using Git's read-only protocol)"
82 echo ""
591a8a6b 83 echo "example: $0 Drupal6 https://github.com/civicrm /var/www/drupal6/sites/all/modules/civicrm"
bed96570
TO
84 echo " (checkout core code plus Drupal 6.x integration code using read-only HTTP protocol)"
85 echo ""
591a8a6b 86 echo "example: $0 all git@github.com:civicrm ~/src/civicrm l10n"
bed96570
TO
87 echo " (checkout core code plus Drupal 7.x, Joomla, and WordPress integration code and l10n using SSH)"
88 exit 1
89fi
90
91check_dep
92do_gitify "${GIT_BASE_URL}/civicrm-core.git" "$CIVICRM_ROOT" -b "${CIVICRM_BRANCH}"
93do_gitify "${GIT_BASE_URL}/civicrm-packages.git" "$CIVICRM_ROOT/packages" -b "${CIVICRM_BRANCH}"
94case "$CIVICRM_CMS" in
95 Drupal)
0221d828 96 do_gitify "${GIT_BASE_URL}/civicrm-drupal.git" "$CIVICRM_ROOT/drupal" -b "7.x-${CIVICRM_BRANCH}"
bed96570
TO
97 ;;
98 Drupal6)
0221d828 99 do_gitify "${GIT_BASE_URL}/civicrm-drupal.git" "$CIVICRM_ROOT/drupal" -b "6.x-${CIVICRM_BRANCH}"
bed96570
TO
100 ;;
101 Joomla)
102 do_gitify "${GIT_BASE_URL}/civicrm-joomla.git" "$CIVICRM_ROOT/joomla" -b "${CIVICRM_BRANCH}"
103 ;;
104 WordPress)
105 do_gitify "${GIT_BASE_URL}/civicrm-wordpress.git" "$CIVICRM_ROOT/WordPress" -b "${CIVICRM_BRANCH}"
106 ;;
107 all)
0221d828 108 do_gitify "${GIT_BASE_URL}/civicrm-drupal.git" "$CIVICRM_ROOT/drupal" -b "7.x-${CIVICRM_BRANCH}"
bed96570
TO
109 do_gitify "${GIT_BASE_URL}/civicrm-joomla.git" "$CIVICRM_ROOT/joomla" -b "${CIVICRM_BRANCH}"
110 do_gitify "${GIT_BASE_URL}/civicrm-wordpress.git" "$CIVICRM_ROOT/WordPress" -b "${CIVICRM_BRANCH}"
111 ;;
112 *)
113 echo "Unrecognized CMS: $CIVICRM_CMS"
114esac
115
116if [ "$CIVICRM_L10N" == "--l10n" ]; then
117 do_svnify "http://svn.civicrm.org/l10n/trunk" "$CIVICRM_ROOT/l10n"
118fi