Index: git-crup |
diff --git a/git-crup b/git-crup |
index 155afda63c6629f86336d0076851b00ed1bb4d53..8b96e7aaba8c0fcefab83ab64fe5f1ef0bd84e86 100755 |
--- a/git-crup |
+++ b/git-crup |
@@ -7,61 +7,40 @@ |
# submodule-based checkout. Fetches latest commits for top-level solutions; |
# updates submodules; and runs post-sync hooks. |
-# Auto-update depot_tools |
-if [ -z "$GIT_CRUP_REINVOKE" ]; then |
- update_depot_tools || exit 1 |
- GIT_CRUP_REINVOKE=1 exec bash "$0" "$@" |
-fi |
- |
-export GIT_MERGE_AUTOEDIT=0 |
- |
+orig_args="$@" |
ECHO= |
pull=pull |
pull_args= |
hooks=yes |
j=10 |
crup_runner="crup-runner.sh" |
-runhooks="git-runhooks" |
- |
-kernel_name=$(uname -s) |
-if [ "${kernel_name:0:5}" = "MINGW" -o "${kernel_name:0:6}" = "CYGWIN" ]; then |
- GIT_EXE=git.exe |
-else |
- GIT_EXE=git |
-fi |
-export GIT_EXE |
- |
-if ( echo test | xargs --max-lines=1 true 2>/dev/null ); then |
- max_lines="--max-lines=1" |
-else |
- max_lines="-L 1" |
-fi |
- |
-if ( echo test | xargs -I bar true 2>/dev/null ); then |
- replace_arg="-I replace_arg" |
-else |
- replace_arg="-ireplace_arg" |
-fi |
usage() { |
cat <<EOF |
Usage: git-crup [-n|--dry-run] [--fetch|--sync] [-j|--jobs [jobs]] |
[--no-hooks] [<args to git-pull or git-fetch>] |
+ |
+ -n, --dry-run Don't do anything; just show what would have been done. |
+ --fetch Run 'git fetch' on top-level sources, but don't merge. |
+ --sync Don't do anything at all to the top-level sources. |
+ -j, --jobs Run this many jobs in parallel. |
+ --no-hooks Don't run hooks (e.g., to generate build files) after |
+ updating. |
EOF |
} |
serial_update() { |
( cd "$1" |
if test -n "$toplevel_cmd"; then |
- $toplevel_cmd | sed "s/^/[$1] /g" |
+ $ECHO $toplevel_cmd | sed "s/^/[$1] /g" |
if [ $? -ne 0 ]; then |
return $? |
fi |
fi |
- $GIT_EXE submodule --quiet sync |
- $GIT_EXE ls-files -s | grep ^160000 | awk '{print $4}' | |
+ $ECHO git submodule --quiet sync |
+ $ECHO git ls-files -s | grep ^160000 | awk '{print $4}' | |
while read submod; do |
- "$crup_runner" "$1/$submod" |
+ $ECHO "$crup_runner" "$1/$submod" |
done |
) |
} |
@@ -109,6 +88,17 @@ while test $# -ne 0; do |
shift |
done |
+# Auto-update depot_tools. |
+if [ -z "$GIT_CRUP_REINVOKE" ]; then |
+ kernel_name="\$(uname -s)" |
+ if [ "\${kernel_name:0:5}" = "MINGW" ]; then |
+ cmd '/C update_depot_tools.bat' |
+ else |
+ update_depot_tools |
+ fi |
+ GIT_CRUP_REINVOKE=1 exec bash "$0" $orig_args |
+fi |
+ |
while test "$PWD" != "/"; do |
if test -f "$PWD/src/.gitmodules"; then |
break |
@@ -120,6 +110,20 @@ if test "$PWD" = "/"; then |
exit 1 |
fi |
+export GIT_MERGE_AUTOEDIT=no |
+ |
+if ( echo test | xargs --max-lines=1 true 2>/dev/null ); then |
+ max_lines="--max-lines=1" |
+else |
+ max_lines="-L 1" |
+fi |
+ |
+if ( echo test | xargs -I bar true 2>/dev/null ); then |
+ replace_arg="-I replace_arg" |
+else |
+ replace_arg="-ireplace_arg" |
+fi |
+ |
if ( echo test test | xargs -P 2 true 2>/dev/null ); then |
xargs_parallel=yes |
else |
@@ -130,7 +134,7 @@ else |
fi |
if test -n "$pull"; then |
- toplevel_cmd="$GIT_EXE $pull $pull_args -q origin" |
+ toplevel_cmd="git $pull $pull_args -q origin" |
else |
toplevel_cmd= |
fi |
@@ -139,8 +143,8 @@ set -o pipefail |
if test "$xargs_parallel" = "yes"; then |
( ls -d */.git | sed 's/\/\.git$//' | |
xargs $max_lines $replace_arg -P "$j" \ |
- "$crup_runner" replace_arg $toplevel_cmd | |
- xargs $max_lines -P "$j" "$crup_runner" ) |
+ "$crup_runner" replace_arg $ECHO $toplevel_cmd | |
+ xargs $max_lines -P "$j" $ECHO "$crup_runner" ) |
else |
ls -d */.git | |
while read gitdir; do |
@@ -159,7 +163,7 @@ EOF |
fi |
if [ "$hooks" = "yes" ]; then |
- "$runhooks" |
+ $ECHO git runhooks |
status=$? |
fi |