Переглянути джерело

Refactor Push method for clarity and functionality

Tim Jones 3 тижнів тому
батько
коміт
9fe197c241
1 змінених файлів з 16 додано та 16 видалено
  1. 16 16
      RackPeek.Domain/Git/LibGit2GitRepository.cs

+ 16 - 16
RackPeek.Domain/Git/LibGit2GitRepository.cs

@@ -161,36 +161,36 @@ public sealed class LibGit2GitRepository(
             true);
     }
 
-    public void Push() {
+    public void Push()
+    {
         using Repository repo = OpenRepo();
-
+    
         Remote remote = GetRemote(repo);
-        var refSpec = $"refs/heads/{repo.Head.FriendlyName}";
-
-        try {
+        var branch = repo.Head.FriendlyName;
+        var refSpec = $"refs/heads/{branch}:refs/heads/{branch}";
+    
+        try
+        {
             repo.Network.Push(
                 remote,
                 refSpec,
                 new PushOptions { CredentialsProvider = _credentials });
         }
-        catch (LibGit2Sharp.NonFastForwardException) {
+        catch (LibGit2Sharp.NonFastForwardException)
+        {
             // remote has commits we don't have
             Pull();
-
-            // retry push
+    
             repo.Network.Push(
                 remote,
                 refSpec,
                 new PushOptions { CredentialsProvider = _credentials });
         }
-
-        if (repo.Head.TrackedBranch is null) {
-            Branch remoteBranch = repo.Branches[$"{remote.Name}/{repo.Head.FriendlyName}"];
-
-            if (remoteBranch != null) {
-                repo.Branches.Update(repo.Head,
-                    b => b.TrackedBranch = remoteBranch.CanonicalName);
-            }
+    
+        if (repo.Head.TrackedBranch is null)
+        {
+            repo.Branches.Update(repo.Head,
+                b => b.TrackedBranch = $"refs/remotes/{remote.Name}/{branch}");
         }
     }