Commit | Line | Data |
---|---|---|
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] | |
8 | function 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> | |
36 | function 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 | ||
53 | function check_dep() { | |
54 | if [ -z `which git` ]; then | |
55 | echo "command not found: git" | |
56 | exit | |
57 | fi | |
58 | } | |
59 | ||
60 | #### Main #### | |
61 | ||
62 | set -e | |
63 | ||
64 | CIVICRM_CMS="$1" | |
65 | GIT_BASE_URL="$2" | |
66 | CIVICRM_ROOT="$3" | |
67 | CIVICRM_L10N="$4" | |
68 | CIVICRM_BRANCH="master" | |
69 | if [ -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 | |
89 | fi | |
90 | ||
91 | check_dep | |
92 | do_gitify "${GIT_BASE_URL}/civicrm-core.git" "$CIVICRM_ROOT" -b "${CIVICRM_BRANCH}" | |
93 | do_gitify "${GIT_BASE_URL}/civicrm-packages.git" "$CIVICRM_ROOT/packages" -b "${CIVICRM_BRANCH}" | |
94 | case "$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" | |
114 | esac | |
115 | ||
116 | if [ "$CIVICRM_L10N" == "--l10n" ]; then | |
117 | do_svnify "http://svn.civicrm.org/l10n/trunk" "$CIVICRM_ROOT/l10n" | |
118 | fi |