projects
/
feisty_meow.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
smoot-tastic with the .no-checkin
[feisty_meow.git]
/
scripts
/
rev_control
/
version_control.sh
diff --git
a/scripts/rev_control/version_control.sh
b/scripts/rev_control/version_control.sh
index 40eb80e861d8b137fd1b851ab10630d459a978f0..9bf195c1b9221c6fff9d364966372f07b49bb097 100644
(file)
--- a/
scripts/rev_control/version_control.sh
+++ b/
scripts/rev_control/version_control.sh
@@
-3,8
+3,12
@@
# these are helper functions for doing localized revision control.
# this script should be sourced into other scripts that use it.
# these are helper functions for doing localized revision control.
# this script should be sourced into other scripts that use it.
+# the maximum depth that the recursive functions will try to go below the starting directory.
+export MAX_DEPTH=5
+
+#hmmm: re-address this code, since it doesn't make a lot of sense to me right now...
# one unpleasantry to take care of first; cygwin barfs aggressively if the TMP directory
# one unpleasantry to take care of first; cygwin barfs aggressively if the TMP directory
-# is a DOS path, but we need it to be a DOS path for our
XSEDE
testing, so that blows.
+# is a DOS path, but we need it to be a DOS path for our
GFFS
testing, so that blows.
# to get past this, TMP gets changed below to a hopefully generic and safe place.
if [[ "$TMP" =~ .:.* ]]; then
# to get past this, TMP gets changed below to a hopefully generic and safe place.
if [[ "$TMP" =~ .:.* ]]; then
@@
-12,7
+16,7
@@
if [[ "$TMP" =~ .:.* ]]; then
export TMP=/tmp/rev_control_$USER
fi
if [ ! -d "$TMP" ]; then
export TMP=/tmp/rev_control_$USER
fi
if [ ! -d "$TMP" ]; then
- mkdir $TMP
+ mkdir
-p
$TMP
fi
if [ ! -d "$TMP" ]; then
echo "Could not create the temporary directory TMP in: $TMP"
fi
if [ ! -d "$TMP" ]; then
echo "Could not create the temporary directory TMP in: $TMP"
@@
-108,8
+112,10
@@
function do_checkin()
return 1
fi
pushd "$directory" &>/dev/null
return 1
fi
pushd "$directory" &>/dev/null
- retval=0 # normally successful.
- if [ -d "CVS" ]; then
+ local retval=0 # normally successful.
+ if [ -f ".no-checkin" ]; then
+ echo "Not checking in because found .no-checkin sentinel file."
+ elif [ -d "CVS" ]; then
cvs ci .
retval=$?
elif [ -d ".svn" ]; then
cvs ci .
retval=$?
elif [ -d ".svn" ]; then
@@
-137,7
+143,7
@@
function do_diff
{
local directory="$1"; shift
pushd "$directory" &>/dev/null
{
local directory="$1"; shift
pushd "$directory" &>/dev/null
- retval=0 # normally successful.
+
local
retval=0 # normally successful.
# only update if we see a repository living there.
if [ -d ".svn" ]; then
# only update if we see a repository living there.
if [ -d ".svn" ]; then
@@
-156,12
+162,18
@@
function do_report_new
{
local directory="$1"; shift
pushd "$directory" &>/dev/null
{
local directory="$1"; shift
pushd "$directory" &>/dev/null
- retval=0 # normally successful.
+
local
retval=0 # normally successful.
# only update if we see a repository living there.
# only update if we see a repository living there.
- if [ -d ".svn" ]; then
+ if [ -f ".no-checkin" ]; then
+ echo "Not reporting mods because found .no-checkin sentinel file."
+ elif [ -d ".svn" ]; then
# this action so far only makes sense and is needed for svn.
bash $FEISTY_MEOW_SCRIPTS/rev_control/svnapply.sh \? echo
# this action so far only makes sense and is needed for svn.
bash $FEISTY_MEOW_SCRIPTS/rev_control/svnapply.sh \? echo
+ retval=$?
+ elif [ -d ".git" ]; then
+ git status -u
+ retval=$?
fi
popd &>/dev/null
fi
popd &>/dev/null
@@
-189,12
+201,12
@@
function checkin_list()
function squash_first_few_crs()
{
i=0
function squash_first_few_crs()
{
i=0
- while read
line
; do
+ while read
input_text
; do
i=$((i+1))
i=$((i+1))
- if [ $i -le
3
]; then
- echo -n "$
line
"
+ if [ $i -le
5
]; then
+ echo -n "$
input_text
"
else
else
- echo $
line
+ echo $
input_text
fi
done
if [ $i -le 3 ]; then
fi
done
if [ $i -le 3 ]; then
@@
-207,8
+219,7
@@
function squash_first_few_crs()
function do_update()
{
directory="$1"; shift
function do_update()
{
directory="$1"; shift
- # plan on success for now.
- retval=0
+ local retval=0 # plan on success for now.
pushd "$directory" &>/dev/null
if [ -d "CVS" ]; then
cvs update . | squash_first_few_crs
pushd "$directory" &>/dev/null
if [ -d "CVS" ]; then
cvs update . | squash_first_few_crs
@@
-220,8
+231,8
@@
function do_update()
git pull 2>&1 | grep -v "X11 forwarding request failed" | squash_first_few_crs
retval=${PIPESTATUS[0]}
else
git pull 2>&1 | grep -v "X11 forwarding request failed" | squash_first_few_crs
retval=${PIPESTATUS[0]}
else
+ # this is not an error necessarily; we'll just pretend they planned this.
echo no repository in $directory
echo no repository in $directory
- retval=1
fi
popd &>/dev/null
return $retval
fi
popd &>/dev/null
return $retval
@@
-255,11
+266,11
@@
function generate_rev_ctrl_filelist()
{
local dir="$1"; shift
pushd "$dir" &>/dev/null
{
local dir="$1"; shift
pushd "$dir" &>/dev/null
- local dirhere="$(
\pwd
)"
+ local dirhere="$(
\cd "$(\dirname "$dir")" && /bin/pwd
)"
local tempfile=$(mktemp /tmp/zz_rev_checkin.XXXXXX)
echo >$tempfile
local tempfile=$(mktemp /tmp/zz_rev_checkin.XXXXXX)
echo >$tempfile
- find $dirhere -
maxdepth 5 -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile
- find $dirhere -
maxdepth 5 -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile
+ find $dirhere -
follow -maxdepth $MAX_DEPTH -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile 2>/dev/null
+ find $dirhere -
follow -maxdepth $MAX_DEPTH -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile 2>/dev/null
# CVS is not well behaved like git and (now) svn, and we seldom use it anymore.
popd &>/dev/null
local sortfile=$(mktemp /tmp/zz_rev_checkin_sort.XXXXXX)
# CVS is not well behaved like git and (now) svn, and we seldom use it anymore.
popd &>/dev/null
local sortfile=$(mktemp /tmp/zz_rev_checkin_sort.XXXXXX)
@@
-270,21
+281,19
@@
function generate_rev_ctrl_filelist()
# iterates across a list of directories contained in a file (first parameter).
# on each directory name, it performs the action (second parameter) provided.
# iterates across a list of directories contained in a file (first parameter).
# on each directory name, it performs the action (second parameter) provided.
-function perform_action_on_file()
+function perform_
revctrl_
action_on_file()
{
local tempfile="$1"; shift
local action="$1"; shift
{
local tempfile="$1"; shift
local action="$1"; shift
- dirs=($(cat $tempfile))
-
- for dirname in ${dirs[@]}; do
+ while read -u 3 dirname; do
if [ -z "$dirname" ]; then continue; fi
if [ -z "$dirname" ]; then continue; fi
- pushd
$dirname
&>/dev/null
+ pushd
"$dirname"
&>/dev/null
echo "[$(pwd)]"
$action .
echo "======="
popd &>/dev/null
echo "[$(pwd)]"
$action .
echo "======="
popd &>/dev/null
- done
+ done
3<"$tempfile"
rm $tempfile
}
rm $tempfile
}