it looks like this is working now for a powerup done in a project directory with no parameters, even if that project directory is a way deep subdirectory of a git repository rather than a stand-alone repository. had to stop before fully powered up due to blah blah but need to test out fully and then remove debug noises.
version control library had a feature removed which was not being used and seemed dangerous anyhow.
##############
-# check git version to see if we can use autostash.
-# this appears to be an ubuntu issue, where xenial did not provide it even though the
-# feature appeared in git 2.6 and xenial claims it has git version 2.7.4. eventually,
-# this version test can go away.
-gitvertest="$(git version | sed -e 's/git version [0-9]\.//' | sed -e 's/\.[0-9][0-9]*$//' )"
-if (( $gitvertest >= 11 )); then
- # auto-stash is not available until 2.6 for git, but ubuntu is misreporting or using a
- # differing version number somehow. we are sure autostash was missing on ubuntu xenial
- # with git 2.7.4 and it's definitely present in zesty with git at 2.11.
-# PULL_ADDITION='--rebase --autostash'
-#although initially attractive, above set of flags seems to lose history we don't want to
-#lose.
-PULL_ADDITION=
-fi
-
-##############
-
# the maximum depth that the recursive functions will try to go below the starting directory.
export MAX_DEPTH=5
remote_branch_info=$(git ls-remote --heads origin $bran 2>/dev/null)
if [ ! -z "$remote_branch_info" ]; then
# we are pretty sure the remote branch does exist.
- git pull --tags $PULL_ADDITION origin "$bran" | $TO_SPLITTER
+ git pull --tags origin "$bran" | $TO_SPLITTER
promote_pipe_return 0
fi
exit_on_error "git pull of remote branch: $bran"
# now pull down any changes in our own origin in the repo, to stay in synch
# with any changes from others.
- git pull --tags $PULL_ADDITION --all | $TO_SPLITTER
+ git pull --tags --all | $TO_SPLITTER
#is the above really important when we did this branch already in the loop?
#it does an --all, but is that effective or different? should we be doing that in above loop?
promote_pipe_return 0
elif [ -d ".git" ]; then
if test_writeable ".git"; then
$blatt_report
- git pull --tags $PULL_ADDITION 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER
+ git pull --tags 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER
promote_pipe_return 0
exit_on_error "git pull of origin"
fi
# basic information that is constant for all site avenger sites.
# the top level of the user's application storage.
-export BASE_APPLICATION_PATH="$HOME/apps"
+if [ -z "$BASE_APPLICATION_PATH" ]; then
+ export BASE_APPLICATION_PATH="$HOME/apps"
+fi
# where the code should come from.
-export DEFAULT_REPOSITORY_ROOT="git@github.com:kwentworth"
+if [ -z "$DEFAULT_REPOSITORY_ROOT" ]; then
+ export DEFAULT_REPOSITORY_ROOT="git@github.com:kwentworth"
+fi
# we checkout the git repository to a directory underneath the app storage
# directory named this (see below for "this"), if that directory name is found.
# this is a saco designs infrastructure standard.
-export CHECKOUT_DIR_NAME="avenger5"
+if [ -z "$CHECKOUT_DIR_NAME" ]; then
+ export CHECKOUT_DIR_NAME="avenger5"
+fi
# the subfolder that the web browser will look for the site in,
# underneath the application's specific path.
-export STORAGE_SUFFIX="/public"
+if [ -z "$STORAGE_SUFFIX" ]; then
+ export STORAGE_SUFFIX="/public"
+fi
####
+#hmmm: below does not have any protection to avoid overriding existing values, like above does. do we need more?
+
# constants within our cakelampvm machine.
# in our scheme, the single IP address that all our domains map to.
exit_on_error "Switching to our app dir '$full_app_dir'"
local complete_path="$full_app_dir"
- if [ ! -z "$checkout_dirname" ]; then
+#hmmm: below code problematic for when we want a new git clone to show up!
+ if [ ! -z "$checkout_dirname" -a -d "$full_app_dir/$checkout_dirname" ]; then
# make the full path using the non-empty checkout dir name.
complete_path+="/$checkout_dirname"
+ else
+ # using the additional path component failed, so we reset that to see if
+ # we can still proceed normally.
+ unset checkout_dirname
fi
+echo set complete_path: $complete_path
+
# see if the checkout directory exits. the repo_found variable is set to
# non-empty if we find it and it's a valid git repo.
repo_found=
- if [ -d "$full_app_dir" ]; then
+ if [ -d "$complete_path" ]; then
# checkout directory exists, so let's check it.
- pushd "$full_app_dir" &>/dev/null
- exit_on_error "Switching to directory for check out: $full_app_dir"
+ pushd "$complete_path" &>/dev/null
+ exit_on_error "Switching to directory for check out: $complete_path"
# ask for repository name (without .git).
if git rev-parse --git-dir > /dev/null 2>&1; then
# we don't consider the state of having the dir exist but the repo be wrong as good.
if [ -z "$repo_found" ]; then
echo "There is a problem; this folder is not a valid repository:"
- echo " $full_app_dir"
+ echo " $complete_path"
echo "This script cannot continue unless the git repository is valid."
exit 1
fi
if [ ! -z "$repo_found" ]; then
# a repository was found, so update the version here and leave.
+ pushd "$complete_path" &>/dev/null
+ exit_on_error "Switching to directory for repo update: $complete_path"
echo "Repository $repo_name exists. Updating it."
- rgetem
+ git pull --tags --all
exit_on_error "Recursive checkout on: $complete_path"
+ popd &>/dev/null
else
# clone the repo since it wasn't found.
+ pushd "$complete_path/.." &>/dev/null
+ exit_on_error "Switching to parent directory prior to new clone: $complete_path/.."
echo "Cloning repository $repo_name now."
git clone "$repo_root/$repo_name.git" $checkout_dirname
exit_on_error "Git clone of repository: $repo_name"
+ popd &>/dev/null
fi
#unused?