diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index 0b7f3b22..d4d0335e 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -537,6 +537,7 @@ Discard Stash & Reapply Fetch without tags + Update all submodules Remote: Pull (Fetch & Merge) Use rebase instead of merge diff --git a/src/Resources/Locales/zh_CN.axaml b/src/Resources/Locales/zh_CN.axaml index c28e1aef..545623b7 100644 --- a/src/Resources/Locales/zh_CN.axaml +++ b/src/Resources/Locales/zh_CN.axaml @@ -541,6 +541,7 @@ 丢弃更改 贮藏并自动恢复 不拉取远程标签 + 同时更新所有子模块 远程 : 拉回(拉取并合并) 使用变基方式合并分支 diff --git a/src/Resources/Locales/zh_TW.axaml b/src/Resources/Locales/zh_TW.axaml index 4a9d689b..b40f62fe 100644 --- a/src/Resources/Locales/zh_TW.axaml +++ b/src/Resources/Locales/zh_TW.axaml @@ -541,6 +541,7 @@ 捨棄變更 擱置變更並自動復原 不拉取遠端標籤 + 同時更新所有子模組 遠端: 拉取 (提取並合併) 使用重定基底 (rebase) 合併分支 diff --git a/src/ViewModels/Checkout.cs b/src/ViewModels/Checkout.cs index d8e9b38a..5cdf4de5 100644 --- a/src/ViewModels/Checkout.cs +++ b/src/ViewModels/Checkout.cs @@ -17,8 +17,7 @@ namespace SourceGit.ViewModels public bool IsRecurseSubmoduleVisible { - get; - private set; + get => _repo.Submodules.Count > 0; } public bool RecurseSubmodules @@ -32,7 +31,6 @@ namespace SourceGit.ViewModels _repo = repo; Branch = branch; DiscardLocalChanges = false; - IsRecurseSubmoduleVisible = repo.Submodules.Count > 0; } public override Task Sure() diff --git a/src/ViewModels/CheckoutCommit.cs b/src/ViewModels/CheckoutCommit.cs index a8c5b8cf..57aadf65 100644 --- a/src/ViewModels/CheckoutCommit.cs +++ b/src/ViewModels/CheckoutCommit.cs @@ -17,8 +17,7 @@ namespace SourceGit.ViewModels public bool IsRecurseSubmoduleVisible { - get; - private set; + get => _repo.Submodules.Count > 0; } public bool RecurseSubmodules @@ -32,7 +31,6 @@ namespace SourceGit.ViewModels _repo = repo; Commit = commit; DiscardLocalChanges = false; - IsRecurseSubmoduleVisible = repo.Submodules.Count > 0; } public override Task Sure() diff --git a/src/ViewModels/CreateBranch.cs b/src/ViewModels/CreateBranch.cs index 252802f4..e5d1eea8 100644 --- a/src/ViewModels/CreateBranch.cs +++ b/src/ViewModels/CreateBranch.cs @@ -45,8 +45,7 @@ namespace SourceGit.ViewModels public bool IsRecurseSubmoduleVisible { - get; - private set; + get => _repo.Submodules.Count > 0; } public bool RecurseSubmodules @@ -67,7 +66,6 @@ namespace SourceGit.ViewModels BasedOn = branch; DiscardLocalChanges = false; - IsRecurseSubmoduleVisible = repo.Submodules.Count > 0; } public CreateBranch(Repository repo, Models.Commit commit) @@ -77,7 +75,6 @@ namespace SourceGit.ViewModels BasedOn = commit; DiscardLocalChanges = false; - IsRecurseSubmoduleVisible = repo.Submodules.Count > 0; } public CreateBranch(Repository repo, Models.Tag tag) @@ -87,7 +84,6 @@ namespace SourceGit.ViewModels BasedOn = tag; DiscardLocalChanges = false; - IsRecurseSubmoduleVisible = repo.Submodules.Count > 0; } public static ValidationResult ValidateBranchName(string name, ValidationContext ctx) diff --git a/src/ViewModels/Popup.cs b/src/ViewModels/Popup.cs index ec1e007c..b3fe7e23 100644 --- a/src/ViewModels/Popup.cs +++ b/src/ViewModels/Popup.cs @@ -48,7 +48,14 @@ namespace SourceGit.ViewModels protected void Use(CommandLog log) { - log.Register(newline => ProgressDescription = newline.Trim()); + log.Register(SetDescription); + } + + private void SetDescription(string data) + { + var desc = data.Trim(); + if (!string.IsNullOrEmpty(desc)) + ProgressDescription = desc; } private bool _inProgress = false; diff --git a/src/ViewModels/Pull.cs b/src/ViewModels/Pull.cs index e13dad96..14451e98 100644 --- a/src/ViewModels/Pull.cs +++ b/src/ViewModels/Pull.cs @@ -62,6 +62,17 @@ namespace SourceGit.ViewModels set => _repo.Settings.FetchWithoutTagsOnPull = value; } + public bool IsRecurseSubmoduleVisible + { + get => _repo.Submodules.Count > 0; + } + + public bool RecurseSubmodules + { + get => _repo.Settings.UpdateSubmodulesOnCheckoutBranch; + set => _repo.Settings.UpdateSubmodulesOnCheckoutBranch = value; + } + public Pull(Repository repo, Models.Branch specifiedRemoteBranch) { _repo = repo; @@ -119,6 +130,7 @@ namespace SourceGit.ViewModels var log = _repo.CreateLog("Pull"); Use(log); + var updateSubmodules = IsRecurseSubmoduleVisible && RecurseSubmodules; return Task.Run(() => { var changes = new Commands.CountLocalChangesWithoutUntracked(_repo.FullPath).Result(); @@ -176,8 +188,18 @@ namespace SourceGit.ViewModels NoTags).Use(log).Exec(); } - if (rs && needPopStash) - rs = new Commands.Stash(_repo.FullPath).Use(log).Pop("stash@{0}"); + if (rs) + { + if (updateSubmodules) + { + var submodules = new Commands.QuerySubmodules(_repo.FullPath).Result(); + if (submodules.Count > 0) + new Commands.Submodule(_repo.FullPath).Use(log).Update(submodules, true, true, false); + } + + if (needPopStash) + new Commands.Stash(_repo.FullPath).Use(log).Pop("stash@{0}"); + } log.Complete(); diff --git a/src/Views/Pull.axaml b/src/Views/Pull.axaml index 67121826..1c438b8b 100644 --- a/src/Views/Pull.axaml +++ b/src/Views/Pull.axaml @@ -21,6 +21,7 @@ + + +