fix issue: repo upload with revision manifest

9a61a911644e3435217bc082ddd861dc6c19e58d did not deal with non-sha1 revision
when revision is not sha1, create a symbolic merge branch pointed to manifest
branch if that exists, otherwise, just let it fail
diff --git a/project.py b/project.py
index d01b8a6..e90d028 100644
--- a/project.py
+++ b/project.py
@@ -1193,7 +1193,7 @@
     ret = gitcmd.Wait()
 
   def _CreateLocalMergeBranch(self, branch, revid):
-    if not branch and not ID_RE.match(revid):
+    if not branch:
       return
     ref = os.path.join(self.gitdir, branch)
     if os.path.exists(ref): return
@@ -1204,7 +1204,11 @@
         os.makedirs(os.path.dirname(ref))
       except OSError:
         pass
-      _lwrite(ref, '%s\n' % revid)
+      msg = "local merge branch set to "
+      if ID_RE.match(revid):
+        self.bare_git.UpdateRef(branch, revid, message=msg + revid, detach=True)
+      elif self.manifest.branch:
+        self.bare_git.symbolic_ref('-m', msg + self.manifest.branch, branch, R_M + self.manifest.branch)
 # Sync ##
 
   def _ExtractArchive(self, tarpath, path=None):