From cd3ace0b622870958bfd6cf244dca9e9f9174fbf Mon Sep 17 00:00:00 2001 From: ShadowLemoon <119576779+ShadowLemoon@users.noreply.github.com> Date: Mon, 12 Jan 2026 21:44:08 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=87=8F=E5=B0=91=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E6=8B=89=E5=8F=96=EF=BC=8C=E6=8F=90=E5=8D=87100%=20(#2619)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Core/Script/ScriptRepoUpdater.cs | 33 +++---------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/BetterGenshinImpact/Core/Script/ScriptRepoUpdater.cs b/BetterGenshinImpact/Core/Script/ScriptRepoUpdater.cs index 99f29ed7..d6496a19 100644 --- a/BetterGenshinImpact/Core/Script/ScriptRepoUpdater.cs +++ b/BetterGenshinImpact/Core/Script/ScriptRepoUpdater.cs @@ -168,40 +168,17 @@ public class ScriptRepoUpdater : Singleton return; } - // 获取远程分支信息并拉取最新数据 - var remote = repo.Network.Remotes["origin"]; + // 直接获取远程分支的 Commit SHA + var remoteReferences = repo.Network.ListReferences(repoUrl, CreateCredentialsHandler()); + var remoteBranch = remoteReferences.FirstOrDefault(r => r.CanonicalName == "refs/heads/release"); - var fetchOptions = new FetchOptions - { - ProxyOptions = { ProxyType = ProxyType.None }, - Depth = 1, // 浅拉取,只获取最新的提交 - CredentialsProvider = CreateCredentialsHandler(), // 添加凭据处理器 - OnTransferProgress = progress => - { - onCheckoutProgress?.Invoke($"拉取对象 {progress.ReceivedObjects}/{progress.TotalObjects}", progress.ReceivedObjects, progress.TotalObjects); - return true; - } - }; - - // 拉取到远程追踪分支 - string refSpec = $"+refs/heads/release:refs/remotes/origin/release"; - Commands.Fetch(repo, remote.Name, new[] { refSpec }, fetchOptions, "拉取最新更新"); - - // 获取本地和远程commit - var localBranch = repo.Branches["release"]; - if (localBranch == null) - { - throw new Exception("未找到本地release分支"); - } - - var remoteBranch = repo.Branches["origin/release"]; if (remoteBranch == null) { throw new Exception("未找到远程release分支"); } - var currentCommitSha = localBranch.Tip?.Sha; - var remoteCommitSha = remoteBranch.Tip.Sha; + var remoteCommitSha = remoteBranch.TargetIdentifier; + var currentCommitSha = repo.Branches["release"]?.Tip?.Sha; // 比较本地和远程commit if (currentCommitSha == remoteCommitSha)