SCRIPT="`readlink -e $0`"
SCRIPTPATH=$(dirname ${SCRIPT})
-
-SUBREPOS_LIST=.gitsubrepos
+source ${SCRIPTPATH}/hv-git-functions.sh
# Uncomment to have verbose debug output
##debug=1
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}
clone_repo()
{
- local valid="0"
-
if [ ${#} -ne 1 ]; then
echo "Missing repository name"
exit 1
popd 1> /dev/null
}
-update_repo()
-{
- local valid="0"
-
- if [ ${#} -ne 1 ]; then
- echo "Missing repository name"
- exit 1
- fi
-
- local r=${1}
-
- echo -n "Repo ${r}: "
-
- pushd "${r}" 1> /dev/null
- b=${branch_from}
-
- exists=$(git show-ref refs/heads/${b})
- if [ -n "$exists" ]; then
- vco -q ${b} 1> /dev/null
-
- if [ ${?} -ne 0 ]; then
- rc=1
- echo "${b} (error)"
- else
- echo "${b}"
- fi
- else
- echo "${b} (not found)"
- rc=1
- fi
-
- popd 1> /dev/null
-}
-
# First, try to update all subrepos to BRANCH_FROM
-update_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
- update_repo ${r}
-done < ${SUBREPOS_LIST}
-
-if [ ${rc} -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
+# Then clone repo
+for r in ./ $(hv_git_get_subrepos_list); do
# Make sure directory exists
if [ ! -d "${r}" ]; then
- echo "Missing repos ${r}"
- exit 1
- fi
-
- # Update only git repos
- if [ ! -d "${r}/.git" ]; then
- echo "Not a GIT repository"
- exit 1
+ echo "Missing repos ${r}, skipping"
+ continue
fi
clone_repo ${r}
-done < ${SUBREPOS_LIST}
+ rc=${?}
+done
exit ${rc}