| 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 |
| Ilmari Lauhakangas | 55c5b27 | 2017-04-15 18:35:17 +0300 | [diff] [blame] | 15 | SRC_ROOT=$(< config_host.mk grep -a 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 | { | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 34 | local repo=$1 |
| 35 | local hook | ||||
| 36 | local hook_name | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 37 | |
| Ilmari Lauhakangas | e5b1c53 | 2017-04-27 12:46:47 +0300 | [diff] [blame] | 38 | if [ -d "${repo?}"/.git ] ; then |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 39 | # use core's hook by default |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 40 | for hook_name in "${COREDIR?}/.git-hooks"/* ; do |
| Ilmari Lauhakangas | 55c5b27 | 2017-04-15 18:35:17 +0300 | [diff] [blame] | 41 | hook="${repo?}/.git/hooks/${hook_name##*/}" |
| 42 | if [ ! -e "${hook?}" ] || [ -L "${hook?}" ] ; then | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 43 | rm -f "${hook?}" |
| 44 | ln -sf "${hook_name}" "${hook?}" | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 45 | fi |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 46 | done |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 47 | # override if need be by the submodules' own hooks |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 48 | for hook_name in "${COREDIR?}/${repo?}/.git-hooks"/* ; do |
| Ilmari Lauhakangas | 55c5b27 | 2017-04-15 18:35:17 +0300 | [diff] [blame] | 49 | hook="${repo?}/.git/hooks/${hook_name##*/}" |
| 50 | if [ ! -e "${hook?}" ] || [ -L "${hook?}" ] ; then | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 51 | rm -f "${hook?}" |
| 52 | ln -sf "${hook_name}" "${hook?}" | ||||
| 53 | fi | ||||
| 54 | done | ||||
| Ilmari Lauhakangas | e5b1c53 | 2017-04-27 12:46:47 +0300 | [diff] [blame] | 55 | elif [ -d .git/modules/"${repo}"/hooks ] ; then |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 56 | for hook_name in "${COREDIR?}/.git-hooks"/* ; do |
| Ilmari Lauhakangas | 55c5b27 | 2017-04-15 18:35:17 +0300 | [diff] [blame] | 57 | hook=".git/modules/${repo?}/hooks/${hook_name##*/}" |
| 58 | if [ ! -e "${hook?}" ] || [ -L "${hook?}" ] ; then | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 59 | rm -f "${hook?}" |
| 60 | ln -sf "${hook_name}" "${hook?}" | ||||
| Norbert Thiebaud | 0cac67b | 2012-12-21 04:33:20 -0600 | [diff] [blame] | 61 | fi |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 62 | done |
| Norbert Thiebaud | 0cac67b | 2012-12-21 04:33:20 -0600 | [diff] [blame] | 63 | # override if need be by the submodules' own hooks |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 64 | for hook_name in "${COREDIR?}/${repo?}/.git-hooks"/* ; do |
| Ilmari Lauhakangas | 55c5b27 | 2017-04-15 18:35:17 +0300 | [diff] [blame] | 65 | hook=".git/modules/${repo?}/hooks/${hook_name##*/}" |
| 66 | if [ ! -e "${hook?}" ] || [ -L "${hook?}" ] ; then | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 67 | rm -f "${hook?}" |
| 68 | ln -sf "${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 | { | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 77 | local repo |
| 78 | local hook_name | ||||
| 79 | local hook | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 80 | |
| Stephan Bergmann | a3e51e2 | 2015-01-14 15:42:00 +0100 | [diff] [blame] | 81 | pushd "${COREDIR?}" > /dev/null |
| Ilmari Lauhakangas | e5b1c53 | 2017-04-27 12:46:47 +0300 | [diff] [blame] | 82 | for hook_name in "${COREDIR?}/.git-hooks"/* ; do |
| Ilmari Lauhakangas | 55c5b27 | 2017-04-15 18:35:17 +0300 | [diff] [blame] | 83 | hook=".git/hooks/${hook_name##*/}" |
| 84 | if [ ! -e "${hook?}" ] || [ -L "${hook?}" ] ; then | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 85 | rm -f "${hook?}" |
| Ilmari Lauhakangas | 55c5b27 | 2017-04-15 18:35:17 +0300 | [diff] [blame] | 86 | ln -sf "${hook_name}" "${hook?}" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 87 | fi |
| 88 | done | ||||
| 89 | |||||
| 90 | for repo in ${SUBMODULES_ALL?} ; do | ||||
| Ilmari Lauhakangas | e5b1c53 | 2017-04-27 12:46:47 +0300 | [diff] [blame] | 91 | refresh_submodule_hooks "$repo" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 92 | done |
| 93 | popd > /dev/null | ||||
| 94 | |||||
| 95 | } | ||||
| 96 | |||||
| 97 | set_push_url() | ||||
| 98 | { | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 99 | local repo |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 100 | |
| 101 | repo="$1" | ||||
| 102 | if [ -n "$repo" ] ; then | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 103 | pushd "${COREDIR?}/${repo?}" > /dev/null |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 104 | else |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 105 | pushd "${COREDIR?}" > /dev/null |
| 106 | repo="core" | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 107 | fi |
| 108 | echo "setting up push url for ${repo?}" | ||||
| 109 | if [ "${repo?}" = "helpcontent2" ] ; then | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 110 | git config remote.origin.pushurl "ssh://${PUSH_USER}logerrit/help" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 111 | else |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 112 | git config remote.origin.pushurl "ssh://${PUSH_USER}logerrit/${repo?}" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 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 | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 122 | set_push_url "${repo?}" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 123 | done |
| 124 | } | ||||
| 125 | |||||
| 126 | get_active_submodules() | ||||
| 127 | { | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 128 | SUBMODULES_ACTIVE="" |
| 129 | local repo | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 130 | |
| 131 | for repo in ${SUBMODULES_ALL?} ; do | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 132 | if [ -d "${repo?}"/.git ] || [ -f "${repo?}"/.git ] ; then |
| 133 | SUBMODULES_ACTIVE="${repo?} ${SUBMODULES_ACTIVE?}" | ||||
| 134 | fi | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 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 |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 142 | SUBMODULES_CONFIGURED=$(< config_host.mk grep -a GIT_NEEDED_SUBMODULES | sed -e "s/.*=//") |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 143 | else |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 144 | # if we need the configured submodule before the configuration is done. we assumed you want them all |
| 145 | SUBMODULES_CONFIGURED=${SUBMODULES_ALL?} | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 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 | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 153 | REFERENCED_GIT=$(< config_host.mk grep -a GIT_REFERENCE_SRC | sed -e "s/.*=//") |
| Miklos Vajna | 803137f | 2013-02-09 19:09:32 +0100 | [diff] [blame] | 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 | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 157 | LINKED_GIT=$(< config_host.mk grep -a GIT_LINK_SRC | sed -e "s/.*=//") |
| Lionel Elie Mamane | aa1a988 | 2013-06-21 13:31:37 +0200 | [diff] [blame] | 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 | { | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 163 | local module |
| 164 | local repo | ||||
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 165 | |
| 166 | for module in $SUBMODULES_CONFIGURED ; do | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 167 | if [ ! -d "${module?}"/.git ] ; then |
| 168 | case "${module?}" in | ||||
| 169 | helpcontent2) | ||||
| 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 | ||||
| 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 | { | ||||
| Ilmari Lauhakangas | e5b1c53 | 2017-04-27 12:46:47 +0300 | [diff] [blame] | 189 | echo "cmd:$*" |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 190 | git "$@" |
| 191 | git submodule foreach git "$@" $KEEP_GOING | ||||
| 192 | } | ||||
| 193 | |||||
| 194 | do_checkout() | ||||
| 195 | { | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 196 | local cmd |
| 197 | local create_branch="0" | ||||
| 198 | local branch | ||||
| 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 | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 203 | if [ "$cmd" = "-f" ]; then |
| Thorsten Behrens | 5fce97a | 2018-07-02 18:11:47 +0200 | [diff] [blame] | 204 | continue |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 205 | elif [ "$cmd" = "-b" ] ; then |
| 206 | create_branch=1 | ||||
| 207 | elif [ "$create_branch" = "1" ] ; then | ||||
| 208 | branch="$cmd" | ||||
| 209 | create_branch=0 | ||||
| 210 | fi | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 211 | done |
| 212 | if [ -f .gitmodules ] ; then | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 213 | git submodule update |
| 214 | if [ -n "$branch" ] ; then | ||||
| 215 | git submodule foreach git checkout -b "${branch}" HEAD || return $? | ||||
| 216 | fi | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 217 | else |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 218 | # now that is the nasty case we moved prior to submodules |
| 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 | ||||
| 224 | # make sure we have the needed repo in clone | ||||
| 225 | ./g clone && ./g -f checkout "$@" || return $? | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 226 | fi |
| 227 | return $? | ||||
| 228 | } | ||||
| 229 | |||||
| 230 | do_reset() | ||||
| 231 | { | ||||
| 232 | git reset "$@" || return $? | ||||
| 233 | if [ -f .gitmodules ] ; then | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 234 | git submodule update || return $? |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 235 | else |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 236 | # now that is the nasty case we moved prior to submodules |
| 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 | ||||
| 242 | # make sure we have the needed repo in clone | ||||
| 243 | ./g clone && ./g -f reset "$@" | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 244 | fi |
| 245 | return $?; | ||||
| 246 | } | ||||
| 247 | |||||
| 248 | do_init_modules() | ||||
| 249 | { | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 250 | local module |
| 251 | local configured | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 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 |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +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 | ||||
| 261 | configured=$(git config --local --get submodule."${module}".url) | ||||
| 262 | if [ -z "$configured" ] ; then | ||||
| 263 | git submodule init "$module" || return $? | ||||
| 264 | fi | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 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 | ||||
| Ilmari Lauhakangas | e5b1c53 | 2017-04-27 12:46:47 +0300 | [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 |
| Ilmari Lauhakangas | e5b1c53 | 2017-04-27 12:46:47 +0300 | [diff] [blame] | 270 | git submodule update "$module" || return $? |
| Miklos Vajna | 73b50b7 | 2013-02-26 16:17:51 +0100 | [diff] [blame] | 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 | |||||
| Ilmari Lauhakangas | 55c5b27 | 2017-04-15 18:35:17 +0300 | [diff] [blame] | 282 | if [ ! "$(type -p git)" ]; then |
| Miklos Vajna | 889934e | 2011-09-05 20:45:43 +0200 | [diff] [blame] | 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) | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 317 | refresh_all_hooks |
| 318 | exit 0; | ||||
| Michael Stahl | 175f17b | 2011-11-03 21:56:21 +0100 | [diff] [blame] | 319 | ;; |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [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 | ||||
| 326 | set_push_urls "$PUSH_USER" | ||||
| 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) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 341 | do_git_cmd "${COMMAND}" "$@" |
| 342 | ;; | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 343 | checkout) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 344 | do_checkout "$@" |
| 345 | ;; | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 346 | clone) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [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) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 350 | (git fetch "$@" && git submodule foreach git fetch "$@" ) && git submodule update |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 351 | |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 352 | ;; |
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 353 | grep) |
| 354 | KEEP_GOING="||:" | ||||
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 355 | do_git_cmd "${COMMAND}" "$@" |
| 356 | ;; | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 357 | pull) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 358 | git pull "$@" && git submodule update && refresh_all_hooks |
| 359 | ;; | ||||
| Jan Holesovsky | a694de1 | 2010-11-16 15:00:48 +0100 | [diff] [blame] | 360 | push) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 361 | git submodule foreach git push "$@" |
| 362 | if [ "$?" = "0" ] ; then | ||||
| 363 | git push "$@" | ||||
| 364 | fi | ||||
| 365 | ;; | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 366 | reset) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 367 | do_reset |
| 368 | ;; | ||||
| Norbert Thiebaud | a31714f | 2012-10-02 12:59:44 -0500 | [diff] [blame] | 369 | tag) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 370 | do_git_cmd "${COMMAND}" "$@" |
| 371 | ;; | ||||
| 372 | "") | ||||
| 373 | ;; | ||||
| Norbert Thiebaud | 9152c42 | 2012-10-01 23:48:10 -0500 | [diff] [blame] | 374 | *) |
| Thorsten Behrens | 4c475bc | 2018-07-02 18:11:22 +0200 | [diff] [blame] | 375 | echo "./g does not support command: $COMMAND" 1>&2 |
| 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: |