From 78fcc0117e6ef661289ee368425ad39a5ac1e198 Mon Sep 17 00:00:00 2001 From: leo Date: Mon, 25 Nov 2024 11:42:48 +0800 Subject: [PATCH 01/35] ux: style for tooltip Signed-off-by: leo --- src/Resources/Styles.axaml | 1 + src/Views/CommitBaseInfo.axaml | 26 +------------------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/Resources/Styles.axaml b/src/Resources/Styles.axaml index 82970549..fd4cac0c 100644 --- a/src/Resources/Styles.axaml +++ b/src/Resources/Styles.axaml @@ -164,6 +164,7 @@ - - @@ -119,12 +113,6 @@ Margin="0,0,16,0" PointerEntered="OnSHAPointerEntered" PointerPressed="OnSHAPressed"> - - - - @@ -162,12 +150,6 @@ Margin="0,0,16,0" PointerEntered="OnSHAPointerEntered" PointerPressed="OnSHAPressed"> - - - - @@ -205,13 +187,7 @@ Message="{Binding #ThisControl.Message}" IssueTrackerRules="{Binding #ThisControl.IssueTrackerRules}" HorizontalAlignment="Stretch" - TextWrapping="Wrap"> - - - - + TextWrapping="Wrap"> From a1c48dd11b00832c99590558d6c9c19306d3e5d1 Mon Sep 17 00:00:00 2001 From: leo Date: Tue, 26 Nov 2024 14:39:58 +0800 Subject: [PATCH 02/35] project: upgrade AvaloniaUI to 11.2.2 --- src/SourceGit.csproj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/SourceGit.csproj b/src/SourceGit.csproj index a5a97df9..32f68d03 100644 --- a/src/SourceGit.csproj +++ b/src/SourceGit.csproj @@ -37,11 +37,11 @@ - - - - - + + + + + From bb41fcea3eaa071ef2d1d23b55b73ccda68235e0 Mon Sep 17 00:00:00 2001 From: leo Date: Tue, 26 Nov 2024 19:52:13 +0800 Subject: [PATCH 03/35] fix: `DisplayRange` is not updated when text diff view is opened for the first time --- src/Views/TextDiffView.axaml.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Views/TextDiffView.axaml.cs b/src/Views/TextDiffView.axaml.cs index da2d9ed1..ea70ac93 100644 --- a/src/Views/TextDiffView.axaml.cs +++ b/src/Views/TextDiffView.axaml.cs @@ -619,6 +619,7 @@ namespace SourceGit.Views TextArea.TextView.VisualLinesChanged += OnTextViewVisualLinesChanged; UpdateTextMate(); + OnTextViewVisualLinesChanged(null, null); } protected override void OnUnloaded(RoutedEventArgs e) From 4fc32b2b59f414d508941a01777b6b74a733115e Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 27 Nov 2024 09:17:18 +0800 Subject: [PATCH 04/35] fix: crash due to font family name is an empty space (#745) --- src/ViewModels/Preference.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ViewModels/Preference.cs b/src/ViewModels/Preference.cs index 70f0041f..1ccee4cd 100644 --- a/src/ViewModels/Preference.cs +++ b/src/ViewModels/Preference.cs @@ -65,7 +65,8 @@ namespace SourceGit.ViewModels get => _defaultFontFamily; set { - if (SetProperty(ref _defaultFontFamily, value) && !_isLoading) + var trimmed = value.Trim(); + if (SetProperty(ref _defaultFontFamily, trimmed) && !_isLoading) App.SetFonts(_defaultFontFamily, _monospaceFontFamily, _onlyUseMonoFontInEditor); } } @@ -75,7 +76,8 @@ namespace SourceGit.ViewModels get => _monospaceFontFamily; set { - if (SetProperty(ref _monospaceFontFamily, value) && !_isLoading) + var trimmed = value.Trim(); + if (SetProperty(ref _monospaceFontFamily, trimmed) && !_isLoading) App.SetFonts(_defaultFontFamily, _monospaceFontFamily, _onlyUseMonoFontInEditor); } } From cb9110baef8cd7efb96a3ab262ff4608a4188035 Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 27 Nov 2024 10:02:26 +0800 Subject: [PATCH 05/35] ux: new style for repository sub-view switcher --- src/Resources/Locales/en_US.axaml | 6 +++--- src/Views/Repository.axaml | 34 +++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index 8a0ee04e..e814d671 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -341,7 +341,7 @@ Remote: Track files named '{0}' Track all *{0} files - Histories + HISTORY Switch Horizontal/Vertical Layout AUTHOR AUTHOR TIME @@ -621,7 +621,7 @@ Pop Drop Stash Drop: - Stashes + STASHES CHANGES STASHES Statistics @@ -668,7 +668,7 @@ Rescan Repositories in Default Clone Dir Search Repositories... Sort - Changes + LOCAL CHANGES Git Ignore Ignore all *{0} files Ignore *{0} files in the same folder diff --git a/src/Views/Repository.axaml b/src/Views/Repository.axaml index 079af6ab..1f5c0706 100644 --- a/src/Views/Repository.axaml +++ b/src/Views/Repository.axaml @@ -42,6 +42,16 @@ + + + + @@ -67,9 +83,9 @@ - - - + + + - - - + + + - - - + + + Date: Wed, 27 Nov 2024 10:08:20 +0800 Subject: [PATCH 06/35] ux: change `Height` of repository search bar --- src/Views/Repository.axaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Views/Repository.axaml b/src/Views/Repository.axaml index 1f5c0706..a0e83046 100644 --- a/src/Views/Repository.axaml +++ b/src/Views/Repository.axaml @@ -152,7 +152,7 @@ Date: Wed, 27 Nov 2024 11:10:44 +0800 Subject: [PATCH 07/35] ux: new style for ToggleButton.toggle_untracked --- src/Resources/Styles.axaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Resources/Styles.axaml b/src/Resources/Styles.axaml index fd4cac0c..6ea2af10 100644 --- a/src/Resources/Styles.axaml +++ b/src/Resources/Styles.axaml @@ -1182,7 +1182,7 @@ From d38d1b11e8e330c23d9f28d35753d2d5dd10260f Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 27 Nov 2024 15:27:57 +0800 Subject: [PATCH 08/35] fix: typo in `Text.Preference.General.ShowChildren` --- src/Resources/Locales/en_US.axaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index e814d671..fd42b0f5 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -453,7 +453,7 @@ Language History Commits Show author time instead of commit time in graph - Show children in the comment details + Show children in the commit details Subject Guide Length GIT Enable Auto CRLF From 1c0d8a26972d9b70f53fc0b4e02d4a4e13b6d51c Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 27 Nov 2024 17:06:44 +0800 Subject: [PATCH 09/35] fix: `git rev-list` do not support `--decorate-refs-exclude` (#746) Do not use histories filters to query commit children --- src/Commands/QueryCommitChildren.cs | 6 ++---- src/ViewModels/CommitDetail.cs | 3 +-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Commands/QueryCommitChildren.cs b/src/Commands/QueryCommitChildren.cs index 293de912..bef09abb 100644 --- a/src/Commands/QueryCommitChildren.cs +++ b/src/Commands/QueryCommitChildren.cs @@ -4,14 +4,12 @@ namespace SourceGit.Commands { public class QueryCommitChildren : Command { - public QueryCommitChildren(string repo, string commit, int max, string filters) + public QueryCommitChildren(string repo, string commit, int max) { WorkingDirectory = repo; Context = repo; _commit = commit; - if (string.IsNullOrEmpty(filters)) - filters = "--branches --remotes --tags"; - Args = $"rev-list -{max} --parents {filters} ^{commit}"; + Args = $"rev-list -{max} --parents --branches --remotes ^{commit}"; } public IEnumerable Result() diff --git a/src/ViewModels/CommitDetail.cs b/src/ViewModels/CommitDetail.cs index 05b60e2f..f14b0359 100644 --- a/src/ViewModels/CommitDetail.cs +++ b/src/ViewModels/CommitDetail.cs @@ -576,8 +576,7 @@ namespace SourceGit.ViewModels Task.Run(() => { var max = Preference.Instance.MaxHistoryCommits; - var filter = _repo.Settings.BuildHistoriesFilter(); - var cmdChildren = new Commands.QueryCommitChildren(_repo.FullPath, _commit.SHA, max, filter) { Cancel = _cancelToken }; + var cmdChildren = new Commands.QueryCommitChildren(_repo.FullPath, _commit.SHA, max) { Cancel = _cancelToken }; var children = cmdChildren.Result(); if (!cmdChildren.Cancel.Requested) Dispatcher.UIThread.Post(() => Children.AddRange(children)); From 1872148d985515f3bd50938aacffec47cd2688ae Mon Sep 17 00:00:00 2001 From: leo Date: Wed, 27 Nov 2024 18:31:50 +0800 Subject: [PATCH 10/35] fix: the way to deal with local changes did not update after radio toggle changed (#748) --- src/Views/Checkout.axaml | 15 +++++------ src/Views/Checkout.axaml.cs | 47 +++++++++++++++++++++++++++++++++ src/Views/CreateBranch.axaml | 13 +++++---- src/Views/CreateBranch.axaml.cs | 47 +++++++++++++++++++++++++++++++++ src/Views/Pull.axaml | 13 +++++---- src/Views/Pull.axaml.cs | 47 +++++++++++++++++++++++++++++++++ 6 files changed, 160 insertions(+), 22 deletions(-) diff --git a/src/Views/Checkout.axaml b/src/Views/Checkout.axaml index eaf2e79e..eb1c9de0 100644 --- a/src/Views/Checkout.axaml +++ b/src/Views/Checkout.axaml @@ -32,22 +32,21 @@ HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,8,0" Text="{DynamicResource Text.Checkout.LocalChanges}"/> - - - - - + + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> diff --git a/src/Views/Checkout.axaml.cs b/src/Views/Checkout.axaml.cs index f8398a1d..da6e6b31 100644 --- a/src/Views/Checkout.axaml.cs +++ b/src/Views/Checkout.axaml.cs @@ -1,4 +1,5 @@ using Avalonia.Controls; +using Avalonia.Interactivity; namespace SourceGit.Views { @@ -8,5 +9,51 @@ namespace SourceGit.Views { InitializeComponent(); } + + protected override void OnLoaded(RoutedEventArgs e) + { + base.OnLoaded(e); + + var vm = DataContext as ViewModels.Checkout; + if (vm == null) + return; + + switch (vm.PreAction) + { + case Models.DealWithLocalChanges.DoNothing: + RadioDoNothing.IsChecked = true; + break; + case Models.DealWithLocalChanges.StashAndReaply: + RadioStashAndReply.IsChecked = true; + break; + default: + RadioDiscard.IsChecked = true; + break; + } + } + + private void OnLocalChangeActionIsCheckedChanged(object sender, RoutedEventArgs e) + { + var vm = DataContext as ViewModels.Checkout; + if (vm == null) + return; + + if (RadioDoNothing.IsChecked == true) + { + if (vm.PreAction != Models.DealWithLocalChanges.DoNothing) + vm.PreAction = Models.DealWithLocalChanges.DoNothing; + return; + } + + if (RadioStashAndReply.IsChecked == true) + { + if (vm.PreAction != Models.DealWithLocalChanges.StashAndReaply) + vm.PreAction = Models.DealWithLocalChanges.StashAndReaply; + return; + } + + if (vm.PreAction != Models.DealWithLocalChanges.Discard) + vm.PreAction = Models.DealWithLocalChanges.Discard; + } } } diff --git a/src/Views/CreateBranch.axaml b/src/Views/CreateBranch.axaml index 3516c317..caea0be4 100644 --- a/src/Views/CreateBranch.axaml +++ b/src/Views/CreateBranch.axaml @@ -69,21 +69,20 @@ Margin="0,0,8,0" Text="{DynamicResource Text.CreateBranch.LocalChanges}"/> - - - - + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> - - - - + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> + IsCheckedChanged="OnLocalChangeActionIsCheckedChanged"/> Date: Wed, 27 Nov 2024 20:21:01 +0800 Subject: [PATCH 11/35] enhance: clear unhandled key modifer before running command (#748) --- src/Views/Launcher.axaml.cs | 5 +++++ src/Views/RepositoryToolbar.axaml.cs | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/Views/Launcher.axaml.cs b/src/Views/Launcher.axaml.cs index 29d90e09..4137579d 100644 --- a/src/Views/Launcher.axaml.cs +++ b/src/Views/Launcher.axaml.cs @@ -72,6 +72,11 @@ namespace SourceGit.Views return _unhandledModifiers.HasFlag(modifier); } + public void ClearKeyModifier() + { + _unhandledModifiers = KeyModifiers.None; + } + protected override void OnOpened(EventArgs e) { base.OnOpened(e); diff --git a/src/Views/RepositoryToolbar.axaml.cs b/src/Views/RepositoryToolbar.axaml.cs index afc8ac5a..1d9d634b 100644 --- a/src/Views/RepositoryToolbar.axaml.cs +++ b/src/Views/RepositoryToolbar.axaml.cs @@ -53,6 +53,7 @@ namespace SourceGit.Views if (!startDirectly && OperatingSystem.IsMacOS()) startDirectly = launcher.HasKeyModifier(KeyModifiers.Meta); + launcher.ClearKeyModifier(); repo.Fetch(startDirectly); e.Handled = true; } @@ -67,6 +68,7 @@ namespace SourceGit.Views if (!startDirectly && OperatingSystem.IsMacOS()) startDirectly = launcher.HasKeyModifier(KeyModifiers.Meta); + launcher.ClearKeyModifier(); repo.Pull(startDirectly); e.Handled = true; } @@ -81,6 +83,7 @@ namespace SourceGit.Views if (!startDirectly && OperatingSystem.IsMacOS()) startDirectly = launcher.HasKeyModifier(KeyModifiers.Meta); + launcher.ClearKeyModifier(); repo.Push(startDirectly); e.Handled = true; } @@ -89,8 +92,16 @@ namespace SourceGit.Views private void StashAll(object _, RoutedEventArgs e) { var launcher = this.FindAncestorOfType(); - (DataContext as ViewModels.Repository)?.StashAll(launcher?.HasKeyModifier(KeyModifiers.Control) ?? false); - e.Handled = true; + if (launcher is not null && DataContext is ViewModels.Repository repo) + { + var startDirectly = launcher.HasKeyModifier(KeyModifiers.Control); + if (!startDirectly && OperatingSystem.IsMacOS()) + startDirectly = launcher.HasKeyModifier(KeyModifiers.Meta); + + launcher.ClearKeyModifier(); + repo.StashAll(startDirectly); + e.Handled = true; + } } private void OpenGitFlowMenu(object sender, RoutedEventArgs e) From e66179aeb88060e04c6481395a8497efc5014981 Mon Sep 17 00:00:00 2001 From: Efrem Ropelato Date: Thu, 28 Nov 2024 02:44:59 +0100 Subject: [PATCH 12/35] Italian translation (#759) --- TRANSLATION.md | 9 + src/App.axaml | 1 + src/Models/Locales.cs | 1 + src/Resources/Locales/it_IT.axaml | 696 ++++++++++++++++++++++++++++++ 4 files changed, 707 insertions(+) create mode 100644 src/Resources/Locales/it_IT.axaml diff --git a/TRANSLATION.md b/TRANSLATION.md index 03b26e1b..af8f4938 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -56,6 +56,15 @@ - Text.ScanRepositories - Text.SHALinkCM.NavigateTo + + +### it_IT.axaml: 100.0% + + +
+Missing Keys + +
### pt_BR.axaml: 99.29% diff --git a/src/App.axaml b/src/App.axaml index fc55776e..0f40031d 100644 --- a/src/App.axaml +++ b/src/App.axaml @@ -14,6 +14,7 @@ + diff --git a/src/Models/Locales.cs b/src/Models/Locales.cs index 9d24f491..e30977bf 100644 --- a/src/Models/Locales.cs +++ b/src/Models/Locales.cs @@ -12,6 +12,7 @@ namespace SourceGit.Models new Locale("English", "en_US"), new Locale("Español", "es_ES"), new Locale("Français", "fr_FR"), + new Locale("Italiano", "it_IT"), new Locale("Português (Brasil)", "pt_BR"), new Locale("Русский", "ru_RU"), new Locale("简体中文", "zh_CN"), diff --git a/src/Resources/Locales/it_IT.axaml b/src/Resources/Locales/it_IT.axaml new file mode 100644 index 00000000..432daa08 --- /dev/null +++ b/src/Resources/Locales/it_IT.axaml @@ -0,0 +1,696 @@ + + Informazioni + Informazioni su SourceGit + • Creato con + • Il grafico è reso da + © 2024 sourcegit-scm + • Editor di testo da + • I font monospaziati provengono da + • Il codice sorgente è disponibile su + Client GUI Git open source e gratuito + Aggiungi Worktree + Cosa fare il checkout: + Branch esistente + Crea nuovo branch + Posizione: + Percorso per questo worktree. Supportato il percorso relativo. + Nome Branch: + Facoltativo. Predefinito è il nome della cartella di destinazione. + Traccia Branch: + Traccia branch remoto + Assistente AI + Usa AI per generare il messaggio di commit + Applica + Errore + Genera errori e si rifiuta di applicare la patch + Tutti gli errori + Simile a 'errore', ma mostra di più + File Patch: + Seleziona file .patch da applicare + Ignora modifiche agli spazi + Nessun avviso + Disattiva l'avviso sugli spazi finali + Applica Patch + Avviso + Mostra avvisi per alcuni errori, ma applica comunque + Spazi: + Archivia... + Salva Archivio In: + Seleziona il percorso del file archivio + Revisione: + Archivia + Richiedi Password SourceGit + FILE ASSUNTI COME INVARIATI + NESSUN FILE ASSUNTO COME INVARIATO + RIMUOVI + FILE BINARIO NON SUPPORTATO!!! + Attribuisci + L'ATTRIBUZIONE SU QUESTO FILE NON È SUPPORTATA!!! + Checkout ${0}$... + Confronta con Branch + Confronta con HEAD + Confronta con Worktree + Copia Nome Branch + Elimina ${0}$... + Elimina i {0} branch selezionati + Scarta tutte le modifiche + Avanzamento Veloce a ${0}$ + Recupera ${0}$ in ${1}$... + Git Flow - Completa ${0}$ + Unisci ${0}$ in ${1}$... + Recupera ${0}$ + Recupera ${0}$ in ${1}$... + Invia ${0}$ + Riallinea ${0}$ su ${1}$... + Rinomina ${0}$... + Imposta Branch di Tracciamento + Rimuovi Tracciamento + Confronto Branch + Byte + ANNULLA + Ripristina Questa Revisione + Ripristina la Revisione Padre + Genera messaggio di commit + CAMBIA MODALITÀ DI VISUALIZZAZIONE + Mostra come elenco di file e directory + Mostra come elenco di percorsi + Mostra come albero del filesystem + Checkout Branch + Checkout Commit + Avviso: Effettuando un checkout del commit, la tua HEAD sarà separata + Commit: + Branch: + Modifiche Locali: + Scarta + Non fare nulla + Stash e Ripristina + Cherry Pick + Aggiungi sorgente al messaggio di commit + Commit(s): + Conferma tutte le modifiche + Mainline: + Di solito non è possibile cherry-pick su una fusione perché non si sa quale lato della fusione deve essere considerato il mainline. Questa opzione consente di riprodurre la modifica relativa al genitore specificato. + Cancella Stash + Stai per cancellare tutti gli stash. Sei sicuro di voler continuare? + Clona Repository Remoto + Parametri Extra: + Argomenti addizionali per clonare il repository. Facoltativo. + Nome Locale: + Nome del repository. Facoltativo. + Cartella Principale: + URL del Repository: + CHIUDI + Editor + Cherry-Pick Questo Commit + Cherry-Pick... + Checkout Commit + Confronta con HEAD + Confronta con Worktree + Copia Info + Copia SHA + Azione Personalizzata + Rebase Interattivo ${0}$ fino a Qui + Riallinea ${0}$ fino a Qui + Ripristina ${0}$ fino a Qui + Annulla Commit + Modifica + Salva come Patch... + Unisci al Genitore + Unisci Commit Figli fino a Qui + MODIFICHE + Cerca Modifiche... + FILE + File LFS + Sottomodulo + INFORMAZIONI + AUTORE + MODIFICATO + CHI HA COMMITTATO + Controlla i riferimenti che contengono questo commit + IL COMMIT È CONTENUTO DA + Mostra solo le prime 100 modifiche. Vedi tutte le modifiche nella scheda MODIFICHE. + MESSAGGIO + GENITORI + RIFERIMENTI + SHA + Apri nel Browser + Inserisci l'oggetto del commit + Descrizione + Configura Repository + TEMPLATE DI COMMIT + Nome Template: + Contenuto Template: + AZIONE PERSONALIZZATA + Argomenti: + ${REPO} - Percorso del repository; ${SHA} - SHA del commit selezionato + File Eseguibile: + Nome: + Ambito: + Commit + Repository + Indirizzo Email + Indirizzo email + GIT + Recupera automaticamente i remoti + Minuto/i + Remoto Predefinito + Abilita --prune durante il fetch + Abilita --signoff per i commit + TRACCIAMENTO ISSUE + Aggiungi Regola Esempio per GitHub + Aggiungi Regola Esempio per Jira + Aggiungi Regola Esempio per Issue GitLab + Aggiungi Regola Esempio per Merge Request GitLab + Nuova Regola + Espressione Regex Issue: + Nome Regola: + URL Risultato: + Utilizza $1, $2 per accedere ai valori dei gruppi regex. + AI + Servizio Preferito: + Se il 'Servizio Preferito' è impostato, SourceGit utilizzerà solo quello per questo repository. In caso contrario, se sono disponibili più servizi, verrà mostrato un menu contestuale per sceglierne uno. + Proxy HTTP + Proxy HTTP usato da questo repository + Nome Utente + Nome utente per questo repository + Spazi di Lavoro + Colore + Ripristina schede all'avvio + Guida Commit Convenzionali + Modifica Sostanziale: + Issue Chiusa: + Dettaglio Modifiche: + Ambito: + Descrizione Breve: + Tipo di Modifica: + Copia + Copia Tutto il Testo + Copia Percorso + Copia Nome File + Crea Branch... + Basato Su: + Checkout del Branch Creato + Modifiche Locali: + Scarta + Non Fare Nulla + Stash e Ripristina + Nome Nuovo Branch: + Inserisci il nome del branch. + Crea Branch Locale + Crea Tag... + Nuovo Tag Su: + Firma con GPG + Messaggio Tag: + Facoltativo. + Nome Tag: + Formato consigliato: v1.0.0-alpha + Invia a tutti i remoti dopo la creazione + Crea Nuovo Tag + Tipo: + annotato + leggero + Tieni premuto Ctrl per avviare direttamente + Taglia + Elimina Branch + Branch: + Stai per eliminare un branch remoto!!! + Elimina anche il branch remoto ${0}$ + Elimina Branch Multipli + Stai per eliminare più branch contemporaneamente. Controlla attentamente prima di procedere! + Elimina Remoto + Remoto: + Destinazione: + Conferma Eliminazione Gruppo + Conferma Eliminazione Repository + Elimina Sottomodulo + Percorso Sottomodulo: + Elimina Tag + Tag: + Elimina dai repository remoti + DIFF BINARIO + NUOVO + VECCHIO + Copia + Modalità File Modificata + Ignora Modifiche agli Spazi + MODIFICA OGGETTO LFS + Differenza Successiva + NESSUNA MODIFICA O SOLO CAMBIAMENTI DI FINE LINEA + Differenza Precedente + Salva come Patch + Mostra Simboli Nascosti + Diff Affiancato + SOTTOMODULO + NUOVO + Scambia + Evidenziazione Sintassi + Avvolgimento delle Parole + Apri nello Strumento di Merge + Mostra Tutte le Righe + Diminuisci Numero di Righe Visibili + Aumenta Numero di Righe Visibili + SELEZIONA UN FILE PER VISUALIZZARE LE MODIFICHE + Apri nello Strumento di Merge + Scarta Modifiche + Tutte le modifiche locali nella copia di lavoro. + Modifiche: + Includi file ignorati + Un totale di {0} modifiche saranno scartate + Questa azione non può essere annullata!!! + Segnalibro: + Nuovo Nome: + Destinazione: + Modifica Gruppo Selezionato + Modifica Repository Selezionato + Esegui Azione Personalizzata + Nome Azione: + Avanzamento Veloce (senza verifica) + Recupera + Recupera da tutti i remoti + Recupera senza tag + Remoto: + Recupera Modifiche Remote + Presumi invariato + Scarta... + Scarta {0} file... + Scarta Modifiche nelle Righe Selezionate + Apri Strumento di Merge Esterno + Salva come Patch... + Staging + Staging {0} file + Staging Modifiche nelle Righe Selezionate + Stash... + Stash {0} file... + Rimuovi dallo Staging + Rimuovi dallo Staging {0} file + Rimuovi dallo Staging Modifiche nelle Righe Selezionate + Usa Il Loro (checkout --theirs) + Usa Il Mio (checkout --ours) + Cronologia File + CONTENUTO + MODIFICA + FILTRO + Git-Flow + Branch di Sviluppo: + Feature: + Prefisso Feature: + FLOW - Completa Feature + FLOW - Completa Hotfix + FLOW - Completa Release + Target: + Hotfix: + Prefisso Hotfix: + Inizializza Git-Flow + Mantieni branch + Branch di Produzione: + Release: + Prefisso Release: + Inizia Feature... + FLOW - Inizia Feature + Inizia Hotfix... + FLOW - Inizia Hotfix + Inserisci nome + Inizia Release... + FLOW - Inizia Release + Prefisso Tag Versione: + Git LFS + Aggiungi Modello di Tracciamento... + Il modello è un nome file + Modello Personalizzato: + Aggiungi Modello di Tracciamento a Git LFS + Recupera + Recupera Oggetti LFS + Esegui `git lfs fetch` per scaricare gli oggetti Git LFS. Questo non aggiorna la copia di lavoro. + Installa hook di Git LFS + Mostra Bloccaggi + Nessun File Bloccato + Blocca + Mostra solo i miei bloccaggi + Bloccaggi LFS + Sblocca + Forza Sblocco + Elimina + Esegui `git lfs prune` per eliminare vecchi file LFS dallo storage locale + Pull + Pull Oggetti LFS + Esegui `git lfs pull` per scaricare tutti i file LFS per il ref corrente e fare il checkout + Push + Push Oggetti LFS + Invia grandi file in coda al punto finale di Git LFS + Remoto: + Traccia file con nome '{0}' + Traccia tutti i file *{0} + Storico + Passa Layout Orizzontale/Verticale + AUTORE + ORA AUTORE + GRAFICO & OGGETTO + SHA + ORA COMMIT + {0} COMMIT SELEZIONATI + Tieni premuto 'Ctrl' o 'Shift' per selezionare più commit. + Tieni premuto ⌘ o ⇧ per selezionare più commit. + SUGGERIMENTI: + Riferimento Scorciatoie da Tastiera + GLOBALE + Annulla il popup corrente + Chiudi la pagina corrente + Vai alla pagina precedente + Vai alla pagina successiva + Crea una nuova pagina + Apri la finestra di preferenze + REPOSITORY + Conferma le modifiche in fase + Conferma e invia le modifiche in fase + Aggiungi tutte le modifiche e conferma + Crea un nuovo branch dal commit selezionato + Scarta le modifiche selezionate + Recupera, avvia direttamente + Modalità Dashboard (Predefinita) + Recupera e integra, avvia direttamente + Invia, avvia direttamente + Forza il ricaricamento di questo repository + Aggiungi/Rimuovi le modifiche selezionate + Modalità ricerca commit + Passa a 'Modifiche' + Passa a 'Storico' + Passa a 'Stashes' + EDITOR TESTO + Chiudi il pannello di ricerca + Trova il prossimo risultato + Trova il risultato precedente + Apri il pannello di ricerca + Aggiungi + Rimuovi + Scarta + Inizializza Repository + Percorso: + Cherry-Pick in corso. Premi 'Annulla' per ripristinare l'HEAD originale. + Richiesta di merge in corso. Premi 'Annulla' per ripristinare l'HEAD originale. + Rebase in corso. Premi 'Annulla' per ripristinare l'HEAD originale. + Revert in corso. Premi 'Annulla' per ripristinare l'HEAD originale. + Rebase Interattivo + Branch di destinazione: + Su: + Apri nel Browser + Copia il Link + ERRORE + AVVISO + Unisci Branch + In: + Opzione di Merge: + Branch Sorgente: + Sposta Nodo Repository + Seleziona nodo padre per: + Nome: + Git NON è configurato. Vai su [Preferenze] e configurarlo prima. + Apri Cartella Dati App + Apri con... + Opzionale. + Crea Nuova Pagina + Segnalibro + Chiudi Tab + Chiudi Altri Tab + Chiudi i Tab a Destra + Copia Percorso Repository + Repository + Incolla + Proprio ora + {0} minuti fa + {0} ore fa + Ieri + {0} giorni fa + Il mese scorso + {0} mesi fa + L'anno scorso + {0} anni fa + Preferenze + AI + Analizza il Prompt Differenza + Chiave API + Genera Prompt Soggetto + Modello + Nome + Server + ASPETTO + Font Predefinito + Font Size + Dimensione Font Predefinita + Dimensione Font Editor + Font Monospaziato + Usa solo font monospaziato nell'editor + Tema + Sostituzioni Tema + Usa larghezza fissa per i tab nella barra del titolo + Usa cornice finestra nativa + STRUMENTO DI DIFFERENZA/UNIONE + Percorso Installazione + Inserisci il percorso per lo strumento di differenza/unione + Strumento + GENERALE + Controlla aggiornamenti all'avvio + Lingua + Numero massimo di commit nella cronologia + Mostra l'orario dell'autore anziché quello del commit nel grafico + Lunghezza Guida Soggetto + GIT + Abilita Auto CRLF + Cartella predefinita per cloni + Email Utente + Email globale utente Git + Percorso Installazione + Nome Utente + Nome globale utente Git + Versione di Git + Git (>= 2.23.0) è richiesto da questa applicazione + FIRMA GPG + Firma GPG per commit + Firma GPG per tag + Formato GPG + Percorso Programma Installato + Inserisci il percorso per il programma GPG installato + Chiave Firma Utente + Chiave GPG dell'utente per la firma + INTEGRAZIONE + SHELL/TERMINALE + Shell/Terminale + Percorso + Potatura Remota + Destinazione: + Potatura Worktrees + Potatura delle informazioni di worktree in `$GIT_DIR/worktrees` + Pull + Branch: + Recupera tutti i branch + In: + Modifiche Locali: + Scarta + Non fare nulla + Accantona e Riapplica + Recupera senza tag + Remoto: + Pull (Fetch & Merge) + Usa rebase anziché merge + Push + Assicurati che i submoduli siano stati spinti + Forza il push + Branch Locale: + Remoto: + Invia modifiche al remoto + Branch Remoto: + Imposta come branch di tracking + Invia tutti i tag + Invia Tag al Remoto + Invia a tutti i remoti + Remoto: + Tag: + Esci + Rebase Branch Corrente + Accantona & Riapplica modifiche locali + Su: + Rebase: + Aggiorna + Aggiungi Remoto + Modifica Remoto + Nome: + Nome del remoto + URL del Repository: + URL del repository Git remoto + Copia URL + Elimina... + Modifica... + Recupera + Apri nel Browser + Pota + Conferma Rimozione Worktree + Abilita opzione `--force` + Destinazione: + Rinomina Branch + Nuovo Nome: + Nome univoco per questo branch + Branch: + ANNULLA + Recupero automatico delle modifiche dai remoti... + Pulizia (GC & Potatura) + Esegui il comando `git gc` per questo repository. + Cancella tutto + Configura questo repository + CONTINUA + Azioni Personalizzate + Nessuna Azione Personalizzata + Abilita opzione '--reflog' + Apri nel Browser File + Cerca Branch/Tag/Submodule + FILTRATO DA: + BRANCH LOCALI + Vai a HEAD + Abilita opzione '--first-parent' + Crea Branch + Apri in {0} + Apri in Strumenti Esterni + Aggiorna + REMOTI + AGGIUNGI REMOTO + RISOLVI + Cerca Commit + File + Messaggio + SHA + Autore & Committente + Branch Corrente + Mostra Tag come Albero + Statistiche + SUBMODULE + AGGIUNGI SUBMODULE + AGGIORNA SUBMODULE + TAG + NUOVO TAG + Apri nel Terminale + WORKTREE + AGGIUNGI WORKTREE + POTATURA + URL del Repository Git + Reset Branch Corrente alla Revisione + Modalità Reset: + Sposta a: + Branch Corrente: + Mostra nel File Explorer + Revert Commit + Commit: + Commit delle modifiche di revert + Modifica Messaggio di Commit + Usa 'Shift+Enter' per inserire una nuova riga. 'Enter' è il tasto rapido per il pulsante OK + In esecuzione. Attendere... + SALVA + Salva come... + La patch è stata salvata con successo! + Scansiona Repository + Cartella Principale: + Controlla Aggiornamenti... + È disponibile una nuova versione del software: + Errore durante il controllo degli aggiornamenti! + Scarica + Salta questa versione + Aggiornamento Software + Non ci sono aggiornamenti disponibili. + Squash Commit + In: + Chiave Privata SSH: + Percorso per la chiave SSH privata + AVVIA + Accantona + Includi file non tracciati + Mantieni file indicizzati + Messaggio: + Opzionale. Nome di questo accantonamento + Solo modifiche indicizzate + Sia le modifiche indicizzate che quelle non indicizzate dei file selezionati saranno accantonate!!! + Accantona Modifiche Locali + Applica + Elimina + Estrai + Elimina Accantonamento + Elimina: + Accantonamenti + MODIFICHE + ACCANTONAMENTI + Statistiche + COMMIT + COMMITTER + MESE + SETTIMANA + COMMIT: + AUTORI: + PANORAMICA + SUBMODULE + Aggiungi Submodule + Copia Percorso Relativo + Recupera submodule annidati + Apri Repository Submodule + Percorso Relativo: + Cartella relativa per memorizzare questo modulo. + Elimina Submodule + OK + Copia Nome Tag + Copia Messaggio Tag + Elimina ${0}$... + Unisci ${0}$ in ${1}$... + Invia ${0}$... + URL: + Aggiorna Submodule + Tutti i submodule + Inizializza se necessario + Ricorsivamente + Submodule: + Usa opzione --remote + Avviso + Pagina di Benvenuto + Crea Gruppo + Crea Sottogruppo + Clona Repository + Elimina + TRASCINA & RILASCIA CARTELLA SUPPORTATO. RAGGRUPPAMENTI PERSONALIZZATI SUPPORTATI. + Modifica + Sposta in un Altro Gruppo + Apri Tutti i Repository + Apri Repository + Apri Terminale + Riscansiona Repository nella Cartella Clone Predefinita + Cerca Repository... + Ordina + Modifiche + Git Ignore + Ignora tutti i file *{0} + Ignora i file *{0} nella stessa cartella + Ignora i file nella stessa cartella + Ignora solo questo file + Modifica + Puoi indicizzare questo file ora. + COMMIT + COMMIT & PUSH + Template/Storico + Attiva evento click + Indica tutte le modifiche e fai il commit + Commit vuoto rilevato! Vuoi continuare (--allow-empty)? + CONFLITTI RILEVATI + CONFLITTI NEI FILE RISOLTI + INCLUDI FILE NON TRACCIATI + NESSUN MESSAGGIO RECENTE INSERITO + NESSUN TEMPLATE DI COMMIT + INDICIZZATI + RIMUOVI DALL'INDICIZZAZIONE + RIMUOVI TUTTO DALL'INDICIZZAZIONE + NON INDICIZZATI + INDICIZZA + INDICIZZA TUTTO + VISUALIZZA COME NON MODIFICATO + Template: ${0}$ + Clicca con il tasto destro sul file(i) selezionato, quindi scegli come risolvere i conflitti. + WORKSPACE: + Configura Workspaces... + WORKTREE + Copia Percorso + Blocca + Rimuovi + Sblocca + From ba0bb35ca6f6bc16f019505a14be951ffcbd675b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 28 Nov 2024 01:45:10 +0000 Subject: [PATCH 13/35] doc: Update translation status and missing keys --- README.md | 2 +- TRANSLATION.md | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 45d6bbf5..07cdc098 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ ## Translation Status -[![en_US](https://img.shields.io/badge/en__US-100%25-brightgreen)](TRANSLATION.md) [![de__DE](https://img.shields.io/badge/de__DE-99.86%25-yellow)](TRANSLATION.md) [![es__ES](https://img.shields.io/badge/es__ES-98.01%25-yellow)](TRANSLATION.md) [![fr__FR](https://img.shields.io/badge/fr__FR-97.44%25-yellow)](TRANSLATION.md) [![pt__BR](https://img.shields.io/badge/pt__BR-99.29%25-yellow)](TRANSLATION.md) [![ru__RU](https://img.shields.io/badge/ru__RU-100.00%25-brightgreen)](TRANSLATION.md) [![zh__CN](https://img.shields.io/badge/zh__CN-100.00%25-brightgreen)](TRANSLATION.md) [![zh__TW](https://img.shields.io/badge/zh__TW-100.00%25-brightgreen)](TRANSLATION.md) +[![en_US](https://img.shields.io/badge/en__US-100%25-brightgreen)](TRANSLATION.md) [![de__DE](https://img.shields.io/badge/de__DE-99.86%25-yellow)](TRANSLATION.md) [![es__ES](https://img.shields.io/badge/es__ES-98.01%25-yellow)](TRANSLATION.md) [![fr__FR](https://img.shields.io/badge/fr__FR-97.44%25-yellow)](TRANSLATION.md) [![it__IT](https://img.shields.io/badge/it__IT-97.87%25-yellow)](TRANSLATION.md) [![pt__BR](https://img.shields.io/badge/pt__BR-99.29%25-yellow)](TRANSLATION.md) [![ru__RU](https://img.shields.io/badge/ru__RU-100.00%25-brightgreen)](TRANSLATION.md) [![zh__CN](https://img.shields.io/badge/zh__CN-100.00%25-brightgreen)](TRANSLATION.md) [![zh__TW](https://img.shields.io/badge/zh__TW-100.00%25-brightgreen)](TRANSLATION.md) ## How to Use diff --git a/TRANSLATION.md b/TRANSLATION.md index af8f4938..c15fdcfb 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -58,12 +58,27 @@ -### it_IT.axaml: 100.0% +### it_IT.axaml: 97.87%
Missing Keys +- Text.CommitDetail.Info.Children +- Text.Configure.IssueTracker.AddSampleGitLabMergeRequest +- Text.Configure.OpenAI.Preferred +- Text.Configure.OpenAI.Preferred.Tip +- Text.Fetch.Force +- Text.Preference.General.ShowChildren +- Text.Repository.FilterCommits +- Text.Repository.FilterCommits.Default +- Text.Repository.FilterCommits.Exclude +- Text.Repository.FilterCommits.Include +- Text.Repository.HistoriesOrder +- Text.Repository.HistoriesOrder.ByDate +- Text.Repository.HistoriesOrder.Topo +- Text.SHALinkCM.CopySHA +- Text.SHALinkCM.NavigateTo
From 315a226365884eb68b6dc2f1e69e0a754c9cae9a Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 28 Nov 2024 09:48:07 +0800 Subject: [PATCH 14/35] code_review: PR #759 * code indent * update README.md --- README.md | 2 +- src/Models/Locales.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 07cdc098..d83642a5 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ * Supports Windows/macOS/Linux * Opensource/Free * Fast -* Deutsch/English/Español/Français/Português/Русский/简体中文/繁體中文 +* Deutsch/English/Español/Français/Italiano/Português/Русский/简体中文/繁體中文 * Built-in light/dark themes * Customize theme * Visual commit graph diff --git a/src/Models/Locales.cs b/src/Models/Locales.cs index e30977bf..d5e1534c 100644 --- a/src/Models/Locales.cs +++ b/src/Models/Locales.cs @@ -12,7 +12,7 @@ namespace SourceGit.Models new Locale("English", "en_US"), new Locale("Español", "es_ES"), new Locale("Français", "fr_FR"), - new Locale("Italiano", "it_IT"), + new Locale("Italiano", "it_IT"), new Locale("Português (Brasil)", "pt_BR"), new Locale("Русский", "ru_RU"), new Locale("简体中文", "zh_CN"), From ccf03ce2de2921325d49c4ee30d09ab0ed2fe565 Mon Sep 17 00:00:00 2001 From: Efrem Ropelato Date: Thu, 28 Nov 2024 06:57:46 +0100 Subject: [PATCH 15/35] fix ita locale: add ResourceInclude en_US.axaml (#762) * Italian translation * fix ita locale: add ResourceInclude en_US.axaml --- TRANSLATION.md | 2 +- src/Resources/Locales/it_IT.axaml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/TRANSLATION.md b/TRANSLATION.md index c15fdcfb..31ab7efa 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -58,8 +58,8 @@ -### it_IT.axaml: 97.87% +### it_IT.axaml: 97.87%
Missing Keys diff --git a/src/Resources/Locales/it_IT.axaml b/src/Resources/Locales/it_IT.axaml index 432daa08..2e3acf3e 100644 --- a/src/Resources/Locales/it_IT.axaml +++ b/src/Resources/Locales/it_IT.axaml @@ -1,4 +1,7 @@ + + + Informazioni Informazioni su SourceGit • Creato con From 8f4d3fd957872bdcf351dc8ac4f101fb8280c415 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 28 Nov 2024 05:57:58 +0000 Subject: [PATCH 16/35] doc: Update translation status and missing keys --- TRANSLATION.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TRANSLATION.md b/TRANSLATION.md index 31ab7efa..c15fdcfb 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -58,9 +58,9 @@
- ### it_IT.axaml: 97.87% +
Missing Keys From 58eeeab67b1a0a67c6d93711f52cb34db1d61ab2 Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 28 Nov 2024 19:36:07 +0800 Subject: [PATCH 17/35] enhance: set `core.autocrlf` to `false` when run `git diff` to get detail changes of selected file (#761) --- src/Commands/Diff.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Commands/Diff.cs b/src/Commands/Diff.cs index dea15592..da971e58 100644 --- a/src/Commands/Diff.cs +++ b/src/Commands/Diff.cs @@ -28,9 +28,9 @@ namespace SourceGit.Commands Context = repo; if (ignoreWhitespace) - Args = $"diff --no-ext-diff --patch --ignore-cr-at-eol --ignore-all-space --unified={unified} {opt}"; + Args = $"-c core.autocrlf=false diff --no-ext-diff --patch --ignore-cr-at-eol --ignore-all-space --unified={unified} {opt}"; else - Args = $"diff --no-ext-diff --patch --ignore-cr-at-eol --unified={unified} {opt}"; + Args = $"-c core.autocrlf=false diff --no-ext-diff --patch --ignore-cr-at-eol --unified={unified} {opt}"; } public Models.DiffResult Result() From 400aaacf183b15eed98c64d2cfaa562896a34352 Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 28 Nov 2024 21:40:51 +0800 Subject: [PATCH 18/35] fix: wrong column indentation on right side of Interactive Rebase window, for wide commit messages (#764) --- src/Views/InteractiveRebase.axaml | 55 +++++++++++++++++-------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/src/Views/InteractiveRebase.axaml b/src/Views/InteractiveRebase.axaml index c008193b..6679fbb6 100644 --- a/src/Views/InteractiveRebase.axaml +++ b/src/Views/InteractiveRebase.axaml @@ -76,13 +76,16 @@ - + - + @@ -170,8 +173,8 @@ - - - - - - - + + - - - + + + + - + + + - + - - From dfc03d7a8f80b1ca98a4b8ed03845b54577bc462 Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 29 Nov 2024 09:51:50 +0800 Subject: [PATCH 19/35] feature: allows to copy branch/tag name from the context menu of selected commit --- src/ViewModels/Histories.cs | 108 ++++++++++++++++++++++++------------ 1 file changed, 74 insertions(+), 34 deletions(-) diff --git a/src/ViewModels/Histories.cs b/src/ViewModels/Histories.cs index f77fc87b..18ca2e51 100644 --- a/src/ViewModels/Histories.cs +++ b/src/ViewModels/Histories.cs @@ -813,6 +813,8 @@ namespace SourceGit.ViewModels submenu.Icon = App.CreateMenuIcon("Icons.Branch"); submenu.Header = current.Name; + FillBranchVisibilityMenu(submenu, current); + if (!string.IsNullOrEmpty(current.Upstream)) { var upstream = current.Upstream.Substring(13); @@ -852,6 +854,17 @@ namespace SourceGit.ViewModels e.Handled = true; }; submenu.Items.Add(push); + + var rename = new MenuItem(); + rename.Header = new Views.NameHighlightedTextBlock("BranchCM.Rename", current.Name); + rename.Icon = App.CreateMenuIcon("Icons.Rename"); + rename.Click += (_, e) => + { + if (PopupHost.CanCreatePopup()) + PopupHost.ShowPopup(new RenameBranch(_repo, current)); + e.Handled = true; + }; + submenu.Items.Add(rename); submenu.Items.Add(new MenuItem() { Header = "-" }); var detect = Commands.GitFlow.DetectType(_repo.FullPath, _repo.Branches, current.Name); @@ -870,18 +883,15 @@ namespace SourceGit.ViewModels submenu.Items.Add(new MenuItem() { Header = "-" }); } - FillBranchVisibilityMenu(submenu, current); - - var rename = new MenuItem(); - rename.Header = new Views.NameHighlightedTextBlock("BranchCM.Rename", current.Name); - rename.Icon = App.CreateMenuIcon("Icons.Rename"); - rename.Click += (_, e) => + var copy = new MenuItem(); + copy.Header = App.Text("BranchCM.CopyName"); + copy.Icon = App.CreateMenuIcon("Icons.Copy"); + copy.Click += (_, e) => { - if (PopupHost.CanCreatePopup()) - PopupHost.ShowPopup(new RenameBranch(_repo, current)); + App.CopyText(current.Name); e.Handled = true; }; - submenu.Items.Add(rename); + submenu.Items.Add(copy); menu.Items.Add(submenu); } @@ -892,6 +902,8 @@ namespace SourceGit.ViewModels submenu.Icon = App.CreateMenuIcon("Icons.Branch"); submenu.Header = branch.Name; + FillBranchVisibilityMenu(submenu, branch); + var checkout = new MenuItem(); checkout.Header = new Views.NameHighlightedTextBlock("BranchCM.Checkout", branch.Name); checkout.Icon = App.CreateMenuIcon("Icons.Check"); @@ -913,25 +925,6 @@ namespace SourceGit.ViewModels e.Handled = true; }; submenu.Items.Add(merge); - submenu.Items.Add(new MenuItem() { Header = "-" }); - - var detect = Commands.GitFlow.DetectType(_repo.FullPath, _repo.Branches, branch.Name); - if (detect.IsGitFlowBranch) - { - var finish = new MenuItem(); - finish.Header = new Views.NameHighlightedTextBlock("BranchCM.Finish", branch.Name); - finish.Icon = App.CreateMenuIcon("Icons.GitFlow"); - finish.Click += (_, e) => - { - if (PopupHost.CanCreatePopup()) - PopupHost.ShowPopup(new GitFlowFinish(_repo, branch, detect.Type, detect.Prefix)); - e.Handled = true; - }; - submenu.Items.Add(finish); - submenu.Items.Add(new MenuItem() { Header = "-" }); - } - - FillBranchVisibilityMenu(submenu, branch); var rename = new MenuItem(); rename.Header = new Views.NameHighlightedTextBlock("BranchCM.Rename", branch.Name); @@ -954,6 +947,33 @@ namespace SourceGit.ViewModels e.Handled = true; }; submenu.Items.Add(delete); + submenu.Items.Add(new MenuItem() { Header = "-" }); + + var detect = Commands.GitFlow.DetectType(_repo.FullPath, _repo.Branches, branch.Name); + if (detect.IsGitFlowBranch) + { + var finish = new MenuItem(); + finish.Header = new Views.NameHighlightedTextBlock("BranchCM.Finish", branch.Name); + finish.Icon = App.CreateMenuIcon("Icons.GitFlow"); + finish.Click += (_, e) => + { + if (PopupHost.CanCreatePopup()) + PopupHost.ShowPopup(new GitFlowFinish(_repo, branch, detect.Type, detect.Prefix)); + e.Handled = true; + }; + submenu.Items.Add(finish); + submenu.Items.Add(new MenuItem() { Header = "-" }); + } + + var copy = new MenuItem(); + copy.Header = App.Text("BranchCM.CopyName"); + copy.Icon = App.CreateMenuIcon("Icons.Copy"); + copy.Click += (_, e) => + { + App.CopyText(branch.Name); + e.Handled = true; + }; + submenu.Items.Add(copy); menu.Items.Add(submenu); } @@ -966,6 +986,8 @@ namespace SourceGit.ViewModels submenu.Icon = App.CreateMenuIcon("Icons.Branch"); submenu.Header = name; + FillBranchVisibilityMenu(submenu, branch); + var checkout = new MenuItem(); checkout.Header = new Views.NameHighlightedTextBlock("BranchCM.Checkout", name); checkout.Icon = App.CreateMenuIcon("Icons.Check"); @@ -988,9 +1010,6 @@ namespace SourceGit.ViewModels }; submenu.Items.Add(merge); - submenu.Items.Add(new MenuItem() { Header = "-" }); - - FillBranchVisibilityMenu(submenu, branch); var delete = new MenuItem(); delete.Header = new Views.NameHighlightedTextBlock("BranchCM.Delete", name); @@ -1002,6 +1021,17 @@ namespace SourceGit.ViewModels e.Handled = true; }; submenu.Items.Add(delete); + submenu.Items.Add(new MenuItem() { Header = "-" }); + + var copy = new MenuItem(); + copy.Header = App.Text("BranchCM.CopyName"); + copy.Icon = App.CreateMenuIcon("Icons.Copy"); + copy.Click += (_, e) => + { + App.CopyText(name); + e.Handled = true; + }; + submenu.Items.Add(copy); menu.Items.Add(submenu); } @@ -1013,6 +1043,8 @@ namespace SourceGit.ViewModels submenu.Icon = App.CreateMenuIcon("Icons.Tag"); submenu.MinWidth = 200; + FillTagVisibilityMenu(submenu, tag); + var push = new MenuItem(); push.Header = new Views.NameHighlightedTextBlock("TagCM.Push", tag.Name); push.Icon = App.CreateMenuIcon("Icons.Push"); @@ -1036,9 +1068,6 @@ namespace SourceGit.ViewModels e.Handled = true; }; submenu.Items.Add(merge); - submenu.Items.Add(new MenuItem() { Header = "-" }); - - FillTagVisibilityMenu(submenu, tag); var delete = new MenuItem(); delete.Header = new Views.NameHighlightedTextBlock("TagCM.Delete", tag.Name); @@ -1050,6 +1079,17 @@ namespace SourceGit.ViewModels e.Handled = true; }; submenu.Items.Add(delete); + submenu.Items.Add(new MenuItem() { Header = "-" }); + + var copy = new MenuItem(); + copy.Header = App.Text("TagCM.Copy"); + copy.Icon = App.CreateMenuIcon("Icons.Copy"); + copy.Click += (_, e) => + { + App.CopyText(tag.Name); + e.Handled = true; + }; + submenu.Items.Add(copy); menu.Items.Add(submenu); } From db8ee3410bf19f6d81f6f0871bd6635efd8d1c7d Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 29 Nov 2024 09:59:07 +0800 Subject: [PATCH 20/35] refactor: users should change the `SystemAccentColor` from system-wide settings --- src/App.axaml.cs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/App.axaml.cs b/src/App.axaml.cs index 0615724a..a4e5bd5b 100644 --- a/src/App.axaml.cs +++ b/src/App.axaml.cs @@ -164,12 +164,7 @@ namespace SourceGit var resDic = new ResourceDictionary(); var overrides = JsonSerializer.Deserialize(File.ReadAllText(themeOverridesFile), JsonCodeGen.Default.ThemeOverrides); foreach (var kv in overrides.BasicColors) - { - if (kv.Key.Equals("SystemAccentColor", StringComparison.Ordinal)) - resDic["SystemAccentColor"] = kv.Value; - else - resDic[$"Color.{kv.Key}"] = kv.Value; - } + resDic[$"Color.{kv.Key}"] = kv.Value; if (overrides.GraphColors.Count > 0) Models.CommitGraph.SetPens(overrides.GraphColors, overrides.GraphPenThickness); From 4aad6a7f8610db2e3b57449f44e316e4c177b0e8 Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 29 Nov 2024 10:26:36 +0800 Subject: [PATCH 21/35] fix: `System.ArgumentException` when hover the commit link multiple times before the first time tooltip shows (#765) --- src/ViewModels/CherryPick.cs | 1 - src/Views/CommitMessagePresenter.cs | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ViewModels/CherryPick.cs b/src/ViewModels/CherryPick.cs index ea601d5a..19dac059 100644 --- a/src/ViewModels/CherryPick.cs +++ b/src/ViewModels/CherryPick.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Text; using System.Threading.Tasks; namespace SourceGit.ViewModels diff --git a/src/Views/CommitMessagePresenter.cs b/src/Views/CommitMessagePresenter.cs index 7ca823dc..a767b395 100644 --- a/src/Views/CommitMessagePresenter.cs +++ b/src/Views/CommitMessagePresenter.cs @@ -296,7 +296,8 @@ namespace SourceGit.Views if (currentParent is { DataContext: ViewModels.CommitDetail currentDetail } && currentDetail.Commit.SHA == lastDetailCommit) { - _inlineCommits.Add(sha, c); + if (!_inlineCommits.ContainsKey(sha)) + _inlineCommits.Add(sha, c); // Make sure user still hovers the target SHA. if (_lastHover == link && c != null) From 4cb9dbfd143ec4fbcb3102b5f3d18fb2e77252dc Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 29 Nov 2024 10:35:23 +0800 Subject: [PATCH 22/35] code_style: remove unused namespace using --- .editorconfig | 3 +++ src/Commands/QueryLocalChanges.cs | 3 +-- src/ViewModels/RepositoryConfigure.cs | 3 +-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.editorconfig b/.editorconfig index 83b15884..22c741b9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -206,6 +206,9 @@ dotnet_diagnostic.CA1854.severity = warning #CA2211:Non-constant fields should not be visible dotnet_diagnostic.CA2211.severity = error +# IDE0005: remove used namespace using +dotnet_diagnostic.IDE0005.severity = error + # Wrapping preferences csharp_wrap_before_ternary_opsigns = false diff --git a/src/Commands/QueryLocalChanges.cs b/src/Commands/QueryLocalChanges.cs index bdef9bf8..ea422215 100644 --- a/src/Commands/QueryLocalChanges.cs +++ b/src/Commands/QueryLocalChanges.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Text.RegularExpressions; namespace SourceGit.Commands diff --git a/src/ViewModels/RepositoryConfigure.cs b/src/ViewModels/RepositoryConfigure.cs index 620db074..95fb5517 100644 --- a/src/ViewModels/RepositoryConfigure.cs +++ b/src/ViewModels/RepositoryConfigure.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using Avalonia.Collections; using CommunityToolkit.Mvvm.ComponentModel; From f028513d499273d2dfd67a8897300cb776d1cf35 Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 29 Nov 2024 11:46:27 +0800 Subject: [PATCH 23/35] doc: update tips for manually build --- build/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/README.md b/build/README.md index a75f4d73..b4358a55 100644 --- a/build/README.md +++ b/build/README.md @@ -5,7 +5,7 @@ ## How to build this project manually -1. Make sure [.NET SDK 8](https://dotnet.microsoft.com/en-us/download) is installed on your machine. +1. Make sure [.NET SDK 9](https://dotnet.microsoft.com/en-us/download) is installed on your machine. 2. Clone this project 3. Run the follow command under the project root dir ```sh From e65ac18afc55f69741e6bd3788f5c485c89e7a56 Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 29 Nov 2024 19:00:53 +0800 Subject: [PATCH 24/35] fix: wrong column indentation on right side of Interactive Rebase window, for wide commit messages (#764) --- src/Views/InteractiveRebase.axaml | 51 ++++++++++++++++--------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/src/Views/InteractiveRebase.axaml b/src/Views/InteractiveRebase.axaml index 6679fbb6..846be5f2 100644 --- a/src/Views/InteractiveRebase.axaml +++ b/src/Views/InteractiveRebase.axaml @@ -65,6 +65,7 @@ + @@ -76,7 +77,7 @@ - + - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - From 938876e92478b07c64638254faef2b5a0393cc2d Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 29 Nov 2024 19:12:27 +0800 Subject: [PATCH 25/35] fix: wrong column indentation on right side of Interactive Rebase window, for wide commit messages (#764) --- src/Views/InteractiveRebase.axaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Views/InteractiveRebase.axaml b/src/Views/InteractiveRebase.axaml index 846be5f2..f02f15ae 100644 --- a/src/Views/InteractiveRebase.axaml +++ b/src/Views/InteractiveRebase.axaml @@ -212,7 +212,9 @@ - + + +