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;