Skip to content

Commit 07b9c7a

Browse files
committed
feature: show uncommitted changes count for submodule (sourcegit-scm#2264)
Signed-off-by: leo <longshuang@msn.cn>
1 parent 2ed3a79 commit 07b9c7a

File tree

6 files changed

+25
-2
lines changed

6 files changed

+25
-2
lines changed

src/Models/RevisionFile.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,6 @@ public class RevisionSubmodule
3939
{
4040
public Commit Commit { get; set; } = null;
4141
public CommitFullMessage FullMessage { get; set; } = null;
42+
public int UncommittedChanges { get; set; } = 0;
4243
}
4344
}

src/Resources/Locales/en_US.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@
372372
<x:String x:Key="Text.Diff.Submodule" xml:space="preserve">SUBMODULE</x:String>
373373
<x:String x:Key="Text.Diff.Submodule.Deleted" xml:space="preserve">DELETED</x:String>
374374
<x:String x:Key="Text.Diff.Submodule.New" xml:space="preserve">NEW</x:String>
375+
<x:String x:Key="Text.Diff.Submodule.UncommittedChanges" xml:space="preserve">+ {0} Uncommitted Changes</x:String>
375376
<x:String x:Key="Text.Diff.SwapCommits" xml:space="preserve">Swap</x:String>
376377
<x:String x:Key="Text.Diff.SyntaxHighlight" xml:space="preserve">Syntax Highlighting</x:String>
377378
<x:String x:Key="Text.Diff.ToggleWordWrap" xml:space="preserve">Line Word Wrap</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@
376376
<x:String x:Key="Text.Diff.Submodule" xml:space="preserve">子模块</x:String>
377377
<x:String x:Key="Text.Diff.Submodule.Deleted" xml:space="preserve">删除</x:String>
378378
<x:String x:Key="Text.Diff.Submodule.New" xml:space="preserve">新增</x:String>
379+
<x:String x:Key="Text.Diff.Submodule.UncommittedChanges" xml:space="preserve">+ {0} 项未提交变更</x:String>
379380
<x:String x:Key="Text.Diff.SwapCommits" xml:space="preserve">交换比对双方</x:String>
380381
<x:String x:Key="Text.Diff.SyntaxHighlight" xml:space="preserve">语法高亮</x:String>
381382
<x:String x:Key="Text.Diff.ToggleWordWrap" xml:space="preserve">自动换行</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,7 @@
376376
<x:String x:Key="Text.Diff.Submodule" xml:space="preserve">子模組</x:String>
377377
<x:String x:Key="Text.Diff.Submodule.Deleted" xml:space="preserve">已刪除</x:String>
378378
<x:String x:Key="Text.Diff.Submodule.New" xml:space="preserve">新增</x:String>
379+
<x:String x:Key="Text.Diff.Submodule.UncommittedChanges" xml:space="preserve">+ {0} 項未提交變更</x:String>
379380
<x:String x:Key="Text.Diff.SwapCommits" xml:space="preserve">交換比對雙方</x:String>
380381
<x:String x:Key="Text.Diff.SyntaxHighlight" xml:space="preserve">語法上色</x:String>
381382
<x:String x:Key="Text.Diff.ToggleWordWrap" xml:space="preserve">自動換行</x:String>

src/ViewModels/DiffContext.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,16 @@ private void LoadContent()
291291

292292
private async Task<Models.RevisionSubmodule> QuerySubmoduleRevisionAsync(string repo, string sha)
293293
{
294+
if (!File.Exists(Path.Combine(repo, ".git")))
295+
return new Models.RevisionSubmodule() { Commit = new Models.Commit() { SHA = sha } };
296+
297+
var uncommittedChangesCount = 0;
298+
if (sha.EndsWith("-dirty", StringComparison.Ordinal))
299+
{
300+
sha = sha.Substring(0, sha.Length - 6);
301+
uncommittedChangesCount = await new Commands.CountLocalChanges(repo, true).GetResultAsync().ConfigureAwait(false);
302+
}
303+
294304
var commit = await new Commands.QuerySingleCommit(repo, sha).GetResultAsync().ConfigureAwait(false);
295305
if (commit == null)
296306
return new Models.RevisionSubmodule() { Commit = new Models.Commit() { SHA = sha } };
@@ -299,7 +309,8 @@ private void LoadContent()
299309
return new Models.RevisionSubmodule()
300310
{
301311
Commit = commit,
302-
FullMessage = new Models.CommitFullMessage { Message = body }
312+
FullMessage = new Models.CommitFullMessage { Message = body },
313+
UncommittedChanges = uncommittedChangesCount
303314
};
304315
}
305316

src/Views/DiffView.axaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,15 @@
321321
<ContentControl Content="{Binding New}">
322322
<ContentControl.DataTemplates>
323323
<DataTemplate DataType="m:RevisionSubmodule">
324-
<v:CommitBaseInfo Margin="0,4,8,6" Content="{Binding Commit}" FullMessage="{Binding FullMessage}"/>
324+
<StackPanel Orientation="Vertical">
325+
<TextBlock Margin="0,8,0,4"
326+
HorizontalAlignment="Center"
327+
Foreground="OrangeRed"
328+
FontFamily="{DynamicResource Fonts.Monospace}"
329+
Text="{Binding UncommittedChanges, Converter={x:Static c:StringConverters.FormatByResourceKey}, ConverterParameter='Diff.Submodule.UncommittedChanges'}"
330+
IsVisible="{Binding UncommittedChanges, Converter={x:Static c:IntConverters.IsGreaterThanZero}}"/>
331+
<v:CommitBaseInfo Margin="0,4,8,6" Content="{Binding Commit}" FullMessage="{Binding FullMessage}"/>
332+
</StackPanel>
325333
</DataTemplate>
326334
</ContentControl.DataTemplates>
327335
</ContentControl>

0 commit comments

Comments
 (0)