diff --git a/src/Commands/Blame.cs b/src/Commands/Blame.cs index d614eab4..0f247d73 100644 --- a/src/Commands/Blame.cs +++ b/src/Commands/Blame.cs @@ -10,12 +10,19 @@ namespace SourceGit.Commands [GeneratedRegex(@"^\^?([0-9a-f]+)\s+(.*)\s+\((.*)\s+(\d+)\s+[\-\+]?\d+\s+\d+\) (.*)")] private static partial Regex REG_FORMAT(); - public Blame(string repo, string file, string revision) + public Blame(string repo, string file, string revision, bool ignoreWhitespace) { WorkingDirectory = repo; Context = repo; - Args = $"blame -f -t {revision} -- {file.Quoted()}"; RaiseError = false; + + var builder = new StringBuilder(); + builder.Append("blame -f -t "); + if (ignoreWhitespace) + builder.Append("-w "); + builder.Append(revision).Append(" -- ").Append(file.Quoted()); + + Args = builder.ToString(); } public async Task ReadAsync() diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index 7d9fe774..9f9fce01 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -54,6 +54,7 @@ Bisecting. Mark current commit as good or bad and checkout another one. Blame Blame on Previous Revision + Ignore whitespace changes BLAME ON THIS FILE IS NOT SUPPORTED!!! Checkout ${0}$... Compare selected 2 branches diff --git a/src/Resources/Locales/zh_CN.axaml b/src/Resources/Locales/zh_CN.axaml index db202a5b..a63adb62 100644 --- a/src/Resources/Locales/zh_CN.axaml +++ b/src/Resources/Locales/zh_CN.axaml @@ -58,6 +58,7 @@ 二分定位进行中。请标记当前的提交是 '正确' 还是 '错误',然后检出另一个提交。 逐行追溯(blame) 对当前版本的前一版本执行逐行追溯操作 + 忽略空白符变化 选中文件不支持该操作!!! 检出(checkout) ${0}$... 比较选中的 2 个分支 diff --git a/src/Resources/Locales/zh_TW.axaml b/src/Resources/Locales/zh_TW.axaml index 84c7a98e..d42b3b51 100644 --- a/src/Resources/Locales/zh_TW.axaml +++ b/src/Resources/Locales/zh_TW.axaml @@ -58,6 +58,7 @@ 二分搜尋進行中。請標記目前的提交為「良好」或「錯誤」,然後簽出另一個提交。 逐行溯源 (blame) 對上一個版本執行逐行溯源 + 忽略空白符號變化 所選擇的檔案不支援該操作! 簽出 (checkout) ${0}$... 比較所選的 2 個分支 diff --git a/src/ViewModels/Blame.cs b/src/ViewModels/Blame.cs index 0fc81fff..be05fccd 100644 --- a/src/ViewModels/Blame.cs +++ b/src/ViewModels/Blame.cs @@ -16,6 +16,16 @@ namespace SourceGit.ViewModels private set => SetProperty(ref _file, value); } + public bool IgnoreWhitespace + { + get => _ignoreWhitespace; + set + { + if (SetProperty(ref _ignoreWhitespace, value)) + SetBlameData(_navigationHistory[0]); + } + } + public Models.Commit Revision { get => _revision; @@ -181,7 +191,7 @@ namespace SourceGit.ViewModels Task.Run(async () => { - var result = await new Commands.Blame(_repo, rev.File, rev.SHA) + var result = await new Commands.Blame(_repo, rev.File, rev.SHA, _ignoreWhitespace) .ReadAsync() .ConfigureAwait(false); @@ -207,6 +217,7 @@ namespace SourceGit.ViewModels private string _repo; private string _file; + private bool _ignoreWhitespace = false; private Models.Commit _revision; private Models.Commit _prevRevision; private CancellationTokenSource _cancellationSource = null; diff --git a/src/Views/Blame.axaml b/src/Views/Blame.axaml index 3d813ff0..f7dba5ca 100644 --- a/src/Views/Blame.axaml +++ b/src/Views/Blame.axaml @@ -12,7 +12,7 @@ Icon="/App.ico" Title="{DynamicResource Text.Blame}" MinWidth="1280" MinHeight="720"> - + @@ -80,23 +80,23 @@ - + + + + + +