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)
|
#; flag when something may have changes (which prompts auto actions to be performed)
|
||||||
CHANGES_POSSIBLE=0
|
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() {
|
function main() {
|
||||||
|
|
||||||
require_git
|
require_git
|
||||||
|
@ -98,6 +102,7 @@ function main() {
|
||||||
#; process automatic events
|
#; process automatic events
|
||||||
auto_alt
|
auto_alt
|
||||||
auto_perms
|
auto_perms
|
||||||
|
auto_bootstrap
|
||||||
|
|
||||||
exit $retval
|
exit $retval
|
||||||
|
|
||||||
|
@ -188,13 +193,32 @@ function clean() {
|
||||||
|
|
||||||
function clone() {
|
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
|
#; clone will begin with a bare repo
|
||||||
local empty=
|
local empty=
|
||||||
init $empty
|
init $empty
|
||||||
|
|
||||||
#; add the specified remote, and configure the repo to track origin/master
|
#; add the specified remote, and configure the repo to track origin/master
|
||||||
debug "Adding remote to new repo"
|
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"
|
debug "Configuring new repo to track origin/master"
|
||||||
"$GIT_PROGRAM" config branch.master.remote origin
|
"$GIT_PROGRAM" config branch.master.remote origin
|
||||||
"$GIT_PROGRAM" config branch.master.merge refs/heads/master
|
"$GIT_PROGRAM" config branch.master.merge refs/heads/master
|
||||||
|
@ -204,7 +228,7 @@ function clone() {
|
||||||
"$GIT_PROGRAM" fetch origin || {
|
"$GIT_PROGRAM" fetch origin || {
|
||||||
debug "Removing repo after failed clone"
|
debug "Removing repo after failed clone"
|
||||||
rm -rf "$YADM_REPO"
|
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"
|
debug "Doing an initial merge of origin/master"
|
||||||
"$GIT_PROGRAM" merge origin/master || {
|
"$GIT_PROGRAM" merge origin/master || {
|
||||||
|
@ -228,6 +252,8 @@ function clone() {
|
||||||
and then handle the conflicts in another way.
|
and then handle the conflicts in another way.
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
|
#; skip auto_bootstrap if conflicts could not be stashed
|
||||||
|
DO_BOOTSTRAP=0
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
**NOTE**
|
**NOTE**
|
||||||
Merging origin/master failed.
|
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 ******
|
#; ****** Prerequisites Functions ******
|
||||||
|
|
||||||
function require_archive() {
|
function require_archive() {
|
||||||
|
|
Loading…
Reference in a new issue