Add git_update_remote_branch to functions.

When $RECLONE=yes, and the branch specified for a project in stackrc is
a remote branch, the git_clone function would not recognize it as a
branch.  git_clone now attempts to recognize a remote branch and handle
it appropriately.

Change-Id: Ie23ff12eb5a7905088a9c2bb0ea2b02453ec0258
diff --git a/AUTHORS b/AUTHORS
index 4f771ce..22d5f32 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,6 +1,7 @@
 Aaron Lee <aaron.lee@rackspace.com>
 Aaron Rosen <arosen@nicira.com>
 Adam Gandelman <adamg@canonical.com>
+Andrew Laski <andrew.laski@rackspace.com>
 Andy Smith <github@anarkystic.com>
 Anthony Young <sleepsonthefloor@gmail.com>
 Armando Migliaccio <armando.migliaccio@eu.citrix.com>
diff --git a/functions b/functions
index af154b0..5fdae26 100644
--- a/functions
+++ b/functions
@@ -278,6 +278,16 @@
 }
 
 
+# git update using reference as a branch.
+# git_update_remote_branch ref
+function git_update_remote_branch() {
+
+    GIT_BRANCH=$1
+
+    git checkout -b $GIT_BRANCH -t origin/$GIT_BRANCH
+}
+
+
 # Translate the OS version values into common nomenclature
 # Sets ``DISTRO`` from the ``os_*`` values
 function GetDistro() {
@@ -343,6 +353,8 @@
                 git_update_tag $GIT_REF
             elif [[ -n "`git show-ref refs/heads/$GIT_REF`" ]]; then
                 git_update_branch $GIT_REF
+            elif [[ -n "`git show-ref refs/remotes/origin/$GIT_REF`" ]]; then
+                git_update_remote_branch $GIT_REF
             else
                 echo $GIT_REF is neither branch nor tag
                 exit 1
@@ -770,4 +782,4 @@
 
 # Local variables:
 # -*- mode: Shell-script -*-
-# End:
\ No newline at end of file
+# End: