Offer bootstrap after clone (#45)
This commit is contained in:
parent
12a23178d8
commit
08e6cd40cb
1 changed files with 47 additions and 2 deletions
49
yadm
49
yadm
|
@ -40,6 +40,10 @@ USE_CYGPATH=0
|
|||
#; flag when something may have changes (which prompts auto actions to be performed)
|
||||
CHANGES_POSSIBLE=0
|
||||
|
||||
#; flag when a bootstrap should be performed after cloning
|
||||
#; 0: skip auto_bootstrap, 1: ask, 2: perform bootstrap, 3: prevent bootstrap
|
||||
DO_BOOTSTRAP=0
|
||||
|
||||
function main() {
|
||||
|
||||
require_git
|
||||
|
@ -98,6 +102,7 @@ function main() {
|
|||
#; process automatic events
|
||||
auto_alt
|
||||
auto_perms
|
||||
auto_bootstrap
|
||||
|
||||
exit $retval
|
||||
|
||||
|
@ -188,13 +193,32 @@ function clean() {
|
|||
|
||||
function clone() {
|
||||
|
||||
DO_BOOTSTRAP=1
|
||||
|
||||
clone_args=()
|
||||
while [[ $# -gt 0 ]] ; do
|
||||
key="$1"
|
||||
case $key in
|
||||
--bootstrap) #; force bootstrap, without prompt
|
||||
DO_BOOTSTRAP=2
|
||||
;;
|
||||
--no-bootstrap) #; prevent bootstrap, without prompt
|
||||
DO_BOOTSTRAP=3
|
||||
;;
|
||||
*) #; main arguments are kept intact
|
||||
clone_args+=("$1")
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
#; clone will begin with a bare repo
|
||||
local empty=
|
||||
init $empty
|
||||
|
||||
#; add the specified remote, and configure the repo to track origin/master
|
||||
debug "Adding remote to new repo"
|
||||
"$GIT_PROGRAM" remote add origin "$@"
|
||||
"$GIT_PROGRAM" remote add origin "${clone_args[@]}"
|
||||
debug "Configuring new repo to track origin/master"
|
||||
"$GIT_PROGRAM" config branch.master.remote origin
|
||||
"$GIT_PROGRAM" config branch.master.merge refs/heads/master
|
||||
|
@ -204,7 +228,7 @@ function clone() {
|
|||
"$GIT_PROGRAM" fetch origin || {
|
||||
debug "Removing repo after failed clone"
|
||||
rm -rf "$YADM_REPO"
|
||||
error_out "Unable to fetch origin $1"
|
||||
error_out "Unable to fetch origin ${clone_args[0]}"
|
||||
}
|
||||
debug "Doing an initial merge of origin/master"
|
||||
"$GIT_PROGRAM" merge origin/master || {
|
||||
|
@ -228,6 +252,8 @@ function clone() {
|
|||
and then handle the conflicts in another way.
|
||||
EOF
|
||||
else
|
||||
#; skip auto_bootstrap if conflicts could not be stashed
|
||||
DO_BOOTSTRAP=0
|
||||
cat <<EOF
|
||||
**NOTE**
|
||||
Merging origin/master failed.
|
||||
|
@ -636,6 +662,25 @@ function auto_perms() {
|
|||
|
||||
}
|
||||
|
||||
function auto_bootstrap() {
|
||||
|
||||
bootstrap_available || return
|
||||
|
||||
[ "$DO_BOOTSTRAP" -eq 0 ] && return
|
||||
[ "$DO_BOOTSTRAP" -eq 3 ] && return
|
||||
[ "$DO_BOOTSTRAP" -eq 2 ] && bootstrap
|
||||
if [ "$DO_BOOTSTRAP" -eq 1 ] ; then
|
||||
echo "Found $YADM_BOOTSTRAP"
|
||||
echo "It appears that a bootstrap program exists."
|
||||
echo "Would you like to execute it now? (y/n)"
|
||||
read -r answer
|
||||
if [[ $answer =~ ^[yY]$ ]] ; then
|
||||
bootstrap
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
#; ****** Prerequisites Functions ******
|
||||
|
||||
function require_archive() {
|
||||
|
|
Loading…
Reference in a new issue