function do_checkin()
{
local directory="$1"; shift
+ do_update "$directory"
+ if [ $? -ne 0 ]; then
+ echo "Repository update failed; this should be fixed before check-in."
+ return 1
+ fi
pushd "$directory" &>/dev/null
retval=0 # normally successful.
if [ -d "CVS" ]; then
git push 2>&1 | grep -v "X11 forwarding request failed"
retval+=$?
else
- echo unknown repository for $directory...
+ echo no repository in $directory
retval=1
fi
popd &>/dev/null
return $retval
}
+function do_report_new
+{
+ local directory="$1"; shift
+ pushd "$directory" &>/dev/null
+ retval=0 # normally successful.
+
+ # only update if we see a repository living there.
+ if [ -d ".svn" ]; then
+ # this action so far only makes sense and is needed for svn.
+ bash $FEISTY_MEOW_SCRIPTS/rev_control/svnapply.sh \? echo
+ fi
+
+ popd &>/dev/null
+ return $retval
+}
# checks in all the folders in a specified list.
function checkin_list()
function do_update()
{
directory="$1"; shift
-
+ # plan on success for now.
+ retval=0
pushd "$directory" &>/dev/null
if [ -d "CVS" ]; then
cvs update . | squash_first_few_crs
+ retval=${PIPESTATUS[0]}
elif [ -d ".svn" ]; then
svn update . | squash_first_few_crs
+ retval=${PIPESTATUS[0]}
elif [ -d ".git" ]; then
git pull 2>&1 | grep -v "X11 forwarding request failed" | squash_first_few_crs
+ retval=${PIPESTATUS[0]}
else
- echo unknown repository for $directory...
+ # this is not an error necessarily; we'll just pretend they planned this.
+ echo no repository in $directory
fi
popd &>/dev/null
+ return $retval
}
# gets all the updates for a list of folders under revision control.
local dirhere="$(\pwd)"
local tempfile=$(mktemp /tmp/zz_rev_checkin.XXXXXX)
echo >$tempfile
- find $dirhere -maxdepth 3 -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile
- find $dirhere -maxdepth 3 -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile
-#CVS is not well behaved, and we seldom use it anymore.
-# find $dirhere -maxdepth 3 -type d -iname "CVS" -exec echo {}/.. ';' >>$tempfile
+ find $dirhere -maxdepth 5 -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile
+ find $dirhere -maxdepth 5 -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile
+ # CVS is not well behaved like git and (now) svn, and we seldom use it anymore.
popd &>/dev/null
- echo "$tempfile"
+ local sortfile=$(mktemp /tmp/zz_rev_checkin_sort.XXXXXX)
+ sort <"$tempfile" >"$sortfile"
+ \rm "$tempfile"
+ echo "$sortfile"
}
# iterates across a list of directories contained in a file (first parameter).
local tempfile="$1"; shift
local action="$1"; shift
- dirs=($(cat $tempfile))
+# dirs=($(cat $tempfile))
- for dirname in ${dirs[@]}; do
+ while read -u 3 dirname; do
+# for dirname in "${dirs[@]}"; do
if [ -z "$dirname" ]; then continue; fi
- pushd $dirname &>/dev/null
+ pushd "$dirname" &>/dev/null
echo "[$(pwd)]"
$action .
echo "======="
popd &>/dev/null
- done
+ done 3<"$tempfile"
rm $tempfile
}