| OLD | NEW |
| 1 #!/bin/bash | 1 #!/bin/bash |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 # A convenience script to largely replicate the behavior of `gclient sync` in a | 6 # A convenience script to largely replicate the behavior of `gclient sync` in a |
| 7 # submodule-based checkout. Fetches latest commits for top-level solutions; | 7 # submodule-based checkout. Fetches latest commits for top-level solutions; |
| 8 # updates submodules; and runs post-sync hooks. | 8 # updates submodules; and runs post-sync hooks. |
| 9 | 9 |
| 10 # Auto-update depot_tools | 10 # Auto-update depot_tools |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 fi | 38 fi |
| 39 | 39 |
| 40 if ( echo test | xargs -I bar true 2>/dev/null ); then | 40 if ( echo test | xargs -I bar true 2>/dev/null ); then |
| 41 replace_arg="-I replace_arg" | 41 replace_arg="-I replace_arg" |
| 42 else | 42 else |
| 43 replace_arg="-ireplace_arg" | 43 replace_arg="-ireplace_arg" |
| 44 fi | 44 fi |
| 45 | 45 |
| 46 usage() { | 46 usage() { |
| 47 cat <<EOF | 47 cat <<EOF |
| 48 Usage: git-crup [-n|--dry-run] [--fetch] [-j|--jobs [jobs]] | 48 Usage: git-crup [-n|--dry-run] [--fetch|--sync] [-j|--jobs [jobs]] |
| 49 [--no-hooks] [<args to git-pull or git-fetch>] | 49 [--no-hooks] [<args to git-pull or git-fetch>] |
| 50 EOF | 50 EOF |
| 51 } | 51 } |
| 52 | 52 |
| 53 serial_update() { | 53 serial_update() { |
| 54 ( cd "$1" | 54 ( cd "$1" |
| 55 $GIT_EXE $pull $pull_args -q origin | sed "s/^/[$1] /g" | 55 if test -n "$toplevel_cmd"; then |
| 56 if [ $? -ne 0 ]; then | 56 $toplevel_cmd | sed "s/^/[$1] /g" |
| 57 return $? | 57 if [ $? -ne 0 ]; then |
| 58 return $? |
| 59 fi |
| 58 fi | 60 fi |
| 59 $GIT_EXE submodule --quiet sync | 61 $GIT_EXE submodule --quiet sync |
| 60 $GIT_EXE ls-files -s | grep ^160000 | awk '{print $4}' | | 62 $GIT_EXE ls-files -s | grep ^160000 | awk '{print $4}' | |
| 61 while read submod; do | 63 while read submod; do |
| 62 "$crup_runner" "$1/$submod" | 64 "$crup_runner" "$1/$submod" |
| 63 done | 65 done |
| 64 ) | 66 ) |
| 65 } | 67 } |
| 66 | 68 |
| 67 while test $# -ne 0; do | 69 while test $# -ne 0; do |
| (...skipping 18 matching lines...) Expand all Loading... |
| 86 -n|--dry-run) | 88 -n|--dry-run) |
| 87 ECHO=echo | 89 ECHO=echo |
| 88 ;; | 90 ;; |
| 89 -h|--help) | 91 -h|--help) |
| 90 usage | 92 usage |
| 91 exit 0 | 93 exit 0 |
| 92 ;; | 94 ;; |
| 93 --fetch) | 95 --fetch) |
| 94 pull=fetch | 96 pull=fetch |
| 95 ;; | 97 ;; |
| 98 --sync) |
| 99 pull= |
| 100 ;; |
| 96 --no-hooks|--nohooks) | 101 --no-hooks|--nohooks) |
| 97 hooks=no | 102 hooks=no |
| 98 ;; | 103 ;; |
| 99 *) | 104 *) |
| 100 pull_args="$pull_args $1" | 105 pull_args="$pull_args $1" |
| 101 break | 106 break |
| 102 ;; | 107 ;; |
| 103 esac | 108 esac |
| 104 shift | 109 shift |
| 105 done | 110 done |
| (...skipping 11 matching lines...) Expand all Loading... |
| 117 | 122 |
| 118 if ( echo test test | xargs -P 2 true 2>/dev/null ); then | 123 if ( echo test test | xargs -P 2 true 2>/dev/null ); then |
| 119 xargs_parallel=yes | 124 xargs_parallel=yes |
| 120 else | 125 else |
| 121 if test "$j" != "1"; then | 126 if test "$j" != "1"; then |
| 122 echo "Warning: parallel execution is not supported on this platform." 1>&2 | 127 echo "Warning: parallel execution is not supported on this platform." 1>&2 |
| 123 fi | 128 fi |
| 124 xargs_parallel=no | 129 xargs_parallel=no |
| 125 fi | 130 fi |
| 126 | 131 |
| 132 if test -n "$pull"; then |
| 133 toplevel_cmd="$GIT_EXE $pull $pull_args -q origin" |
| 134 else |
| 135 toplevel_cmd= |
| 136 fi |
| 137 |
| 127 set -o pipefail | 138 set -o pipefail |
| 128 if test "$xargs_parallel" = "yes"; then | 139 if test "$xargs_parallel" = "yes"; then |
| 129 ( ls -d */.git | sed 's/\/\.git$//' | | 140 ( ls -d */.git | sed 's/\/\.git$//' | |
| 130 xargs $max_lines $replace_arg -P "$j" \ | 141 xargs $max_lines $replace_arg -P "$j" \ |
| 131 "$crup_runner" replace_arg $GIT_EXE $pull $pull_args -q origin | | 142 "$crup_runner" replace_arg $toplevel_cmd | |
| 132 xargs $max_lines -P "$j" "$crup_runner" ) | 143 xargs $max_lines -P "$j" "$crup_runner" ) |
| 133 else | 144 else |
| 134 ls -d */.git | | 145 ls -d */.git | |
| 135 while read gitdir; do | 146 while read gitdir; do |
| 136 serial_update "${gitdir%%/.git}" | 147 serial_update "${gitdir%%/.git}" |
| 137 done | 148 done |
| 138 fi | 149 fi |
| 139 | 150 |
| 140 status=$? | 151 status=$? |
| 141 | 152 |
| 142 if [ "$status" -ne 0 ]; then | 153 if [ "$status" -ne 0 ]; then |
| 143 cat 1>&2 <<EOF | 154 cat 1>&2 <<EOF |
| 144 Please check the preceding terminal output for error messages. | 155 Please check the preceding terminal output for error messages. |
| 145 Run 'git submodule status' to see the current state of submodule checkouts. | 156 Run 'git submodule status' to see the current state of submodule checkouts. |
| 146 EOF | 157 EOF |
| 147 exit $status | 158 exit $status |
| 148 fi | 159 fi |
| 149 | 160 |
| 150 if [ "$hooks" = "yes" ]; then | 161 if [ "$hooks" = "yes" ]; then |
| 151 "$runhooks" | 162 "$runhooks" |
| 152 status=$? | 163 status=$? |
| 153 fi | 164 fi |
| 154 | 165 |
| 155 echo | 166 echo |
| 156 exit $status | 167 exit $status |
| OLD | NEW |