Skip to content

Commit f3d99d6

Browse files
committed
Merge branch 'release/v2025.12'
2 parents 1138ba3 + b65c697 commit f3d99d6

22 files changed

+977
-154
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
* Supports Windows/macOS/Linux
1212
* Opensource/Free
1313
* Fast
14-
* Deutsch/English/Español/Français/Italiano/Português/Русский/简体中文/繁體中文
14+
* Deutsch/English/Español/Français/Italiano/Português/Русский/简体中文/繁體中文/日本語
1515
* Built-in light/dark themes
1616
* Customize theme
1717
* Visual commit graph

TRANSLATION.md

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,31 +24,27 @@ This document shows the translation status of each locale file in the repository
2424

2525
</details>
2626

27-
### ![es__ES](https://img.shields.io/badge/es__ES-99.87%25-yellow)
27+
### ![es__ES](https://img.shields.io/badge/es__ES-%E2%88%9A-brightgreen)
2828

29-
<details>
30-
<summary>Missing keys in es_ES.axaml</summary>
31-
32-
- Text.CopyFullPath
29+
### ![fr__FR](https://img.shields.io/badge/fr__FR-%E2%88%9A-brightgreen)
3330

34-
</details>
35-
36-
### ![fr__FR](https://img.shields.io/badge/fr__FR-99.87%25-yellow)
31+
### ![it__IT](https://img.shields.io/badge/it__IT-99.73%25-yellow)
3732

3833
<details>
39-
<summary>Missing keys in fr_FR.axaml</summary>
34+
<summary>Missing keys in it_IT.axaml</summary>
4035

4136
- Text.CopyFullPath
37+
- Text.Preferences.General.ShowTagsInGraph
4238

4339
</details>
4440

45-
### ![it__IT](https://img.shields.io/badge/it__IT-99.73%25-yellow)
41+
### ![ja__JP](https://img.shields.io/badge/ja__JP-99.73%25-yellow)
4642

4743
<details>
48-
<summary>Missing keys in it_IT.axaml</summary>
44+
<summary>Missing keys in ja_JP.axaml</summary>
4945

50-
- Text.CopyFullPath
51-
- Text.Preferences.General.ShowTagsInGraph
46+
- Text.Repository.FilterCommits
47+
- Text.Repository.Tags.OrderByNameDes
5248

5349
</details>
5450

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2025.11
1+
2025.12

src/App.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
<ResourceInclude x:Key="zh_CN" Source="/Resources/Locales/zh_CN.axaml"/>
2121
<ResourceInclude x:Key="zh_TW" Source="/Resources/Locales/zh_TW.axaml"/>
2222
<ResourceInclude x:Key="es_ES" Source="/Resources/Locales/es_ES.axaml"/>
23+
<ResourceInclude x:Key="ja_JP" Source="/Resources/Locales/ja_JP.axaml"/>
2324
</ResourceDictionary>
2425
</Application.Resources>
2526

