Whamcloud - gitweb
* Add support for date-pinned co/update
[fs/lustre-release.git] / lustrecvs
index ecebb87..b0f8088 100755 (executable)
--- a/lustrecvs
+++ b/lustrecvs
@@ -19,8 +19,9 @@ fatal ()
 usage ()
 {
     cat <<EOF
-Usage: $progname <lustretag>
+Usage: $progname <lustretag> <pindate>
   where <lustretag> is a tag of the lustre-core module
+  and <pindate> is an optional quoted timestamp suitable for cvs -D
 EOF
 }
 
@@ -36,13 +37,14 @@ fi
 buildtag="HEAD"
 lustretag="$1"
 shift
+pindate=$1
+shift
 
 if [ "$*" ] ; then
     usage >&2
     exit 1
 fi
 
-
 case "$lustretag" in
     '')
         warn "a lustretag is required."
@@ -90,25 +92,33 @@ cvs_cmd ()
     update=""
 
     if [ "$tag" = "HEAD" ] ; then
-       cotag=""
-       uptag="-A"
+        cotag=""
+        uptag="-A"
     elif [ "$tag" ] ; then
-       cotag="-r $tag"
-       uptag="-r $tag"
+        cotag="-r $tag"
+        uptag="-r $tag"
+    else
+        # silently skip if no tag was specified
+        return
+    fi
+
+    # create a cvs date format that will survive shell expansion
+    if [ -n "$pindate" ]; then
+        datecmd=$(date -u +%s -d "$pindate")
+        datecmd="-D @$datecmd"
     else
-       # silently skip if no tag was specified
-       return
+        datecmd=""
     fi
 
     if [ -d "$dir" ] ; then
-       echo "$progname: Updating $dir to $tag"
-       ( cd "$dir" && cvs up -dP $uptag )
+        echo "$progname: Updating $dir to $tag"
+        ( cd "$dir" && cvs up $datecmd -dAP $uptag )
     else
-       echo "$progname: Checking out $dir from $tag"
-       cvs co -P $cotag -d "$dir" "$module"
+        echo "$progname: Checking out $dir from $tag"
+        cvs co $datecmd -P $cotag -d "$dir" "$module"
     fi
     if [ $? != 0 ] ; then
-       error_modules="$dir $error_modules"
+        error_modules="$dir $error_modules"
     fi
 }