X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=scripts%2Fgit-project-clone.sh;h=44d0ebab9d499cbdf4bebe6c3e8770b05692b06c;hb=2f6c8b3301eb8844c76956ec83b1b1aff24edebb;hp=7c3ed7985cc121a3045f754b09d62682c196038f;hpb=5887dbfbf90a17597adeed000f1ff503a7199a13;p=hvutilities.git diff --git a/scripts/git-project-clone.sh b/scripts/git-project-clone.sh index 7c3ed79..44d0eba 100755 --- a/scripts/git-project-clone.sh +++ b/scripts/git-project-clone.sh @@ -2,8 +2,7 @@ SCRIPT="`readlink -e $0`" SCRIPTPATH=$(dirname ${SCRIPT}) - -SUBREPOS_LIST=.gitsubrepos +source ${SCRIPTPATH}/hv-git-functions.sh # Uncomment to have verbose debug output ##debug=1 @@ -25,11 +24,7 @@ if [ ${#} -ne 2 ]; then exit 1 fi -if [ ! -f ${SUBREPOS_LIST} ]; then - echo "Missing file for list of subrepos: ${SUBREPOS_LIST}" - print_usage - exit 1 -fi +hv_git_validate_subrepos_list branch_from=${1} branch_new=${2} @@ -37,8 +32,6 @@ rc=0 clone_repo() { - local valid="0" - if [ ${#} -ne 1 ]; then echo "Missing repository name" exit 1 @@ -50,15 +43,18 @@ clone_repo() pushd "${r}" 1> /dev/null - exists=$(git show-ref refs/heads/${branch_new}) + b=${branch_new} + exists=$(git show-ref refs/heads/${b}) if [ -n "$exists" ]; then + # Switch to existing branch + vco -q ${b} 1> /dev/null echo "${b} (already created)" else # Create branch only if it doesn't already exist - vco -q -b ${branch_new} 1> /dev/null + vco -q -b ${b} 1> /dev/null if [ ${?} -ne 0 ]; then - echo "Error creating new branch: ${branch_new}" + echo "Error creating new branch: ${b}" rc=1 else echo "${b}" @@ -69,33 +65,32 @@ clone_repo() } # First, try to update all subrepos to BRANCH_FROM -git-project-update.sh ${branch_from} - -if [ ${?} -ne 0 ]; then - echo "Error switching to branch" - exit 1 -fi - -clone_repo ./ - -# Read list of repositories from file named .gitsubrepos -while IFS=$'\n' read r ; do - [[ "${r}" =~ \#.* ]] && continue # Skip comment lines - [ -z ${r} ] && continue # Skip enmpty lines +for r in ./ $(hv_git_get_subrepos_list); do # Make sure directory exists if [ ! -d "${r}" ]; then - echo "Missing repos ${r}" - exit 1 + echo "Missing repos ${r}, skipping" + continue fi - # Update only git repos - if [ ! -d "${r}/.git" ]; then - echo "Not a GIT repository" + hv_git_checkout ${r} ${branch_from} + if [ ${?} -ne 0 ]; then + echo "Error switching to ${branch_from} in repos ${r}" exit 1 fi +done + +# Then clone repo + +for r in ./ $(hv_git_get_subrepos_list); do + # Make sure directory exists + if [ ! -d "${r}" ]; then + echo "Missing repos ${r}, skipping" + continue + fi clone_repo ${r} -done < ${SUBREPOS_LIST} + rc=${?} +done exit ${rc}