src/Commands/CompareRevisions.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ namespace SourceGit.Commands
66
{
77
public partial class CompareRevisions : Command
88
{
9-
[GeneratedRegex(@"^([MADRC])\s+(.+)$")]
9+
[GeneratedRegex(@"^([MADC])\s+(.+)$")]
1010
private static partial Regex REG_FORMAT();
11+
[GeneratedRegex(@"^R[0-9]{0,4}\s+(.+)$")]
12+
private static partial Regex REG_RENAME_FORMAT();
1113

1214
public CompareRevisions(string repo, string start, string end)
1315
{
@@ -38,7 +40,17 @@ protected override void OnReadline(string line)
3840
{
3941
var match = REG_FORMAT().Match(line);
4042
if (!match.Success)
43+
{
44+
match = REG_RENAME_FORMAT().Match(line);
45+
if (match.Success)
46+
{
47+
var renamed = new Models.Change() { Path = match.Groups[1].Value };
48+
renamed.Set(Models.ChangeState.Renamed);
49+
_changes.Add(renamed);
50+
}
51+
4152
return;
53+
}
4254

4355
var change = new Models.Change() { Path = match.Groups[2].Value };
4456
var status = match.Groups[1].Value;
@@ -57,10 +69,6 @@ protected override void OnReadline(string line)
5769
change.Set(Models.ChangeState.Deleted);
5870
_changes.Add(change);
5971
break;
60-
case 'R':
61-
change.Set(Models.ChangeState.Renamed);
62-
_changes.Add(change);
63-
break;
6472
case 'C':
6573
change.Set(Models.ChangeState.Copied);
6674
_changes.Add(change);

src/Commands/QueryStashChanges.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ namespace SourceGit.Commands
99
/// </summary>
1010
public partial class QueryStashChanges : Command
1111
{
12-
[GeneratedRegex(@"^([MADRC])\s+(.+)$")]
12+
[GeneratedRegex(@"^([MADC])\s+(.+)$")]
1313
private static partial Regex REG_FORMAT();
14+
[GeneratedRegex(@"^R[0-9]{0,4}\s+(.+)$")]
15+
private static partial Regex REG_RENAME_FORMAT();
1416

1517
public QueryStashChanges(string repo, string stash)
1618
{
@@ -31,7 +33,17 @@ public QueryStashChanges(string repo, string stash)
3133
{
3234
var match = REG_FORMAT().Match(line);
3335
if (!match.Success)
36+
{
37+
match = REG_RENAME_FORMAT().Match(line);
38+
if (match.Success)
39+
{
40+
var renamed = new Models.Change() { Path = match.Groups[1].Value };
41+
renamed.Set(Models.ChangeState.Renamed);
42+
outs.Add(renamed);
43+
}
44+
3445
continue;
46+
}
3547

3648
var change = new Models.Change() { Path = match.Groups[2].Value };
3749
var status = match.Groups[1].Value;
@@ -50,10 +62,6 @@ public QueryStashChanges(string repo, string stash)
5062
change.Set(Models.ChangeState.Deleted);
5163
outs.Add(change);
5264
break;
53-
case 'R':
54-
change.Set(Models.ChangeState.Renamed);
55-
outs.Add(change);
56-
break;
5765
case 'C':
5866
change.Set(Models.ChangeState.Copied);
5967
outs.Add(change);

src/Models/DateTimeFormat.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,17 @@ public static DateTimeFormat Actived
3232

3333
public static readonly List<DateTimeFormat> Supported = new List<DateTimeFormat>
3434
{
35-
new DateTimeFormat("yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss"),
36-
new DateTimeFormat("yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss"),
37-
new DateTimeFormat("yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss"),
38-
new DateTimeFormat("MM/dd/yyyy", "MM/dd/yyyy HH:mm:ss"),
39-
new DateTimeFormat("MM.dd.yyyy", "MM.dd.yyyy HH:mm:ss"),
40-
new DateTimeFormat("MM-dd-yyyy", "MM-dd-yyyy HH:mm:ss"),
41-
new DateTimeFormat("dd/MM/yyyy", "dd/MM/yyyy HH:mm:ss"),
42-
new DateTimeFormat("dd.MM.yyyy", "dd.MM.yyyy HH:mm:ss"),
43-
new DateTimeFormat("dd-MM-yyyy", "dd-MM-yyyy HH:mm:ss"),
44-
new DateTimeFormat("MMM d yyyy", "MMM d yyyy HH:mm:ss"),
45-
new DateTimeFormat("d MMM yyyy", "d MMM yyyy HH:mm:ss"),
35+
new DateTimeFormat("yyyy/MM/dd", "yyyy/MM/dd, HH:mm:ss"),
36+
new DateTimeFormat("yyyy.MM.dd", "yyyy.MM.dd, HH:mm:ss"),
37+
new DateTimeFormat("yyyy-MM-dd", "yyyy-MM-dd, HH:mm:ss"),
38+
new DateTimeFormat("MM/dd/yyyy", "MM/dd/yyyy, HH:mm:ss"),
39+
new DateTimeFormat("MM.dd.yyyy", "MM.dd.yyyy, HH:mm:ss"),
40+
new DateTimeFormat("MM-dd-yyyy", "MM-dd-yyyy, HH:mm:ss"),
41+
new DateTimeFormat("dd/MM/yyyy", "dd/MM/yyyy, HH:mm:ss"),
42+
new DateTimeFormat("dd.MM.yyyy", "dd.MM.yyyy, HH:mm:ss"),
43+
new DateTimeFormat("dd-MM-yyyy", "dd-MM-yyyy, HH:mm:ss"),
44+
new DateTimeFormat("MMM d yyyy", "MMM d yyyy, HH:mm:ss"),
45+
new DateTimeFormat("d MMM yyyy", "d MMM yyyy, HH:mm:ss"),
4646
};
4747

4848
private static readonly DateTime _example = new DateTime(2025, 1, 31, 8, 0, 0, DateTimeKind.Local);

src/Models/Locales.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class Locale
1717
new Locale("Русский", "ru_RU"),
1818
new Locale("简体中文", "zh_CN"),
1919
new Locale("繁體中文", "zh_TW"),
20+
new Locale("日本語", "ja_JP"),
2021
};
2122

2223
public Locale(string name, string key)

src/Resources/Locales/en_US.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,7 @@
719719
<x:String x:Key="Text.WorkingCopy.CommitTip" xml:space="preserve">Trigger click event</x:String>
720720
<x:String x:Key="Text.WorkingCopy.CommitToEdit" xml:space="preserve">Commit (Edit)</x:String>
721721
<x:String x:Key="Text.WorkingCopy.CommitWithAutoStage" xml:space="preserve">Stage all changes and commit</x:String>
722+
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithFilter">You have staged {0} file(s) but only {1} file(s) displayed ({2} files are filtered out). Do you want to continue?</x:String>
722723
<x:String x:Key="Text.WorkingCopy.ConfirmCommitWithoutFiles" xml:space="preserve">Empty commit detected! Do you want to continue (--allow-empty)?</x:String>
723724
<x:String x:Key="Text.WorkingCopy.Conflicts" xml:space="preserve">CONFLICTS DETECTED</x:String>
724725
<x:String x:Key="Text.WorkingCopy.Conflicts.Resolved" xml:space="preserve">FILE CONFLICTS ARE RESOLVED</x:String>

src/Resources/Locales/es_ES.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@
189189
<x:String x:Key="Text.Copy" xml:space="preserve">Copiar</x:String>
190190
<x:String x:Key="Text.CopyAllText" xml:space="preserve">Copiar Todo el Texto</x:String>
191191
<x:String x:Key="Text.CopyPath" xml:space="preserve">Copiar Ruta</x:String>
192+
<x:String x:Key="Text.CopyFullPath" xml:space="preserve">Copiar Ruta Completa</x:String>
192193
<x:String x:Key="Text.CreateBranch" xml:space="preserve">Crear Rama...</x:String>
193194
<x:String x:Key="Text.CreateBranch.BasedOn" xml:space="preserve">Basado En:</x:String>
194195
<x:String x:Key="Text.CreateBranch.Checkout" xml:space="preserve">Checkout de la rama creada</x:String>

src/Resources/Locales/fr_FR.axaml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,19 @@
1616
<x:String x:Key="Text.AddWorktree.Tracking" xml:space="preserve">Suivre la branche :</x:String>
1717
<x:String x:Key="Text.AddWorktree.Tracking.Toggle" xml:space="preserve">Suivi de la branche distante</x:String>
1818
<x:String x:Key="Text.AIAssistant" xml:space="preserve">Assistant IA</x:String>
19+
<x:String x:Key="Text.AIAssistant.Regen" xml:space="preserve">RE-GÉNERER</x:String>
1920
<x:String x:Key="Text.AIAssistant.Tip" xml:space="preserve">Utiliser l'IA pour générer un message de commit</x:String>
21+
<x:String x:Key="Text.AIAssistant.Use" xml:space="preserve">APPLIQUER COMME MESSAGE DE COMMIT</x:String>
2022
<x:String x:Key="Text.Apply" xml:space="preserve">Appliquer</x:String>
2123
<x:String x:Key="Text.Apply.File" xml:space="preserve">Fichier de patch :</x:String>
2224
<x:String x:Key="Text.Apply.File.Placeholder" xml:space="preserve">Selectionner le fichier .patch à appliquer</x:String>
2325
<x:String x:Key="Text.Apply.IgnoreWS" xml:space="preserve">Ignorer les changements d'espaces blancs</x:String>
2426
<x:String x:Key="Text.Apply.Title" xml:space="preserve">Appliquer le patch</x:String>
2527
<x:String x:Key="Text.Apply.WS" xml:space="preserve">Espaces blancs :</x:String>
28+
<x:String x:Key="Text.ApplyStash" xml:space="preserve">Appliquer le Stash</x:String>
29+
<x:String x:Key="Text.ApplyStash.DropAfterApply" xml:space="preserve">Supprimer après application</x:String>
30+
<x:String x:Key="Text.ApplyStash.RestoreIndex" xml:space="preserve">Rétablir les changements de l'index</x:String>
31+
<x:String x:Key="Text.ApplyStash.Stash" xml:space="preserve">Stash:</x:String>
2632
<x:String x:Key="Text.Archive" xml:space="preserve">Archiver...</x:String>
2733
<x:String x:Key="Text.Archive.File" xml:space="preserve">Enregistrer l'archive sous :</x:String>
2834
<x:String x:Key="Text.Archive.File.Placeholder" xml:space="preserve">Sélectionnez le chemin du fichier d'archive</x:String>
@@ -39,6 +45,7 @@
3945
<x:String x:Key="Text.BranchCM.CompareWithHead" xml:space="preserve">Comparer avec HEAD</x:String>
4046
<x:String x:Key="Text.BranchCM.CompareWithWorktree" xml:space="preserve">Comparer avec le worktree</x:String>
4147
<x:String x:Key="Text.BranchCM.CopyName" xml:space="preserve">Copier le nom de la branche</x:String>
48+
<x:String x:Key="Text.BranchCM.CustomAction" xml:space="preserve">Action personnalisée</x:String>
4249
<x:String x:Key="Text.BranchCM.Delete" xml:space="preserve">Supprimer ${0}$...</x:String>
4350
<x:String x:Key="Text.BranchCM.DeleteMultiBranches" xml:space="preserve">Supprimer {0} branches sélectionnées</x:String>
4451
<x:String x:Key="Text.BranchCM.DiscardAll" xml:space="preserve">Rejeter tous les changements</x:String>
@@ -54,6 +61,7 @@
5461
<x:String x:Key="Text.BranchCM.Rename" xml:space="preserve">Renommer ${0}$...</x:String>
5562
<x:String x:Key="Text.BranchCM.Tracking" xml:space="preserve">Définir la branche de suivi...</x:String>
5663
<x:String x:Key="Text.BranchCompare" xml:space="preserve">Comparer les branches</x:String>
64+
<x:String x:Key="Text.BranchUpstreamInvalid" xml:space="preserve">Branche amont invalide !</x:String>
5765
<x:String x:Key="Text.Bytes" xml:space="preserve">Octets</x:String>
5866
<x:String x:Key="Text.Cancel" xml:space="preserve">ANNULER</x:String>
5967
<x:String x:Key="Text.ChangeCM.CheckoutFirstParentRevision" xml:space="preserve">Réinitialiser à la révision parente</x:String>
@@ -92,6 +100,7 @@
92100
<x:String x:Key="Text.CommitCM.Checkout" xml:space="preserve">Récupérer ce commit</x:String>
93101
<x:String x:Key="Text.CommitCM.CherryPick" xml:space="preserve">Cherry-Pick ce commit</x:String>
94102
<x:String x:Key="Text.CommitCM.CherryPickMultiple" xml:space="preserve">Cherry-Pick ...</x:String>
103+
<x:String x:Key="Text.CommitCM.Checkout" xml:space="preserve">Checkout Commit</x:String>
95104
<x:String x:Key="Text.CommitCM.CompareWithHead" xml:space="preserve">Comparer avec HEAD</x:String>
96105
<x:String x:Key="Text.CommitCM.CompareWithWorktree" xml:space="preserve">Comparer avec le worktree</x:String>
97106
<x:String x:Key="Text.CommitCM.CopyInfo" xml:space="preserve">Copier les informations</x:String>
@@ -150,10 +159,10 @@
150159
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteeIssue" xml:space="preserve">Ajouter une règle d'exemple Gitee</x:String>
151160
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGiteePullRequest" xml:space="preserve">Ajouter une règle d'exemple pour Pull Request Gitee</x:String>
152161
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGithub" xml:space="preserve">Ajouter une règle d'exemple Github</x:String>
153-
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">Ajouter une règle d'exemple Jira</x:String>
154-
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">Ajouter une règle d'exemple Azure DevOps</x:String>
155162
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGitLabIssue" xml:space="preserve">Ajouter une règle d'exemple pour Incidents GitLab</x:String>
156163
<x:String x:Key="Text.Configure.IssueTracker.AddSampleGitLabMergeRequest" xml:space="preserve">Ajouter une règle d'exemple pour Merge Request GitLab</x:String>
164+
<x:String x:Key="Text.Configure.IssueTracker.AddSampleJira" xml:space="preserve">Ajouter une règle d'exemple Jira</x:String>
165+
<x:String x:Key="Text.Configure.IssueTracker.AddSampleAzure" xml:space="preserve">Ajouter une règle d'exemple Azure DevOps</x:String>
157166
<x:String x:Key="Text.Configure.IssueTracker.NewRule" xml:space="preserve">Nouvelle règle</x:String>
158167
<x:String x:Key="Text.Configure.IssueTracker.Regex" xml:space="preserve">Issue Regex Expression:</x:String>
159168
<x:String x:Key="Text.Configure.IssueTracker.RuleName" xml:space="preserve">Nom de règle :</x:String>
@@ -179,6 +188,7 @@
179188
<x:String x:Key="Text.Copy" xml:space="preserve">Copier</x:String>
180189
<x:String x:Key="Text.CopyAllText" xml:space="preserve">Copier tout le texte</x:String>
181190
<x:String x:Key="Text.CopyPath" xml:space="preserve">Copier le chemin</x:String>
191+
<x:String x:Key="Text.CopyFullPath" xml:space="preserve">Copier le chemin complet</x:String>
182192
<x:String x:Key="Text.CreateBranch" xml:space="preserve">Créer une branche...</x:String>
183193
<x:String x:Key="Text.CreateBranch.BasedOn" xml:space="preserve">Basé sur :</x:String>
184194
<x:String x:Key="Text.CreateBranch.Checkout" xml:space="preserve">Récupérer la branche créée</x:String>
@@ -187,6 +197,7 @@
187197
<x:String x:Key="Text.CreateBranch.LocalChanges.StashAndReply" xml:space="preserve">Stash &amp; Réappliquer</x:String>
188198
<x:String x:Key="Text.CreateBranch.Name" xml:space="preserve">Nom de la nouvelle branche :</x:String>
189199
<x:String x:Key="Text.CreateBranch.Name.Placeholder" xml:space="preserve">Entrez le nom de la branche.</x:String>
200+
<x:String x:Key="Text.CreateBranch.Name.WarnSpace" xml:space="preserve">Les espaces seront remplacés par des tirets.</x:String>
190201
<x:String x:Key="Text.CreateBranch.Title" xml:space="preserve">Créer une branche locale</x:String>
191202
<x:String x:Key="Text.CreateTag" xml:space="preserve">Créer un tag...</x:String>
192203
<x:String x:Key="Text.CreateTag.BasedOn" xml:space="preserve">Nouveau tag à :</x:String>
@@ -583,13 +594,20 @@
583594
<x:String x:Key="Text.SelfUpdate.IgnoreThisVersion" xml:space="preserve">Passer cette version</x:String>
584595
<x:String x:Key="Text.SelfUpdate.Title" xml:space="preserve">Mise à jour du logiciel</x:String>
585596
<x:String x:Key="Text.SelfUpdate.UpToDate" xml:space="preserve">Il n'y a pas de mise à jour pour le moment.</x:String>
597+
<x:String x:Key="Text.SetUpstream" xml:space="preserve">Définir la branche de suivi</x:String>
598+
<x:String x:Key="Text.SetUpstream.Local" xml:space="preserve">Branche :</x:String>
599+
<x:String x:Key="Text.SetUpstream.Unset" xml:space="preserve">Escamoter la branche amont</x:String>
600+
<x:String x:Key="Text.SetUpstream.Upstream" xml:space="preserve">Branche amont:</x:String>
586601
<x:String x:Key="Text.SHALinkCM.CopySHA" xml:space="preserve">Copier le SHA</x:String>
587-
<x:String x:Key="Text.Squash" xml:space="preserve">Squash Commits</x:String>
602+
<x:String x:Key="Text.SHALinkCM.NavigateTo" xml:space="preserve">Aller à</x:String>
603+
<x:String x:Key="Text.Squash" xml:space="preserve">Squash les commits</x:String>
588604
<x:String x:Key="Text.Squash.Into" xml:space="preserve">Dans :</x:String>
589605
<x:String x:Key="Text.SSHKey" xml:space="preserve">Clé privée SSH :</x:String>
590606
<x:String x:Key="Text.SSHKey.Placeholder" xml:space="preserve">Chemin du magasin de clés privées SSH</x:String>
591607
<x:String x:Key="Text.Start" xml:space="preserve">START</x:String>
592608
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
609+
<x:String x:Key="Text.Stash.AutoRestore" xml:space="preserve">Auto-restauration après le stash</x:String>
610+
<x:String x:Key="Text.Stash.AutoRestore.Tip" xml:space="preserve">Vos fichiers de travail sont inchangés, mais un stash a été sauvegardé.</x:String>
593611
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Inclure les fichiers non-suivis</x:String>
594612
<x:String x:Key="Text.Stash.KeepIndex" xml:space="preserve">Garder les fichiers indexés</x:String>
595613
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Message :</x:String>
@@ -599,6 +617,7 @@
599617
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Stash les changements locaux</x:String>
600618
<x:String x:Key="Text.StashCM.Apply" xml:space="preserve">Appliquer</x:String>
601619
<x:String x:Key="Text.StashCM.Drop" xml:space="preserve">Effacer</x:String>
620+
<x:String x:Key="Text.StashCM.SaveAsPatch" xml:space="preserve">Sauver comme Patch...</x:String>
602621
<x:String x:Key="Text.StashDropConfirm" xml:space="preserve">Effacer le Stash</x:String>
603622
<x:String x:Key="Text.StashDropConfirm.Label" xml:space="preserve">Effacer :</x:String>
604623
<x:String x:Key="Text.Stashes" xml:space="preserve">Stashes</x:String>

0 commit comments

Comments
 (0)