Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / ldiskfs / ldiskfscvs
diff --git a/ldiskfs/ldiskfscvs b/ldiskfs/ldiskfscvs
new file mode 100755 (executable)
index 0000000..d0087f6
--- /dev/null
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+LC_COLLATE="C"
+progname="${0##*/}"
+
+warn ()
+{
+    [ "$1" ] && echo >&2
+    [ "$1" ] && echo "$progname: $1" >&2
+    [ "$1" ] && echo >&2
+}
+
+fatal ()
+{
+    warn "$2"
+    exit "$1"
+}
+
+usage ()
+{
+    cat <<EOF
+Usage: $progname <tag> <pindate>
+  where <tag> is a tag of the ldiskfs module
+  and <pindate> is an optional quoted timestamp suitable for cvs -D
+EOF
+}
+
+if [ -z "$LDISKFSCVS_UPDATED" ] ; then
+    echo "$progname: updating ldiskfscvs"
+    cvs up -l || fatal 1 "Error updating ldiskfscvs"
+    export LDISKFSCVS_UPDATED=yes
+    exec "$0" "$@"
+fi
+
+[ "$1" = "-r" ] && shift
+
+buildtag="HEAD"
+tag="$1"
+shift
+pindate=$1
+shift
+
+if [ "$*" ] ; then
+    usage >&2
+    exit 1
+fi
+
+case "$tag" in
+    '')
+        warn "a tag is required."
+       usage >&2
+       exit 1
+       ;;
+    --help | -h)
+       usage
+       exit 0
+       ;;
+
+    # this is the branch table
+    # keep this list sorted alphabetically!
+
+    # So far there's just HEAD.
+
+    *)
+        buildtag="HEAD"
+       ;;
+esac
+
+error_modules=
+cvs_cmd ()
+{
+    dir="$1"
+    module="$2"
+    tag="$3"
+    cotag=""
+    update=""
+
+    if [ "$tag" = "HEAD" ] ; then
+        cotag=""
+        uptag="-A"
+    elif [ "$tag" ] ; then
+        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
+        datecmd=""
+    fi
+
+    if [ -d "$dir" ] ; then
+        echo "$progname: Updating $dir to $tag"
+        ( cd "$dir" && cvs up $datecmd -dAP $uptag )
+    else
+        echo "$progname: Checking out $dir from $tag"
+        cvs co $datecmd -P $cotag -d "$dir" "$module"
+    fi
+    if [ $? != 0 ] ; then
+        error_modules="$dir $error_modules"
+    fi
+}
+
+cvs_cmd build lustre-build "$buildtag"