| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 1 | #!/usr/bin/env bash |
| 2 | # |
| 3 | # Wrapper for git to handle more subdirs at the same time |
| 4 | # |
| Norbert Thiebaud | 8feb6c0 | 2010-11-22 03:11:56 -0600 | [diff] [blame] | 5 | |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 6 | if [ -n "$g_debug" ] ; then |
| 7 | set -x |
| 8 | fi |
| 9 | |
| Norbert Thiebaud | 060219a | 2012-11-08 16:25:37 -0600 | [diff] [blame] | 10 | SUBMODULES_ALL="dictionaries helpcontent2 translations" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 11 | |
| 12 | pushd $(dirname $0) > /dev/null |
| Norbert Thiebaud | ae4e327 | 2012-12-11 07:49:24 -0600 | [diff] [blame] | 13 | if [ -f config_host.mk ] ; then |
| Luboš Luňák | c8c056f | 2012-12-11 15:39:49 +0100 | [diff] [blame] | 14 | # we are in the BUILDDIR |
| Luboš Luňák | d449869 | 2012-12-11 16:39:02 +0100 | [diff] [blame] | 15 | SRC_ROOT=$(cat config_host.mk | grep SRC_ROOT | sed -e "s/.*=//") |
| Norbert Thiebaud | ae4e327 | 2012-12-11 07:49:24 -0600 | [diff] [blame] | 16 | else |
| 17 | SRC_ROOT=$(pwd) |
| 18 | fi |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 19 | popd > /dev/null |
| 20 | |
| Norbert Thiebaud | ae4e327 | 2012-12-11 07:49:24 -0600 | [diff] [blame] | 21 | COREDIR="$SRC_ROOT" |
| 22 | |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 23 | usage() |
| 24 | { |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 25 | git |
| 26 | echo |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 27 | echo "Usage: g [options] [git (checkout|clone|fetch|grep|pull|push|reset) [git options/args..]]" |
| 28 | echo "" |
| Peter Foley | 41b5c80 | 2012-10-16 20:43:21 -0400 | [diff] [blame] | 29 | echo " -z restore the git hooks and do other sanity checks" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 30 | } |
| 31 | |
| 32 | refresh_submodule_hooks() |
| 33 | { |
| 34 | local repo=$1 |
| 35 | local hook |
| 36 | local hook_name |
| 37 | |
| 38 | if [ -d ${repo?}/.git ] ; then |
| 39 | # use core's hook by default |
| 40 | for hook_name in $(ls -1 ${COREDIR?}/.git-hooks) ; do |
| 41 | hook="${repo?}/.git/hooks/${hook_name?}" |
| 42 | if [ ! -e "${hook?}" -o -L "${hook?}" ] ; then |
| 43 | rm -f "${hook?}" |
| 44 | ln -sf "${COREDIR?}/.git-hooks/${hook_name?}" "${hook?}" |
| 45 | fi |
| 46 | done |
| 47 | # override if need be by the submodules' own hooks |
| 48 | for hook_name in $(ls -1 ${COREDIR?}/${repo?}/.git-hooks 2>/dev/null) ; do |
| 49 | hook="${repo?}/.git/hooks/${hook_name?}" |
| 50 | if [ ! -e "${hook?}" -o -L "${hook?}" ] ; then |
| 51 | rm -f "${hook?}" |
| 52 | ln -sf "${COREDIR?}/${repo?}/.git-hooks/${hook_name?}" "${hook?}" |
| 53 | fi |
| 54 | done |
| Norbert Thiebaud | 0cac67b | 2012-12-21 04:33:20 -0600 | [diff] [blame] | 55 | elif [ -d .git/modules/${repo}/hooks ] ; then |
| 56 | for hook_name in $(ls -1 ${COREDIR?}/.git-hooks) ; do |
| 57 | hook=".git/modules/${repo?}/hooks/${hook_name?}" |
| 58 | if [ ! -e "${hook?}" -o -L "${hook?}" ] ; then |
| 59 | rm -f "${hook?}" |
| 60 | ln -sf "${COREDIR?}/.git-hooks/${hook_name?}" "${hook?}" |
| 61 | fi |
| 62 | done |
| 63 | # override if need be by the submodules' own hooks |
| 64 | for hook_name in $(ls -1 ${COREDIR?}/${repo?}/.git-hooks 2>/dev/null) ; do |
| 65 | hook=".git/modules/${repo?}/hooks/${hook_name?}" |
| 66 | if [ ! -e "${hook?}" -o -L "${hook?}" ] ; then |
| 67 | rm -f "${hook?}" |
| 68 | ln -sf "${COREDIR?}/${repo?}/.git-hooks/${hook_name?}" "${hook?}" |
| 69 | fi |
| 70 | done |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 71 | fi |
| Norbert Thiebaud | 0cac67b | 2012-12-21 04:33:20 -0600 | [diff] [blame] | 72 | |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 73 | } |
| 74 | |
| 75 | refresh_all_hooks() |
| 76 | { |
| 77 | local repo |
| 78 | local hook_name |
| 79 | local hook |
| 80 | |
| 81 | pushd ${COREDIR?} > /dev/null |
| 82 | for hook_name in $(ls -1 ${COREDIR?}/.git-hooks) ; do |
| 83 | hook=".git/hooks/${hook_name?}" |
| 84 | if [ ! -e "${hook?}" -o -L "${hook?}" ] ; then |
| 85 | rm -f "${hook?}" |
| 86 | ln -sf "${COREDIR?}/.git-hooks/${hook_name?}" "${hook?}" |
| 87 | fi |
| 88 | done |
| 89 | |
| 90 | for repo in ${SUBMODULES_ALL?} ; do |
| 91 | refresh_submodule_hooks $repo |
| 92 | done |
| 93 | popd > /dev/null |
| 94 | |
| 95 | } |
| 96 | |
| 97 | set_push_url() |
| 98 | { |
| 99 | local repo |
| 100 | |
| 101 | repo="$1" |
| 102 | if [ -n "$repo" ] ; then |
| 103 | pushd "${COREDIR?}/${repo?}" > /dev/null |
| 104 | else |
| 105 | pushd "${COREDIR?}" > /dev/null |
| 106 | repo="core" |
| 107 | fi |
| 108 | echo "setting up push url for ${repo?}" |
| 109 | if [ "${repo?}" = "helpcontent2" ] ; then |
| 110 | git config remote.origin.pushurl "ssh://${PUSH_USER}gerrit.libreoffice.org:29418/help" |
| 111 | else |
| 112 | git config remote.origin.pushurl "ssh://${PUSH_USER}gerrit.libreoffice.org:29418/${repo?}" |
| 113 | fi |
| 114 | popd > /dev/null |
| 115 | } |
| 116 | |
| 117 | set_push_urls() |
| 118 | { |
| 119 | PUSH_USER="$1" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 120 | set_push_url |
| 121 | for repo in ${SUBMODULES_ACTIVE?} ; do |
| 122 | set_push_url "${repo?}" |
| 123 | done |
| 124 | } |
| 125 | |
| 126 | get_active_submodules() |
| 127 | { |
| 128 | SUBMODULES_ACTIVE="" |
| 129 | local repo |
| 130 | |
| 131 | for repo in ${SUBMODULES_ALL?} ; do |
| 132 | if [ -d ${repo?}/.git ] ; then |
| 133 | SUBMODULES_ACTIVE="${repo?} ${SUBMODULES_ACTIVE?}" |
| 134 | fi |
| 135 | done |
| 136 | } |
| 137 | |
| 138 | get_configured_submodules() |
| 139 | { |
| 140 | SUBMODULES_CONFIGURED="" |
| Luboš Luňák | d449869 | 2012-12-11 16:39:02 +0100 | [diff] [blame] | 141 | if [ -f config_host.mk ] ; then |
| 142 | SUBMODULES_CONFIGURED=$(cat config_host.mk | grep GIT_NEEDED_SUBMODULES | sed -e "s/.*=//") |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 143 | else |
| 144 | # if we need the configured submoduel before the configuration is done. we assumed you want them all |
| 145 | SUBMODULES_CONFIGURED=${SUBMODULES_ALL?} |
| 146 | fi |
| 147 | } |
| 148 | |
| Miklos Vajna | 803137f | 2013-02-09 19:09:32 +0100 | [diff] [blame] | 149 | get_git_reference() |
| 150 | { |
| 151 | REFERENCED_GIT="" |
| 152 | if [ -f config_host.mk ]; then |
| 153 | REFERENCED_GIT=$(cat config_host.mk | grep GIT_REFERENCE_SRC | sed -e "s/.*=//") |
| 154 | fi |
| Lionel Elie Mamane | aa1a988 | 2013-06-21 13:31:37 +0200 | [diff] [blame] | 155 | LINKED_GIT="" |
| 156 | if [ -f config_host.mk ]; then |
| 157 | LINKED_GIT=$(cat config_host.mk | grep GIT_LINK_SRC | sed -e "s/.*=//") |
| 158 | fi |
| Miklos Vajna | 803137f | 2013-02-09 19:09:32 +0100 | [diff] [blame] | 159 | } |
| 160 | |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 161 | do_shortcut_update() |
| 162 | { |
| 163 | local module |
| 164 | local repo |
| 165 | |
| 166 | for module in $SUBMODULES_CONFIGURED ; do |
| 167 | if [ ! -d ${module?}/.git ] ; then |
| 168 | case "${module?}" in |
| Miklos Vajna | 2a8cabe | 2012-10-18 09:27:45 +0200 | [diff] [blame] | 169 | helpcontent2) |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 170 | if [ -d clone/help/.git ] ; then |
| 171 | repo="clone/help/.git" |
| 172 | fi |
| 173 | ;; |
| 174 | *) |
| 175 | if [ -d clone/${module?}/.git ] ; then |
| 176 | repo="clone/${module?}/.git" |
| 177 | fi |
| 178 | ;; |
| 179 | esac |
| 180 | if [ -n "$repo" ] ; then |
| 181 | cp -r "${repo?}" "${module?}/." |
| 182 | fi |
| Norbert Thiebaud | c58b4fc | 2012-10-02 13:29:01 -0500 | [diff] [blame] | 183 | fi |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 184 | done |
| 185 | } |
| 186 | |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 187 | do_git_cmd() |
| 188 | { |
| 189 | echo "cmd:$@" |
| 190 | git "$@" |
| 191 | git submodule foreach git "$@" $KEEP_GOING |
| 192 | } |
| 193 | |
| 194 | do_checkout() |
| 195 | { |
| 196 | local cmd |
| 197 | local create_branch="0" |
| 198 | local branch |
| Norbert Thiebaud | 2c5cdc4 | 2012-10-02 10:32:45 -0500 | [diff] [blame] | 199 | local module |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 200 | |
| 201 | git checkout "$@" || return $? |
| 202 | for cmd in "$@" ; do |
| 203 | if [ "$cmd" = "-f" ]; then |
| 204 | return 0 |
| 205 | elif [ "$cmd" = "-b" ] ; then |
| 206 | create_branch=1 |
| 207 | elif [ "$create_branch" = "1" ] ; then |
| 208 | branch="$arg" |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 209 | create_branch=0 |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 210 | fi |
| 211 | done |
| 212 | if [ -f .gitmodules ] ; then |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 213 | git submodule update |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 214 | if [ -n "$branch" ] ; then |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 215 | git submodules foreach git checkout -b ${branch} HEAD || return $? |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 216 | fi |
| 217 | else |
| 218 | # now that is the nasty case we moved prior to submodules |
| Norbert Thiebaud | 2c5cdc4 | 2012-10-02 10:32:45 -0500 | [diff] [blame] | 219 | # delete the submodules left over if any |
| 220 | for module in $SUBMODULES_ALL ; do |
| 221 | echo "clean-up submodule $module" |
| 222 | rm -fr ${module} |
| 223 | done |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 224 | # make sure we have the needed repo in clone |
| 225 | ./g clone && ./g -f checkout "$@" || return $? |
| 226 | fi |
| 227 | return $? |
| 228 | } |
| 229 | |
| 230 | do_reset() |
| 231 | { |
| 232 | git reset "$@" || return $? |
| 233 | if [ -f .gitmodules ] ; then |
| 234 | git submodule update || return $? |
| 235 | else |
| 236 | # now that is the nasty case we moved prior to submodules |
| Norbert Thiebaud | 2c5cdc4 | 2012-10-02 10:32:45 -0500 | [diff] [blame] | 237 | # delete the submodules left over if any |
| 238 | for module in $SUBMODULES_ALL ; do |
| 239 | echo "clean-up submodule $module" |
| 240 | rm -fr ${module} |
| 241 | done |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 242 | # make sure we have the needed repo in clone |
| 243 | ./g clone && ./g -f reset "$@" |
| 244 | fi |
| 245 | return $?; |
| 246 | } |
| 247 | |
| 248 | do_init_modules() |
| 249 | { |
| 250 | local module |
| 251 | local configured |
| 252 | |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 253 | do_shortcut_update |
| 254 | |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 255 | for module in $SUBMODULES_CONFIGURED ; do |
| Lionel Elie Mamane | aa1a988 | 2013-06-21 13:31:37 +0200 | [diff] [blame] | 256 | if [ -n "$LINKED_GIT" ] ; then |
| 257 | if ! [ -d ".git/modules/${module}" ]; then |
| 258 | ./bin/git-new-module-workdir "${LINKED_GIT}/${module}" "${module}" |
| 259 | fi |
| 260 | fi |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 261 | configured=$(git config --local --get submodule.${module}.url) |
| 262 | if [ -z "$configured" ] ; then |
| 263 | git submodule init $module || return $? |
| 264 | fi |
| 265 | done |
| Miklos Vajna | 73b50b7 | 2013-02-26 16:17:51 +0100 | [diff] [blame] | 266 | for module in $SUBMODULES_CONFIGURED ; do |
| 267 | if [ -n "$REFERENCED_GIT" ] ; then |
| Miklos Vajna | 803137f | 2013-02-09 19:09:32 +0100 | [diff] [blame] | 268 | git submodule update --reference $REFERENCED_GIT/.git/modules/$module $module || return $? |
| Miklos Vajna | 73b50b7 | 2013-02-26 16:17:51 +0100 | [diff] [blame] | 269 | else |
| 270 | git submodule update $module || return $? |
| 271 | fi |
| 272 | done |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 273 | return 0 |
| 274 | } |
| 275 | |
| 276 | |
| 277 | # no params, no action |
| 278 | if [ "$#" -eq "0" ] ; then |
| 279 | usage |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 280 | fi |
| 281 | |
| Miklos Vajna | 889934e | 2011-09-05 20:45:43 +0200 | [diff] [blame] | 282 | if [ ! "`type -p git`" ]; then |
| 283 | echo "Cannot find the git binary! Is git installed and is in PATH?" |
| 284 | exit 1 |
| 285 | fi |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 286 | |
| Norbert Thiebaud | 71e5200 | 2011-08-27 23:41:18 -0500 | [diff] [blame] | 287 | |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 288 | get_active_submodules |
| 289 | get_configured_submodules |
| Miklos Vajna | 803137f | 2013-02-09 19:09:32 +0100 | [diff] [blame] | 290 | get_git_reference |
| Bjoern Michaelsen | 79e9a64 | 2012-07-10 12:57:01 +0200 | [diff] [blame] | 291 | |
| Jan Holesovsky | 40dd1bc | 2010-11-25 00:13:14 +0100 | [diff] [blame] | 292 | |
| Norbert Thiebaud | 71e5200 | 2011-08-27 23:41:18 -0500 | [diff] [blame] | 293 | |
| Norbert Thiebaud | 71e5200 | 2011-08-27 23:41:18 -0500 | [diff] [blame] | 294 | |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 295 | # extra params for some commands, like log |
| 296 | EXTRA= |
| 297 | COMMAND="$1" |
| 298 | PAGER= |
| 299 | RELATIVIZE=1 |
| 300 | PUSH_ALL= |
| Michael Meeks | 4d2803d | 2011-10-25 13:20:58 +0100 | [diff] [blame] | 301 | PUSH_USER= |
| 302 | PUSH_NOTES= |
| 303 | LAST_WORKING= |
| 304 | SET_LAST_WORKING= |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 305 | ALLOW_EMPTY= |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 306 | KEEP_GOING= |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 307 | REPORT_REPOS=1 |
| Stephan Bergmann | 79e65ee | 2011-11-29 16:38:46 +0100 | [diff] [blame] | 308 | REPORT_COMMANDS=0 |
| Norbert Thiebaud | 67dd44fb | 2011-05-01 03:26:45 -0500 | [diff] [blame] | 309 | REPORT_COMPACT=0 |
| Norbert Thiebaud | 71e5200 | 2011-08-27 23:41:18 -0500 | [diff] [blame] | 310 | DO_HOOK_REFRESH=false |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 311 | |
| 312 | while [ "${COMMAND:0:1}" = "-" ] ; do |
| 313 | case "$COMMAND" in |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 314 | -f )KEEP_GOING="||:" |
| Michael Stahl | 175f17b | 2011-11-03 21:56:21 +0100 | [diff] [blame] | 315 | ;; |
| 316 | -z) |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 317 | refresh_all_hooks |
| 318 | exit 0; |
| Michael Stahl | 175f17b | 2011-11-03 21:56:21 +0100 | [diff] [blame] | 319 | ;; |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 320 | --set-push-urls) |
| 321 | shift |
| 322 | PUSH_USER="$1" |
| 323 | if [ -n "${PUSH_USER}" ] ; then |
| 324 | PUSH_USER="${PUSH_USER}@" |
| 325 | fi |
| Jan Holesovsky | e1b59fc | 2012-11-23 20:58:27 +0100 | [diff] [blame] | 326 | set_push_urls "$PUSH_USER" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 327 | exit 0; |
| 328 | ;; |
| 329 | -*) |
| 330 | echo "option: $COMMAND not supported" 1>&2 |
| 331 | exit 1 |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 332 | esac |
| 333 | shift |
| 334 | COMMAND="$1" |
| 335 | done |
| 336 | |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 337 | shift |
| 338 | |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 339 | case "$COMMAND" in |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 340 | branch) |
| 341 | do_git_cmd ${COMMAND} "$@" |
| 342 | ;; |
| 343 | checkout) |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 344 | do_checkout "$@" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 345 | ;; |
| 346 | clone) |
| Miklos Vajna | 803137f | 2013-02-09 19:09:32 +0100 | [diff] [blame] | 347 | do_init_modules && refresh_all_hooks |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 348 | ;; |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 349 | fetch) |
| 350 | (git fetch "$@" && git submodule foreach git fetch "$@" ) && git submodule update |
| 351 | |
| 352 | ;; |
| 353 | grep) |
| 354 | KEEP_GOING="||:" |
| 355 | do_git_cmd ${COMMAND} "$@" |
| 356 | ;; |
| 357 | pull) |
| 358 | git pull "$@" && git submodule update && refresh_all_hooks |
| 359 | ;; |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 360 | push) |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 361 | git submodule foreach git push "$@" |
| 362 | if [ "$?" = "0" ] ; then |
| 363 | git push "$@" |
| 364 | fi |
| 365 | ;; |
| 366 | reset) |
| 367 | do_reset |
| 368 | ;; |
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 369 | tag) |
| 370 | do_git_cmd ${COMMAND} "$@" |
| 371 | ;; |
| Peter Foley | 41b5c80 | 2012-10-16 20:43:21 -0400 | [diff] [blame] | 372 | "") |
| 373 | ;; |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 374 | *) |
| Peter Foley | 41b5c80 | 2012-10-16 20:43:21 -0400 | [diff] [blame] | 375 | echo "./g does not support command: $COMMAND" 1>&2 |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 376 | exit 1; |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 377 | ;; |
| 378 | esac |
| 379 | |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 380 | exit $? |
| Norbert Thiebaud | 71e5200 | 2011-08-27 23:41:18 -0500 | [diff] [blame] | 381 | |
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 382 | # vi:set shiftwidth=4 expandtab: |