Whamcloud - gitweb
b=19625
[fs/lustre-release.git] / lustrecvs
index 8e4b509..86eb3cb 100755 (executable)
--- a/lustrecvs
+++ b/lustrecvs
@@ -31,7 +31,7 @@ if [ -z "$LUSTRECVS_UPDATED" ] ; then
     # If checking out a specific tag, make sure all of the files here are also
     # checked out with the same tag to avoid later changes breaking things.
     case "$1" in
-    v*|b_release_*) TAG=$1 ;;
+    v*|b_release_*) TAG="-r $1" ;;
     esac
 
     cvs update -l $TAG
@@ -68,8 +68,12 @@ case "$lustretag" in
 
     # These use special build directories 
 
+    # Maintenance mode -- isolate build system changes
     b1_4*) buildtag="b1_4" ;;
 
+    # Maintenance mode -- isolate build system changes
+    b1_6*) buildtag="b1_6" ;;
+
     b_release_1_4_6-patchless) buildtag="b1_4" ;;
     b_release_1_4_7-test) buildtag="b_release_1_4_7" ;;
 
@@ -88,6 +92,8 @@ case "$lustretag" in
     # this is the branch table
     # keep this list sorted alphabetically!
 
+    *_gate) buildtag="b_build_gate" ;;
+
     *)
         buildtag="HEAD"
        ;;
@@ -143,6 +149,16 @@ hg_cmd ()
         return
     fi
 
+    if ! which hg &> /dev/null; then
+    cat <<EOF
+
+Error: Mercurial is missing, try 'yum install mercurial', 'apt-get install
+mercurial' or try http://rpmfind.net/linux/rpm2html/search.php?query=mercurial
+EOF
+        error_modules="$dir $error_modules"
+        return
+    fi
+
     url="$base_url/$repository"
 
     # create a cvs date format that will survive shell expansion
@@ -175,6 +191,68 @@ hg_cmd ()
     fi
 }
 
+git_cmd ()
+{
+    dir="$1"
+    repository="$2"
+    branch="$3"
+    base_url="$4"
+
+    if [ ! "$branch" ]; then
+        return
+    fi
+
+    if ! which git &> /dev/null; then
+    cat <<EOF
+
+Error: git is missing, try 'yum install git', 'apt-get install
+git' or try http://rpmfind.net/linux/rpm2html/search.php?query=git
+EOF
+        error_modules="$dir $error_modules"
+        return
+    fi
+
+    url=`printf "$base_url" "$repository"`
+
+    if [ -n "$pindate" ]; then
+        echo "\nSorry, pindate is not supported with git."
+        error_modules="$dir $error_modules"
+        return
+    fi
+
+    if [ -d "$dir" ]; then
+        echo "$progname: Updating $dir"
+
+        pushd "$dir" > /dev/null
+
+        # Fetch new objects
+        git fetch "$url" "$branch"
+
+        # Create branch if it doesn't exist already (e.g. we switched branches)
+        [ $? -eq 0 ] && $($(git branch -b $branch origin/$branch &> /dev/null) || true)
+
+        # Rebase local commits
+        [ $? -eq 0 ] && git rebase origin/$branch $branch
+
+        rc=$?
+
+        popd > /dev/null
+    else
+        echo "$progname: Checking out $dir"
+        git clone "$url" "$dir"
+        rc=$?
+
+        if [ $rc -eq 0 -a "$branch" != "master" ]; then
+            ( cd "$dir" && git checkout -b $branch origin/$branch )
+            rc=$?
+        fi
+    fi
+
+    if [ $rc -ne 0 ] ; then
+        error_modules="$dir $error_modules"
+    fi
+}
+
 cvs_cmd build lustre-build "$buildtag"
 
 if [ -f build/buildcvs ] ; then