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/README.md b/README.md
index 45d6bbf5..66bdf3c5 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
@@ -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-100.00%25-brightgreen)](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 03b26e1b..ec3fa80c 100644
--- a/TRANSLATION.md
+++ b/TRANSLATION.md
@@ -1,10 +1,10 @@
-### de_DE.axaml: 99.86%
+### de_DE.axaml: 100.00%
Missing Keys
-- Text.Repository.FilterCommits
+
@@ -58,6 +58,30 @@
+### 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
+
+
+
### pt_BR.axaml: 99.29%
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
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/App.axaml.cs b/src/App.axaml.cs
index 8582dbce..8f1a24b5 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);
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()
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/Models/Locales.cs b/src/Models/Locales.cs
index 9d24f491..d5e1534c 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/de_DE.axaml b/src/Resources/Locales/de_DE.axaml
index 4714a652..bb31fa8f 100644
--- a/src/Resources/Locales/de_DE.axaml
+++ b/src/Resources/Locales/de_DE.axaml
@@ -546,6 +546,7 @@
Aktiviere '--reflog' Option
Öffne im Datei-Browser
Suche Branches/Tags/Submodule
+ Sichtbarkeit im Graphen
Aufheben
Im Graph ausblenden
Im Graph filtern
diff --git a/src/Resources/Locales/it_IT.axaml b/src/Resources/Locales/it_IT.axaml
new file mode 100644
index 00000000..2e3acf3e
--- /dev/null
+++ b/src/Resources/Locales/it_IT.axaml
@@ -0,0 +1,699 @@
+
+
+
+
+ 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
+
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/ViewModels/Histories.cs b/src/ViewModels/Histories.cs
index a92fc791..fc54c5ad 100644
--- a/src/ViewModels/Histories.cs
+++ b/src/ViewModels/Histories.cs
@@ -795,6 +795,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);
@@ -834,6 +836,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);
@@ -852,18 +865,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);
}
@@ -874,6 +884,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");
@@ -895,25 +907,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);
@@ -936,6 +929,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);
}
@@ -948,6 +968,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");
@@ -970,9 +992,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);
@@ -984,6 +1003,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);
}
@@ -995,6 +1025,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");
@@ -1018,9 +1050,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);
@@ -1032,6 +1061,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);
}
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;
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)
diff --git a/src/Views/InteractiveRebase.axaml b/src/Views/InteractiveRebase.axaml
index c008193b..3249cd6b 100644
--- a/src/Views/InteractiveRebase.axaml
+++ b/src/Views/InteractiveRebase.axaml
@@ -65,6 +65,7 @@
+
@@ -76,13 +77,16 @@
-
+
-
+
@@ -170,8 +174,8 @@
-
-
+
+
-
-
+
+
+
-
-
-
-
-
-
-
+
+
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Views/RepositoryToolbar.axaml.cs b/src/Views/RepositoryToolbar.axaml.cs
index 1d9d634b..5279382b 100644
--- a/src/Views/RepositoryToolbar.axaml.cs
+++ b/src/Views/RepositoryToolbar.axaml.cs
@@ -50,9 +50,6 @@ namespace SourceGit.Views
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.Fetch(startDirectly);
e.Handled = true;
@@ -65,9 +62,6 @@ namespace SourceGit.Views
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.Pull(startDirectly);
e.Handled = true;
@@ -80,9 +74,6 @@ namespace SourceGit.Views
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.Push(startDirectly);
e.Handled = true;
@@ -95,9 +86,6 @@ namespace SourceGit.Views
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;