2
0
Эх сурвалжийг харах

porcelain.clone: set refs/remotes/origin/HEAD

Peter Rowlands 4 жил өмнө
parent
commit
d689b5630e
1 өөрчлөгдсөн 12 нэмэгдсэн , 2 устгасан
  1. 12 2
      dulwich/porcelain.py

+ 12 - 2
dulwich/porcelain.py

@@ -478,7 +478,7 @@ def clone(
                     break
 
         if head_ref:
-            head = _clone_update_head(r, head_ref, fetch_result)
+            head = _clone_update_head(r, source, origin, head_ref, fetch_result)
         else:
             head = None
 
@@ -493,8 +493,18 @@ def clone(
     return r
 
 
-def _clone_update_head(r, new_ref, fetch_result):
+def _clone_update_head(r, source, origin, new_ref, fetch_result):
     ref_message = b"clone: from " + source
+
+    # set refs/remotes/origin/HEAD
+    origin_head = fetch_result.symrefs.get(b"HEAD", b"")
+    if origin_head.startswith(LOCAL_BRANCH_PREFIX):
+        origin_base = b"refs/remotes/" + origin + b"/"
+        origin_ref = origin_base + b"HEAD"
+        target_ref = origin_base + origin_head[len(LOCAL_BRANCH_PREFIX) :]
+        r.refs.set_symbolic_ref(origin_ref, target_ref)
+
+    # set local HEAD
     if new_ref.startswith(LOCAL_TAG_PREFIX):
         # ref is a tag, detach HEAD at remote tag
         _cls, head_sha = r[fetch_result.refs[new_ref]].object