8038435: Some hgforest.sh commands don't receive parameters
authormduigou
Wed, 26 Mar 2014 16:56:58 -0700
changeset 23427 abbf38fbeb4c
parent 23426 5c7182ea50e0
child 23428 3c8a05bf4656
child 23437 e3f4c0b99422
8038435: Some hgforest.sh commands don't receive parameters Reviewed-by: katleman
common/bin/hgforest.sh
--- a/common/bin/hgforest.sh	Tue Mar 25 14:50:15 2014 -0700
+++ b/common/bin/hgforest.sh	Wed Mar 26 16:56:58 2014 -0700
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 
 #
 # Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
@@ -60,10 +60,10 @@
 
 
 command="$1"; shift
-repo_base="$@"
+command_args="$@"
 
 usage() {
-      echo "usage: $0 [-q|--quiet] [-v|--verbose] [--] <command> [repo_base_path]" > ${status_output}
+      echo "usage: $0 [-q|--quiet] [-v|--verbose] [--] <command> [commands...]" > ${status_output}
       exit 1
 }
 
@@ -113,26 +113,30 @@
 pull_default=""
 repos=""
 repos_extra=""
-if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
-  if [ -f .hg/hgrc ] ; then
-    pull_default=`hg paths default`
-    if [ "${pull_default}" = "" ] ; then
-      echo "ERROR: Need initial clone with 'hg paths default' defined" > ${status_output}
-      exit 1
-    fi
-  fi
-  if [ "${pull_default}" = "" ] ; then
+if [ "${command}" = "clone" -o "${command}" = "fclone" -o "${command}" = "tclone" ] ; then
+  if [ ! -f .hg/hgrc ] ; then
     echo "ERROR: Need initial repository to use this script" > ${status_output}
     exit 1
   fi
+
+  pull_default=`hg paths default`
+  if [ "${pull_default}" = "" ] ; then
+    echo "ERROR: Need initial clone with 'hg paths default' defined" > ${status_output}
+    exit 1
+  fi
+
   for i in ${subrepos} ; do
     if [ ! -f ${i}/.hg/hgrc ] ; then
       repos="${repos} ${i}"
     fi
   done
-  if [ "${repo_base}" != "" ] ; then
+  if [ "${command_args}" != "" ] ; then
     pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'`
-    pull_extra="${repo_base}/${pull_default_tail}"
+    if [ "x${pull_default}" = "x${pull_default_tail}" ] ; then
+      echo "ERROR: Need initial clone from non-local source" > ${status_output}
+      exit 1
+    fi
+    pull_extra="${command_args}/${pull_default_tail}"
     for i in ${subrepos_extra} ; do
       if [ ! -f ${i}/.hg/hgrc ] ; then
         repos_extra="${repos_extra} ${i}"
@@ -214,9 +218,8 @@
     done
     (
       (
-        if [ "${command}" = "clone" -o "${command}" = "fclone" ] ; then
+        if [ "${command}" = "clone" -o "${command}" = "fclone" -o "${command}" = "tclone" ] ; then
           pull_newrepo="`echo ${pull_base}/${i} | sed -e 's@\([^:]/\)//*@\1@g'`"
-          echo "hg clone ${pull_newrepo} ${i}" > ${status_output}
           path="`dirname ${i}`"
           if [ "${path}" != "." ] ; then
             times=0
@@ -229,10 +232,11 @@
               sleep 5
             done
           fi
+          echo "hg clone ${pull_newrepo} ${i}" > ${status_output}
           (PYTHONUNBUFFERED=true hg${global_opts} clone ${pull_newrepo} ${i}; echo "$?" > ${tmp}/${repopidfile}.pid.rc ) 2>&1 &
         else
-          echo "cd ${i} && hg${global_opts} ${command} ${repo_base}" > ${status_output}
-          cd ${i} && (PYTHONUNBUFFERED=true hg${global_opts} ${command} ${command_repo}; echo "$?" > ${tmp}/${repopidfile}.pid.rc ) 2>&1 &
+          echo "cd ${i} && hg${global_opts} ${command} ${command_args}" > ${status_output}
+          cd ${i} && (PYTHONUNBUFFERED=true hg${global_opts} ${command} ${command_args}; echo "$?" > ${tmp}/${repopidfile}.pid.rc ) 2>&1 &
         fi
 
         echo $! > ${tmp}/${repopidfile}.pid