This commit is contained in:
Nathan Baulch 2025-06-06 14:10:55 +10:00 committed by GitHub
parent 0c22409b7b
commit 7bba40d03f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
39 changed files with 84 additions and 84 deletions

View file

@ -56,7 +56,7 @@ You can find the current translation status in [TRANSLATION.md](https://github.c
**To use this tool, you need to install Git(>=2.25.1) first.**
You can download the latest stable from [Releases](https://github.com/sourcegit-scm/sourcegit/releases/latest) or download workflow artifacts from [Github Actions](https://github.com/sourcegit-scm/sourcegit/actions) to try this app based on latest commits.
You can download the latest stable from [Releases](https://github.com/sourcegit-scm/sourcegit/releases/latest) or download workflow artifacts from [GitHub Actions](https://github.com/sourcegit-scm/sourcegit/actions) to try this app based on latest commits.
This software creates a folder `$"{System.Environment.SpecialFolder.ApplicationData}/SourceGit"`, which is platform-dependent, to store user settings, downloaded avatars and crash logs.
@ -93,7 +93,7 @@ For **macOS** users:
brew tap ybeapps/homebrew-sourcegit
brew install --cask --no-quarantine sourcegit
```
* If you want to install `SourceGit.app` from Github Release manually, you need run following command to make sure it works:
* If you want to install `SourceGit.app` from GitHub Release manually, you need run following command to make sure it works:
```shell
sudo xattr -cr /Applications/SourceGit.app
```

View file

@ -12,4 +12,4 @@
dotnet publish -c Release -r $RUNTIME_IDENTIFIER -o $DESTINATION_FOLDER src/SourceGit.csproj
```
> [!NOTE]
> Please replace the `$RUNTIME_IDENTIFIER` with one of `win-x64`,`win-arm64`,`linux-x64`,`linux-arm64`,`osx-x64`,`osx-arm64`, and replece the `$DESTINATION_FOLDER` with the real path that will store the output executable files.
> Please replace the `$RUNTIME_IDENTIFIER` with one of `win-x64`,`win-arm64`,`linux-x64`,`linux-arm64`,`osx-x64`,`osx-arm64`, and replace the `$DESTINATION_FOLDER` with the real path that will store the output executable files.

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<!-- This manifest is used on Windows only.
Don't remove it as it might cause problems with window transparency and embeded controls.
Don't remove it as it might cause problems with window transparency and embedded controls.
For more details visit https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests -->
<assemblyIdentity version="1.0.0.0" name="SourceGit.Desktop"/>

View file

@ -89,7 +89,7 @@ namespace SourceGit.Commands
private readonly Models.BlameData _result = new Models.BlameData();
private readonly StringBuilder _content = new StringBuilder();
private readonly string _dateFormat = Models.DateTimeFormat.Actived.DateOnly;
private readonly string _dateFormat = Models.DateTimeFormat.Active.DateOnly;
private string _lastSHA = string.Empty;
private bool _needUnifyCommitSHA = false;
private int _minSHALen = 64;

View file

@ -24,7 +24,7 @@ namespace SourceGit.Commands
if (!File.Exists(toolPath))
{
Dispatcher.UIThread.Post(() => App.RaiseException(repo, $"Can NOT found external merge tool in '{toolPath}'!"));
Dispatcher.UIThread.Post(() => App.RaiseException(repo, $"Can NOT find external merge tool in '{toolPath}'!"));
return false;
}
@ -54,7 +54,7 @@ namespace SourceGit.Commands
if (!File.Exists(toolPath))
{
Dispatcher.UIThread.Invoke(() => App.RaiseException(repo, $"Can NOT found external diff tool in '{toolPath}'!"));
Dispatcher.UIThread.Invoke(() => App.RaiseException(repo, $"Can NOT find external diff tool in '{toolPath}'!"));
return false;
}

View file

@ -37,10 +37,10 @@ namespace SourceGit.Models
public List<Decorator> Decorators { get; set; } = new List<Decorator>();
public bool HasDecorators => Decorators.Count > 0;
public string AuthorTimeStr => DateTime.UnixEpoch.AddSeconds(AuthorTime).ToLocalTime().ToString(DateTimeFormat.Actived.DateTime);
public string CommitterTimeStr => DateTime.UnixEpoch.AddSeconds(CommitterTime).ToLocalTime().ToString(DateTimeFormat.Actived.DateTime);
public string AuthorTimeShortStr => DateTime.UnixEpoch.AddSeconds(AuthorTime).ToLocalTime().ToString(DateTimeFormat.Actived.DateOnly);
public string CommitterTimeShortStr => DateTime.UnixEpoch.AddSeconds(CommitterTime).ToLocalTime().ToString(DateTimeFormat.Actived.DateOnly);
public string AuthorTimeStr => DateTime.UnixEpoch.AddSeconds(AuthorTime).ToLocalTime().ToString(DateTimeFormat.Active.DateTime);
public string CommitterTimeStr => DateTime.UnixEpoch.AddSeconds(CommitterTime).ToLocalTime().ToString(DateTimeFormat.Active.DateTime);
public string AuthorTimeShortStr => DateTime.UnixEpoch.AddSeconds(AuthorTime).ToLocalTime().ToString(DateTimeFormat.Active.DateOnly);
public string CommitterTimeShortStr => DateTime.UnixEpoch.AddSeconds(CommitterTime).ToLocalTime().ToString(DateTimeFormat.Active.DateOnly);
public bool IsMerged { get; set; } = false;
public bool IsCommitterVisible => !Author.Equals(Committer) || AuthorTime != CommitterTime;

View file

@ -25,7 +25,7 @@ namespace SourceGit.Models
set;
} = 0;
public static DateTimeFormat Actived
public static DateTimeFormat Active
{
get => Supported[ActiveIndex];
}

View file

@ -19,7 +19,7 @@ namespace SourceGit.Models
{
try
{
_singletoneLock = File.Open(Path.Combine(Native.OS.DataDir, "process.lock"), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
_singletonLock = File.Open(Path.Combine(Native.OS.DataDir, "process.lock"), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
_isFirstInstance = true;
_server = new NamedPipeServerStream(
"SourceGitIPCChannel" + Environment.UserName,
@ -67,7 +67,7 @@ namespace SourceGit.Models
public void Dispose()
{
_cancellationTokenSource?.Cancel();
_singletoneLock?.Dispose();
_singletonLock?.Dispose();
}
private async void StartServer()
@ -96,7 +96,7 @@ namespace SourceGit.Models
}
}
private FileStream _singletoneLock = null;
private FileStream _singletonLock = null;
private bool _isFirstInstance = false;
private NamedPipeServerStream _server = null;
private CancellationTokenSource _cancellationTokenSource = null;

View file

@ -32,7 +32,7 @@ namespace SourceGit.Models
set;
} = false;
public bool OnlyHighlighCurrentBranchInHistories
public bool OnlyHighlightCurrentBranchInHistories
{
get;
set;
@ -188,7 +188,7 @@ namespace SourceGit.Models
set;
} = false;
public string PreferedOpenAIService
public string PreferredOpenAIService
{
get;
set;

View file

@ -11,6 +11,6 @@ namespace SourceGit.Models
public ulong Time { get; set; } = 0;
public string Message { get; set; } = "";
public string TimeStr => DateTime.UnixEpoch.AddSeconds(Time).ToLocalTime().ToString(DateTimeFormat.Actived.DateTime);
public string TimeStr => DateTime.UnixEpoch.AddSeconds(Time).ToLocalTime().ToString(DateTimeFormat.Active.DateTime);
}
}

View file

@ -23,7 +23,7 @@ namespace SourceGit.Models
get
{
if (IsDetached)
return $"deteched HEAD at {Head.AsSpan(10)}";
return $"detached HEAD at {Head.AsSpan(10)}";
if (Branch.StartsWith("refs/heads/", StringComparison.Ordinal))
return Branch.Substring(11);

View file

@ -120,8 +120,8 @@ namespace SourceGit.Native
private string FindExecutable(string filename)
{
var pathVariable = Environment.GetEnvironmentVariable("PATH") ?? string.Empty;
var pathes = pathVariable.Split(Path.PathSeparator, StringSplitOptions.RemoveEmptyEntries);
foreach (var path in pathes)
var paths = pathVariable.Split(Path.PathSeparator, StringSplitOptions.RemoveEmptyEntries);
foreach (var path in paths)
{
var test = Path.Combine(path, filename);
if (File.Exists(test))

View file

@ -80,17 +80,17 @@ namespace SourceGit.Native
var p = IntPtrToPixelPoint(lParam);
GetWindowRect(hWnd, out var rcWindow);
var borderThinkness = (int)(4 * window.RenderScaling);
var borderThickness = (int)(4 * window.RenderScaling);
int y = 1;
int x = 1;
if (p.X >= rcWindow.left && p.X < rcWindow.left + borderThinkness)
if (p.X >= rcWindow.left && p.X < rcWindow.left + borderThickness)
x = 0;
else if (p.X < rcWindow.right && p.X >= rcWindow.right - borderThinkness)
else if (p.X < rcWindow.right && p.X >= rcWindow.right - borderThickness)
x = 2;
if (p.Y >= rcWindow.top && p.Y < rcWindow.top + borderThinkness)
if (p.Y >= rcWindow.top && p.Y < rcWindow.top + borderThickness)
y = 0;
else if (p.Y < rcWindow.bottom && p.Y >= rcWindow.bottom - borderThinkness)
else if (p.Y < rcWindow.bottom && p.Y >= rcWindow.bottom - borderThickness)
y = 2;
var zone = y * 3 + x;
@ -351,10 +351,10 @@ namespace SourceGit.Native
Microsoft.Win32.RegistryView.Registry64);
// VSCodium (system)
var systemVScodium = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{88DA3577-054F-4CA1-8122-7D820494CFFB}_is1");
if (systemVScodium != null)
var systemVSCodium = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{88DA3577-054F-4CA1-8122-7D820494CFFB}_is1");
if (systemVSCodium != null)
{
return systemVScodium.GetValue("DisplayIcon") as string;
return systemVSCodium.GetValue("DisplayIcon") as string;
}
var currentUser = Microsoft.Win32.RegistryKey.OpenBaseKey(

View file

@ -766,7 +766,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">UNSTAGED</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">STAGEN</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">ALLES STAGEN</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">ALS UNVERÄNDERT ANGENOMMENE ANZEIGEN</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">ALS UNVERÄNDERT ANGENOMMENE ANZEIGEN</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">Template: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">ARBEITSPLATZ: </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">Arbeitsplätze konfigurieren...</x:String>

View file

@ -791,7 +791,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">UNSTAGED</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">STAGE</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">STAGE ALL</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">VIEW ASSUME UNCHANGED</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">VIEW ASSUME UNCHANGED</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">Template: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">WORKSPACE: </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">Configure Workspaces...</x:String>

View file

@ -794,7 +794,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">UNSTAGED</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">STAGE</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">STAGE TODO</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">VER ASSUME UNCHANGED</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">VER ASSUME UNCHANGED</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">Plantilla: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">ESPACIO DE TRABAJO: </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">Configura Espacios de Trabajo...</x:String>

View file

@ -733,7 +733,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">NON INDEXÉ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">INDEXER</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">INDEXER TOUT</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">VOIR LES FICHIERS PRÉSUMÉS INCHANGÉS</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">VOIR LES FICHIERS PRÉSUMÉS INCHANGÉS</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">Modèle: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">ESPACE DE TRAVAIL : </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">Configurer les espaces de travail...</x:String>

View file

@ -776,7 +776,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">NON IN STAGE</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">FAI LO STAGE</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">FAI LO STAGE DI TUTTO</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">VISUALIZZA COME NON MODIFICATO</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">VISUALIZZA COME NON MODIFICATO</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">Template: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">WORKSPACE:</x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">Configura Workspaces...</x:String>

View file

@ -731,7 +731,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">未ステージのファイル</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">ステージへ移動</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">すべてステージへ移動</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">変更されていないとみなしたものを表示</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">変更されていないとみなしたものを表示</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">テンプレート: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">ワークスペース: </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">ワークスペースを設定...</x:String>

View file

@ -667,7 +667,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">UNSTAGED</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">STAGE</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">STAGE TODOS</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">VER SUPOR NÃO ALTERADO</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">VER SUPOR NÃO ALTERADO</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">Template: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">Workspaces: </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">Configurar workspaces...</x:String>

View file

@ -791,7 +791,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">НЕСФОРМИРОВАННЫЕ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">СФОРМИРОВАТЬ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">СФОРМИРОВАТЬ ВСЁ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">ОТКРЫТЬ СПИСОК НЕОТСЛЕЖИВАЕМЫХ ФАЙЛОВ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">ОТКРЫТЬ СПИСОК НЕОТСЛЕЖИВАЕМЫХ ФАЙЛОВ</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">Шаблон: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">РАБОЧЕЕ ПРОСТРАНСТВО: </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">Настройка рабочего пространства...</x:String>

View file

@ -732,7 +732,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">நிலைநீக்கு</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">நிலைபடுத்து</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">அனைத்தும் நிலைபடுத்து</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">மாறாதது எனநினைப்பதை பார்</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">மாறாதது எனநினைப்பதை பார்</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">வளர்புரு: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">பணியிடம்:</x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">பணியிடங்களை உள்ளமை...</x:String>

View file

@ -742,7 +742,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">НЕПРОІНДЕКСОВАНІ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">ІНДЕКСУВАТИ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">ІНДЕКСУВАТИ ВСЕ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">ПЕРЕГЛЯНУТИ ФАЙЛИ, ЩО ВВАЖАЮТЬСЯ НЕЗМІНЕНИМИ</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">ПЕРЕГЛЯНУТИ ФАЙЛИ, ЩО ВВАЖАЮТЬСЯ НЕЗМІНЕНИМИ</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">Шаблон: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">РОБОЧИЙ ПРОСТІР: </x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">Налаштувати робочі простори...</x:String>

View file

@ -795,7 +795,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">未暂存</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">暂存选中</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">暂存所有</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">查看忽略变更文件</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">查看忽略变更文件</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">模板:${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">工作区:</x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">配置工作区...</x:String>

View file

@ -795,7 +795,7 @@
<x:String x:Key="Text.WorkingCopy.Unstaged" xml:space="preserve">未暫存</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.Stage" xml:space="preserve">暫存選取的檔案</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.StageAll" xml:space="preserve">暫存所有檔案</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchaged" xml:space="preserve">檢視不追蹤變更的檔案</x:String>
<x:String x:Key="Text.WorkingCopy.Unstaged.ViewAssumeUnchanged" xml:space="preserve">檢視不追蹤變更的檔案</x:String>
<x:String x:Key="Text.WorkingCopy.UseCommitTemplate" xml:space="preserve">範本: ${0}$</x:String>
<x:String x:Key="Text.Workspace" xml:space="preserve">工作區:</x:String>
<x:String x:Key="Text.Workspace.Configure" xml:space="preserve">設定工作區...</x:String>

View file

@ -25,7 +25,7 @@ namespace SourceGit.ViewModels
{
if (!string.IsNullOrEmpty(file))
{
var log = _repo.CreateLog("Remove Assue Unchanged File");
var log = _repo.CreateLog("Remove Assume Unchanged File");
new Commands.AssumeUnchanged(_repo.FullPath, file, false).Use(log).Exec();
log.Complete();
Files.Remove(file);

View file

@ -31,7 +31,7 @@ namespace SourceGit.ViewModels
[Required(ErrorMessage = "Feature prefix is required!!!")]
[RegularExpression(@"^[\w\-\.]+/$", ErrorMessage = "Bad feature prefix format!")]
public string FeturePrefix
public string FeaturePrefix
{
get => _featurePrefix;
set => SetProperty(ref _featurePrefix, value, true);

View file

@ -360,7 +360,7 @@ namespace SourceGit.ViewModels
if (!Path.Exists(node.Id))
{
App.RaiseException(node.Id, "Repository does NOT exists any more. Please remove it.");
App.RaiseException(node.Id, "Repository does NOT exist any more. Please remove it.");
return;
}

View file

@ -127,12 +127,12 @@ namespace SourceGit.ViewModels
public bool OnlyHighlightCurrentBranchInHistories
{
get => _settings.OnlyHighlighCurrentBranchInHistories;
get => _settings.OnlyHighlightCurrentBranchInHistories;
set
{
if (value != _settings.OnlyHighlighCurrentBranchInHistories)
if (value != _settings.OnlyHighlightCurrentBranchInHistories)
{
_settings.OnlyHighlighCurrentBranchInHistories = value;
_settings.OnlyHighlightCurrentBranchInHistories = value;
OnPropertyChanged();
}
}
@ -787,7 +787,7 @@ namespace SourceGit.ViewModels
if (_currentBranch == null)
{
App.RaiseException(_fullpath, "Can NOT found current branch!!!");
App.RaiseException(_fullpath, "Can NOT find current branch!!!");
return;
}
@ -811,7 +811,7 @@ namespace SourceGit.ViewModels
if (_currentBranch == null)
{
App.RaiseException(_fullpath, "Can NOT found current branch!!!");
App.RaiseException(_fullpath, "Can NOT find current branch!!!");
return;
}
@ -1304,7 +1304,7 @@ namespace SourceGit.ViewModels
{
if (_currentBranch == null)
{
App.RaiseException(_fullpath, "Git do not hold any branch until you do first commit.");
App.RaiseException(_fullpath, "Git cannot create a branch before your first commit.");
return;
}
@ -1370,7 +1370,7 @@ namespace SourceGit.ViewModels
{
if (_currentBranch == null)
{
App.RaiseException(_fullpath, "Git do not hold any branch until you do first commit.");
App.RaiseException(_fullpath, "Git cannot create a branch before your first commit.");
return;
}
@ -1449,7 +1449,7 @@ namespace SourceGit.ViewModels
App.GetLauncher()?.OpenRepositoryInTab(node, null);
}
public List<Models.OpenAIService> GetPreferedOpenAIServices()
public List<Models.OpenAIService> GetPreferredOpenAIServices()
{
var services = Preferences.Instance.OpenAIServices;
if (services == null || services.Count == 0)
@ -1458,11 +1458,11 @@ namespace SourceGit.ViewModels
if (services.Count == 1)
return [services[0]];
var prefered = _settings.PreferedOpenAIService;
var preferred = _settings.PreferredOpenAIService;
var all = new List<Models.OpenAIService>();
foreach (var service in services)
{
if (service.Name.Equals(prefered, StringComparison.Ordinal))
if (service.Name.Equals(preferred, StringComparison.Ordinal))
return [service];
all.Add(service);

View file

@ -127,10 +127,10 @@ namespace SourceGit.ViewModels
private set;
}
public string PreferedOpenAIService
public string PreferredOpenAIService
{
get => _repo.Settings.PreferedOpenAIService;
set => _repo.Settings.PreferedOpenAIService = value;
get => _repo.Settings.PreferredOpenAIService;
set => _repo.Settings.PreferredOpenAIService = value;
}
public AvaloniaList<Models.CustomAction> CustomActions
@ -156,8 +156,8 @@ namespace SourceGit.ViewModels
foreach (var service in Preferences.Instance.OpenAIServices)
AvailableOpenAIServices.Add(service.Name);
if (AvailableOpenAIServices.IndexOf(PreferedOpenAIService) == -1)
PreferedOpenAIService = "---";
if (AvailableOpenAIServices.IndexOf(PreferredOpenAIService) == -1)
PreferredOpenAIService = "---";
_cached = new Commands.Config(repo.FullPath).ListAll();
if (_cached.TryGetValue("user.name", out var name))

View file

@ -52,7 +52,7 @@ namespace SourceGit.ViewModels
Counter = 1;
}
public static List<SubmoduleTreeNode> Build(IList<Models.Submodule> submodules, HashSet<string> expaneded)
public static List<SubmoduleTreeNode> Build(IList<Models.Submodule> submodules, HashSet<string> expanded)
{
var nodes = new List<SubmoduleTreeNode>();
var folders = new Dictionary<string, SubmoduleTreeNode>();
@ -79,13 +79,13 @@ namespace SourceGit.ViewModels
}
else if (lastFolder == null)
{
lastFolder = new SubmoduleTreeNode(folder, depth, expaneded.Contains(folder));
lastFolder = new SubmoduleTreeNode(folder, depth, expanded.Contains(folder));
folders.Add(folder, lastFolder);
InsertFolder(nodes, lastFolder);
}
else
{
var cur = new SubmoduleTreeNode(folder, depth, expaneded.Contains(folder));
var cur = new SubmoduleTreeNode(folder, depth, expanded.Contains(folder));
folders.Add(folder, cur);
InsertFolder(lastFolder.Children, cur);
lastFolder = cur;

View file

@ -63,7 +63,7 @@ namespace SourceGit.ViewModels
Counter = 1;
}
public static List<TagTreeNode> Build(List<Models.Tag> tags, HashSet<string> expaneded)
public static List<TagTreeNode> Build(List<Models.Tag> tags, HashSet<string> expanded)
{
var nodes = new List<TagTreeNode>();
var folders = new Dictionary<string, TagTreeNode>();
@ -90,13 +90,13 @@ namespace SourceGit.ViewModels
}
else if (lastFolder == null)
{
lastFolder = new TagTreeNode(folder, expaneded.Contains(folder), depth);
lastFolder = new TagTreeNode(folder, expanded.Contains(folder), depth);
folders.Add(folder, lastFolder);
InsertFolder(nodes, lastFolder);
}
else
{
var cur = new TagTreeNode(folder, expaneded.Contains(folder), depth);
var cur = new TagTreeNode(folder, expanded.Contains(folder), depth);
folders.Add(folder, cur);
InsertFolder(lastFolder.Children, cur);
lastFolder = cur;

View file

@ -1099,7 +1099,7 @@ namespace SourceGit.ViewModels
var menu = new ContextMenu();
var ai = null as MenuItem;
var services = _repo.GetPreferedOpenAIServices();
var services = _repo.GetPreferredOpenAIServices();
if (services.Count > 0)
{
ai = new MenuItem();
@ -1497,7 +1497,7 @@ namespace SourceGit.ViewModels
return null;
}
var services = _repo.GetPreferedOpenAIServices();
var services = _repo.GetPreferredOpenAIServices();
if (services.Count == 0)
{
App.RaiseException(_repo.FullPath, "Bad configuration for OpenAI");
@ -1707,7 +1707,7 @@ namespace SourceGit.ViewModels
if (!_repo.CanCreatePopup())
{
App.RaiseException(_repo.FullPath, "Repository has unfinished job! Please wait!");
App.RaiseException(_repo.FullPath, "Repository has an unfinished job! Please wait!");
return;
}

View file

@ -110,7 +110,7 @@ namespace SourceGit.Views
context.DrawLine(pen, new Point(j * 32, 0), new Point(j * 32, 192));
// Selected
if (_hightlightedTableRect is { } rect)
if (_highlightedTableRect is { } rect)
context.DrawRectangle(new Pen(Brushes.White, 2), rect);
}
@ -143,7 +143,7 @@ namespace SourceGit.Views
protected override void OnDataContextChanged(EventArgs e)
{
base.OnDataContextChanged(e);
_hightlightedTableRect = null;
_highlightedTableRect = null;
}
protected override Size MeasureOverride(Size availableSize)
@ -161,9 +161,9 @@ namespace SourceGit.Views
var col = (int)Math.Floor(p.X / 32.0);
var row = (int)Math.Floor(p.Y / 32.0);
var rect = new Rect(col * 32 + 2, row * 32 + 2, 28, 28);
if (!rect.Equals(_hightlightedTableRect))
if (!rect.Equals(_highlightedTableRect))
{
_hightlightedTableRect = rect;
_highlightedTableRect = rect;
SetCurrentValue(ValueProperty, COLOR_TABLE[row, col].ToUInt32());
}
@ -172,32 +172,32 @@ namespace SourceGit.Views
if (_darkestRect.Rect.Contains(p))
{
_hightlightedTableRect = null;
_highlightedTableRect = null;
SetCurrentValue(ValueProperty, _darkestColor.ToUInt32());
}
else if (_darkerRect.Contains(p))
{
_hightlightedTableRect = null;
_highlightedTableRect = null;
SetCurrentValue(ValueProperty, _darkerColor.ToUInt32());
}
else if (_darkRect.Contains(p))
{
_hightlightedTableRect = null;
_highlightedTableRect = null;
SetCurrentValue(ValueProperty, _darkColor.ToUInt32());
}
else if (_lightRect.Contains(p))
{
_hightlightedTableRect = null;
_highlightedTableRect = null;
SetCurrentValue(ValueProperty, _lightColor.ToUInt32());
}
else if (_lighterRect.Contains(p))
{
_hightlightedTableRect = null;
_highlightedTableRect = null;
SetCurrentValue(ValueProperty, _lighterColor.ToUInt32());
}
else if (_lightestRect.Rect.Contains(p))
{
_hightlightedTableRect = null;
_highlightedTableRect = null;
SetCurrentValue(ValueProperty, _lightestColor.ToUInt32());
}
}
@ -234,7 +234,7 @@ namespace SourceGit.Views
private Rect _lightRect = new Rect(160, 200, 32, 32);
private Rect _lighterRect = new Rect(192, 200, 32, 32);
private RoundedRect _lightestRect = new RoundedRect(new Rect(224, 200, 32, 32), new CornerRadius(0, 4, 4, 0));
private Rect? _hightlightedTableRect = null;
private Rect? _highlightedTableRect = null;
private Color _darkestColor;
private Color _darkerColor;

View file

@ -46,7 +46,7 @@
Height="26"
VerticalAlignment="Center"
CornerRadius="2"
Text="{Binding FeturePrefix, Mode=TwoWay}"/>
Text="{Binding FeaturePrefix, Mode=TwoWay}"/>
<TextBlock Grid.Row="4" Grid.Column="0"
HorizontalAlignment="Right" VerticalAlignment="Center"

View file

@ -284,7 +284,7 @@ namespace SourceGit.Views
base.OnKeyDown(e);
// Record unhandled key modifers.
// Record unhandled key modifiers.
if (!e.Handled)
{
_unhandledModifiers = e.KeyModifiers;

View file

@ -509,7 +509,7 @@
Height="28" Padding="8,0"
VerticalAlignment="Center" HorizontalAlignment="Stretch"
ItemsSource="{Binding AvailableOpenAIServices}"
SelectedItem="{Binding PreferedOpenAIService, Mode=TwoWay}">
SelectedItem="{Binding PreferredOpenAIService, Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="20" VerticalAlignment="Center">

View file

@ -136,7 +136,7 @@
<DataTemplate DataType="m:StatisticsReport">
<Grid ColumnDefinitions="256,*">
<Grid Grid.Column="0" RowDefinitions="*,16">
<!-- Table By Autor -->
<!-- Table By Author -->
<ListBox Grid.Column="0"
ItemsSource="{Binding Authors}"
SelectedItem="{Binding SelectedAuthor, Mode=TwoWay}"

View file

@ -73,7 +73,7 @@
Classes="icon_button"
Width="26" Height="14"
Padding="0"
ToolTip.Tip="{DynamicResource Text.WorkingCopy.Unstaged.ViewAssumeUnchaged}"
ToolTip.Tip="{DynamicResource Text.WorkingCopy.Unstaged.ViewAssumeUnchanged}"
Command="{Binding OpenAssumeUnchanged}">
<Path Width="14" Height="14" Data="{StaticResource Icons.File.Ignore}"/>
</Button>