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 @@
+
+
+