##############
-# 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
# use our splitter tool for lengthy output if it's available.
-if [ ! -z "$(which splitter 2>/dev/null)" ]; then
- TO_SPLITTER="$(which splitter)"
+if [ ! -z "$(whichable splitter)" ]; then
+ TO_SPLITTER="$(whichable splitter)"
# calculate the number of columsn in the terminal.
cols=$(get_maxcols)
TO_SPLITTER+=" --maxcol $(($cols - 1))"
if [ $nicedir == "." ]; then
nicedir=$(\pwd)
fi
- local blatt="echo -ne \nchecking in '$nicedir'... "
+ local blatt_report="echo -ne \nchecking in '$nicedir'... "
+ local tell_no_checkin="echo -ne \nskipping check-in due to presence of .no-checkin sentinel file: $nicedir"
pushd "$directory" &>/dev/null
- if [ -f ".no-checkin" ]; then
- echo -ne "\nskipping check-in due to presence of .no-checkin sentinel file: $directory"
- elif [ -d "CVS" ]; then
+#hmmm: overly elaborate sections below here, but we do want precise handling for git case.
+ if [ -d "CVS" ]; then
if test_writeable "CVS"; then
do_revctrl_simple_update "$directory"
exit_on_error "updating repository; this issue should be fixed before check-in."
- $blatt
- cvs ci .
- exit_on_error "cvs checkin"
+ if [ -f ".no-checkin" ]; then
+# echo -ne "\nskipping check-in due to presence of .no-checkin sentinel file: $directory"
+ $tell_no_checkin
+ else
+ $blatt_report
+ cvs ci .
+ exit_on_error "cvs checkin"
+ fi
fi
elif [ -d ".svn" ]; then
if test_writeable ".svn"; then
do_revctrl_simple_update "$directory"
exit_on_error "updating repository; this issue should be fixed before check-in."
- $blatt
- svn ci .
- exit_on_error "svn checkin"
+ if [ -f ".no-checkin" ]; then
+# echo -ne "\nskipping check-in due to presence of .no-checkin sentinel file: $directory"
+ $tell_no_checkin
+ else
+ $blatt_report
+ svn ci .
+ exit_on_error "svn checkin"
+ fi
fi
elif [ -d ".git" ]; then
if test_writeable ".git"; then
# take steps to make sure the branch integrity is good and we're up to date against remote repos.
do_revctrl_careful_update "$(\pwd)"
- $blatt
+ if [ -f ".no-checkin" ]; then
+# echo -ne "\nskipping check-in due to presence of .no-checkin sentinel file: $directory"
+ $tell_no_checkin
+ else
+ $blatt_report
- # put all changed and new files in the commit. not to everyone's liking.
- git add --all . | $TO_SPLITTER
- promote_pipe_return 0
- exit_on_error "git add all new files"
+ # put all changed and new files in the commit. not to everyone's liking.
+ git add --all . | $TO_SPLITTER
+ promote_pipe_return 0
+ exit_on_error "git add all new files"
- # see if there are any changes in the local repository.
- if ! git diff-index --quiet HEAD --; then
- # tell git about all the files and get a check-in comment.
+ # see if there are any changes in the local repository.
+ if ! git diff-index --quiet HEAD --; then
+ # tell git about all the files and get a check-in comment.
#hmmm: begins to look like, you guessed it, a reusable bit that all commit actions could enjoy.
- git commit .
- retval=$?
- continue_on_error "git commit"
- if [ $retval -ne 0 ]; then
- echo -e -n "Commit failed or was aborted:\nShould we continue with other check-ins? [y/N] "
- local line
- read line
- if [[ "${line:0:1}" != "y" ]]; then
- echo "Stopping check-in process due to missing commit and user request."
- exit 1
+ git commit .
+ retval=$?
+ continue_on_error "git commit"
+ if [ $retval -ne 0 ]; then
+ echo -e -n "Commit failed or was aborted:\nShould we continue with other check-ins? [y/N] "
+ local line
+ read line
+ if [[ "${line:0:1}" != "y" ]]; then
+ echo "Stopping check-in process due to missing commit and user request."
+ exit 1
+ fi
fi
fi
- fi
- # we continue on to the push, even if there were no obvious changes this run, because
- # there could already be committed changes that haven't been pushed yet.
-
- # upload any changes to the upstream repo so others can see them.
- git push --tags origin "$(my_branch_name)" 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER
- promote_pipe_return 0
- exit_on_error "git push"
+ # we continue on to the push, even if there were no obvious changes this run, because
+ # there could already be committed changes that haven't been pushed yet.
+ # upload any changes to the upstream repo so others can see them.
+ git push --tags origin "$(my_branch_name)" 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER
+ promote_pipe_return 0
+ exit_on_error "git push"
+ fi
fi
else
# nothing there. it's not an error though.
svn diff .
exit_on_error "subversion diff"
elif [ -d ".git" ]; then
- git diff
+ git --no-pager diff
exit_on_error "git diff"
elif [ -d "CVS" ]; then
cvs diff .
local to_return=120 # unknown issue.
- local local_branch=$(git rev-parse @)
+ local local_branch=$(git rev-parse HEAD)
local remote_branch=$(git rev-parse "$branch")
- local merge_base=$(git merge-base @ "$branch")
+ local merge_base=$(git merge-base HEAD "$branch")
local to_echo=
if [ "$local_branch" == "$remote_branch" ]; then
if [ $nicedir == "." ]; then
nicedir=$(\pwd)
fi
- local blatt="echo -e \ncarefully retrieving '$nicedir'..."
- $blatt
+ local blatt_report="echo -e \ncarefully retrieving '$nicedir'..."
+ $blatt_report
local this_branch="$(my_branch_name)"
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 fetch --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
if [ $nicedir == "." ]; then
nicedir=$(\pwd)
fi
- local blatt="echo -e \nretrieving '$nicedir'..."
+ local blatt_report="echo -e \nretrieving '$nicedir'..."
pushd "$directory" &>/dev/null
if [ -d "CVS" ]; then
if test_writeable "CVS"; then
- $blatt
+ $blatt_report
cvs update . | $TO_SPLITTER
promote_pipe_return 0
exit_on_error "cvs update"
fi
elif [ -d ".svn" ]; then
if test_writeable ".svn"; then
- $blatt
+ $blatt_report
svn update . | $TO_SPLITTER
promote_pipe_return 0
exit_on_error "svn update"
fi
elif [ -d ".git" ]; then
if test_writeable ".git"; then
- $blatt
- git pull --tags $PULL_ADDITION 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER
+ $blatt_report
+ 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