Skip to content

Commit 6d682ac

Browse files
committed
refactor: stash (#1420) (#1426)
- supports to use multi-line as stash message - new style to display stashes Signed-off-by: leo <[email protected]>
1 parent b06a4cb commit 6d682ac

19 files changed

+219
-54
lines changed

src/Commands/QueryStashes.cs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ public class QueryStashes : Command
77
{
88
public QueryStashes(string repo)
99
{
10+
_boundary = $"-----BOUNDARY_OF_COMMIT{Guid.NewGuid()}-----";
11+
1012
WorkingDirectory = repo;
1113
Context = repo;
12-
Args = "stash list --format=%H%n%P%n%ct%n%gd%n%s";
14+
Args = $"stash list --no-show-signature --format=\"%H%n%P%n%ct%n%gd%n%B%n{_boundary}\"";
1315
}
1416

1517
public List<Models.Stash> Result()
@@ -41,22 +43,32 @@ public QueryStashes(string repo)
4143
case 3:
4244
_current.Name = line;
4345
break;
44-
case 4:
45-
_current.Message = line;
46+
default:
47+
var boundary = rs.StdOut.IndexOf(_boundary, end + 1, StringComparison.Ordinal);
48+
if (boundary > end)
49+
{
50+
_current.Message = rs.StdOut.Substring(start, boundary - start - 1);
51+
end = boundary + _boundary.Length;
52+
}
53+
else
54+
{
55+
_current.Message = rs.StdOut.Substring(start);
56+
end = rs.StdOut.Length - 2;
57+
}
58+
59+
nextPartIdx = -1;
4660
break;
4761
}
4862

4963
nextPartIdx++;
50-
if (nextPartIdx > 4)
51-
nextPartIdx = 0;
5264

5365
start = end + 1;
66+
if (start >= rs.StdOut.Length - 1)
67+
break;
68+
5469
end = rs.StdOut.IndexOf('\n', start);
5570
}
5671

57-
if (start < rs.StdOut.Length)
58-
_current.Message = rs.StdOut.Substring(start);
59-
6072
return outs;
6173
}
6274

@@ -69,5 +81,6 @@ private void ParseParent(string data)
6981
}
7082

7183
private Models.Stash _current = null;
84+
private readonly string _boundary;
7285
}
7386
}

src/Resources/Locales/de_DE.axaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,7 @@
461461
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">Vor {0} Monaten</x:String>
462462
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">Vor {0} Jahren</x:String>
463463
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">Gestern</x:String>
464+
<x:String x:Key="Text.PopupEnterKeyTip" xml:space="preserve">Verwende 'Shift+Enter' um eine neue Zeile einzufügen. 'Enter' ist das Kürzel für den OK Button</x:String>
464465
<x:String x:Key="Text.Preferences" xml:space="preserve">Einstellungen</x:String>
465466
<x:String x:Key="Text.Preferences.AI" xml:space="preserve">OPEN AI</x:String>
466467
<x:String x:Key="Text.Preferences.AI.AnalyzeDiffPrompt" xml:space="preserve">Analysierung des Diff Befehl</x:String>
@@ -643,7 +644,6 @@
643644
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">Commit:</x:String>
644645
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">Commit Änderungen rückgängig machen</x:String>
645646
<x:String x:Key="Text.Reword" xml:space="preserve">Commit Nachricht umformulieren</x:String>
646-
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">Verwende 'Shift+Enter' um eine neue Zeile einzufügen. 'Enter' ist das Kürzel für den OK Button</x:String>
647647
<x:String x:Key="Text.Running" xml:space="preserve">Bitte warten...</x:String>
648648
<x:String x:Key="Text.Save" xml:space="preserve">SPEICHERN</x:String>
649649
<x:String x:Key="Text.SaveAs" xml:space="preserve">Speichern als...</x:String>
@@ -671,7 +671,7 @@
671671
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
672672
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Inklusive nicht-verfolgter Dateien</x:String>
673673
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Name:</x:String>
674-
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optional. Name dieses Stashes</x:String>
674+
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optional. Informationen zu dieses Stashes</x:String>
675675
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">Nur gestagte Änderungen</x:String>
676676
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">Gestagte und unstagte Änderungen der ausgewähleten Datei(en) werden gestasht!!!</x:String>
677677
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Lokale Änderungen stashen</x:String>

src/Resources/Locales/en_US.axaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,7 @@
476476
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">{0} years ago</x:String>
477477
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">Yesterday</x:String>
478478
<x:String x:Key="Text.Preferences" xml:space="preserve">Preferences</x:String>
479+
<x:String x:Key="Text.PopupEnterKeyTip" xml:space="preserve">Use 'Shift+Enter' to input a new line. 'Enter' is the hotkey of OK button</x:String>
479480
<x:String x:Key="Text.Preferences.AI" xml:space="preserve">AI</x:String>
480481
<x:String x:Key="Text.Preferences.AI.AnalyzeDiffPrompt" xml:space="preserve">Analyze Diff Prompt</x:String>
481482
<x:String x:Key="Text.Preferences.AI.ApiKey" xml:space="preserve">API Key</x:String>
@@ -663,7 +664,6 @@
663664
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">Commit:</x:String>
664665
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">Commit revert changes</x:String>
665666
<x:String x:Key="Text.Reword" xml:space="preserve">Reword Commit Message</x:String>
666-
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">Use 'Shift+Enter' to input a new line. 'Enter' is the hotkey of OK button</x:String>
667667
<x:String x:Key="Text.Running" xml:space="preserve">Running. Please wait...</x:String>
668668
<x:String x:Key="Text.Save" xml:space="preserve">SAVE</x:String>
669669
<x:String x:Key="Text.SaveAs" xml:space="preserve">Save As...</x:String>
@@ -689,10 +689,10 @@
689689
<x:String x:Key="Text.SSHKey.Placeholder" xml:space="preserve">Private SSH key store path</x:String>
690690
<x:String x:Key="Text.Start" xml:space="preserve">START</x:String>
691691
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
692-
<x:String x:Key="Text.Stash.Changes" xml:space="preserve">Selected Changes:</x:String>
693692
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Include untracked files</x:String>
694693
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Message:</x:String>
695-
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optional. Name of this stash</x:String>
694+
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optional. Message of this stash</x:String>
695+
<x:String x:Key="Text.Stash.Mode" xml:space="preserve">Mode:</x:String>
696696
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">Only staged changes</x:String>
697697
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">Both staged and unstaged changes of selected file(s) will be stashed!!!</x:String>
698698
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Stash Local Changes</x:String>

src/Resources/Locales/es_ES.axaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,7 @@
478478
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">Hace {0} meses</x:String>
479479
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">Hace {0} años</x:String>
480480
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">Ayer</x:String>
481+
<x:String x:Key="Text.PopupEnterKeyTip" xml:space="preserve">Usa 'Shift+Enter' para introducir una nueva línea. 'Enter' es el atajo del botón OK</x:String>
481482
<x:String x:Key="Text.Preferences" xml:space="preserve">Preferencias</x:String>
482483
<x:String x:Key="Text.Preferences.AI" xml:space="preserve">OPEN AI</x:String>
483484
<x:String x:Key="Text.Preferences.AI.AnalyzeDiffPrompt" xml:space="preserve">Analizar Diff Prompt</x:String>
@@ -666,7 +667,6 @@
666667
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">Commit:</x:String>
667668
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">Commit revertir cambios</x:String>
668669
<x:String x:Key="Text.Reword" xml:space="preserve">Reescribir Mensaje de Commit</x:String>
669-
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">Usa 'Shift+Enter' para introducir una nueva línea. 'Enter' es el atajo del botón OK</x:String>
670670
<x:String x:Key="Text.Running" xml:space="preserve">Ejecutando. Por favor espera...</x:String>
671671
<x:String x:Key="Text.Save" xml:space="preserve">GUARDAR</x:String>
672672
<x:String x:Key="Text.SaveAs" xml:space="preserve">Guardar Como...</x:String>
@@ -694,7 +694,7 @@
694694
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
695695
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Incluir archivos no rastreados</x:String>
696696
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Mensaje:</x:String>
697-
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Opcional. Nombre de este stash</x:String>
697+
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Opcional. Información de este stash</x:String>
698698
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">Solo cambios staged</x:String>
699699
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">¡Tanto los cambios staged como los no staged de los archivos seleccionados serán stashed!</x:String>
700700
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Stash Cambios Locales</x:String>

src/Resources/Locales/fr_FR.axaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,7 @@
444444
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">il y a {0} mois</x:String>
445445
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">il y a {0} ans</x:String>
446446
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">Hier</x:String>
447+
<x:String x:Key="Text.PopupEnterKeyTip" xml:space="preserve">Utiliser 'Maj+Entrée' pour insérer une nouvelle ligne. 'Entrée' est la touche pour valider</x:String>
447448
<x:String x:Key="Text.Preferences" xml:space="preserve">Préférences</x:String>
448449
<x:String x:Key="Text.Preferences.AI" xml:space="preserve">IA</x:String>
449450
<x:String x:Key="Text.Preferences.AI.AnalyzeDiffPrompt" xml:space="preserve">Analyser Diff Prompt</x:String>
@@ -619,7 +620,6 @@
619620
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">Commit :</x:String>
620621
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">Commit les changements de l'annulation</x:String>
621622
<x:String x:Key="Text.Reword" xml:space="preserve">Reformuler le message de commit</x:String>
622-
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">Utiliser 'Maj+Entrée' pour insérer une nouvelle ligne. 'Entrée' est la touche pour valider</x:String>
623623
<x:String x:Key="Text.Running" xml:space="preserve">En exécution. Veuillez patienter...</x:String>
624624
<x:String x:Key="Text.Save" xml:space="preserve">SAUVEGARDER</x:String>
625625
<x:String x:Key="Text.SaveAs" xml:space="preserve">Sauvegarder en tant que...</x:String>
@@ -647,7 +647,7 @@
647647
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
648648
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Inclure les fichiers non-suivis</x:String>
649649
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Message :</x:String>
650-
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optionnel. Nom de ce stash</x:String>
650+
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Optionnel. Information de ce stash</x:String>
651651
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">Seulement les changements indexés</x:String>
652652
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">Les modifications indexées et non-indexées des fichiers sélectionnés seront stockées!!!</x:String>
653653
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Stash les changements locaux</x:String>

src/Resources/Locales/it_IT.axaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@
464464
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">{0} mesi fa</x:String>
465465
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">{0} anni fa</x:String>
466466
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">Ieri</x:String>
467+
<x:String x:Key="Text.PopupEnterKeyTip" xml:space="preserve">Usa 'Shift+Enter' per inserire una nuova riga. 'Enter' è il tasto rapido per il pulsante OK</x:String>
467468
<x:String x:Key="Text.Preferences" xml:space="preserve">Preferenze</x:String>
468469
<x:String x:Key="Text.Preferences.AI" xml:space="preserve">AI</x:String>
469470
<x:String x:Key="Text.Preferences.AI.AnalyzeDiffPrompt" xml:space="preserve">Analizza il Prompt Differenza</x:String>
@@ -647,7 +648,6 @@
647648
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">Commit:</x:String>
648649
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">Commit delle modifiche di ripristino</x:String>
649650
<x:String x:Key="Text.Reword" xml:space="preserve">Modifica Messaggio di Commit</x:String>
650-
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">Usa 'Shift+Enter' per inserire una nuova riga. 'Enter' è il tasto rapido per il pulsante OK</x:String>
651651
<x:String x:Key="Text.Running" xml:space="preserve">In esecuzione. Attendere...</x:String>
652652
<x:String x:Key="Text.Save" xml:space="preserve">SALVA</x:String>
653653
<x:String x:Key="Text.SaveAs" xml:space="preserve">Salva come...</x:String>
@@ -675,7 +675,7 @@
675675
<x:String x:Key="Text.Stash" xml:space="preserve">Stasha</x:String>
676676
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Includi file non tracciati</x:String>
677677
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Messaggio:</x:String>
678-
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Opzionale. Nome di questo stash</x:String>
678+
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Opzionale. Informazioni di questo stash</x:String>
679679
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">Solo modifiche in stage</x:String>
680680
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">Sia le modifiche in stage che quelle non in stage dei file selezionati saranno stashate!!!</x:String>
681681
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Stasha Modifiche Locali</x:String>

src/Resources/Locales/ja_JP.axaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@
443443
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">{0} ヶ月前</x:String>
444444
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">{0} 年前</x:String>
445445
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">昨日</x:String>
446+
<x:String x:Key="Text.PopupEnterKeyTip" xml:space="preserve">改行には'Shift+Enter'キーを使用します。 'Enter"はOKボタンのホットキーとして機能します。</x:String>
446447
<x:String x:Key="Text.Preferences" xml:space="preserve">設定</x:String>
447448
<x:String x:Key="Text.Preferences.AI" xml:space="preserve">AI</x:String>
448449
<x:String x:Key="Text.Preferences.AI.AnalyzeDiffPrompt" xml:space="preserve">差分分析プロンプト</x:String>
@@ -617,7 +618,6 @@
617618
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">コミット:</x:String>
618619
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">コミットの変更を戻す</x:String>
619620
<x:String x:Key="Text.Reword" xml:space="preserve">コミットメッセージを書き直す</x:String>
620-
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">改行には'Shift+Enter'キーを使用します。 'Enter"はOKボタンのホットキーとして機能します。</x:String>
621621
<x:String x:Key="Text.Running" xml:space="preserve">実行中です。しばらくお待ちください...</x:String>
622622
<x:String x:Key="Text.Save" xml:space="preserve">保存</x:String>
623623
<x:String x:Key="Text.SaveAs" xml:space="preserve">名前を付けて保存...</x:String>
@@ -645,7 +645,7 @@
645645
<x:String x:Key="Text.Stash" xml:space="preserve">スタッシュ</x:String>
646646
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">追跡されていないファイルを含める</x:String>
647647
<x:String x:Key="Text.Stash.Message" xml:space="preserve">メッセージ:</x:String>
648-
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">オプション. このスタッシュの名前を入力</x:String>
648+
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">オプション. このスタッシュの情報</x:String>
649649
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">ステージされた変更のみ</x:String>
650650
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">選択したファイルの、ステージされた変更とステージされていない変更の両方がスタッシュされます!!!</x:String>
651651
<x:String x:Key="Text.Stash.Title" xml:space="preserve">ローカルの変更をスタッシュ</x:String>

src/Resources/Locales/pt_BR.axaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,7 @@
406406
<x:String x:Key="Text.Period.MonthsAgo" xml:space="preserve">{0} meses atrás</x:String>
407407
<x:String x:Key="Text.Period.YearsAgo" xml:space="preserve">{0} anos atrás</x:String>
408408
<x:String x:Key="Text.Period.Yesterday" xml:space="preserve">Ontem</x:String>
409+
<x:String x:Key="Text.PopupEnterKeyTip" xml:space="preserve">Use 'Shift+Enter' para inserir uma nova linha. 'Enter' é a tecla de atalho do botão OK</x:String>
409410
<x:String x:Key="Text.Preferences" xml:space="preserve">Preferências</x:String>
410411
<x:String x:Key="Text.Preferences.AI" xml:space="preserve">INTELIGÊNCIA ARTIFICIAL</x:String>
411412
<x:String x:Key="Text.Preferences.AI.AnalyzeDiffPrompt" xml:space="preserve">Prompt para Analisar Diff</x:String>
@@ -563,7 +564,6 @@
563564
<x:String x:Key="Text.Revert.Commit" xml:space="preserve">Commit:</x:String>
564565
<x:String x:Key="Text.Revert.CommitChanges" xml:space="preserve">Commitar alterações de reversão</x:String>
565566
<x:String x:Key="Text.Reword" xml:space="preserve">Reescrever Mensagem do Commit</x:String>
566-
<x:String x:Key="Text.Reword.Tip" xml:space="preserve">Use 'Shift+Enter' para inserir uma nova linha. 'Enter' é a tecla de atalho do botão OK</x:String>
567567
<x:String x:Key="Text.Running" xml:space="preserve">Executando. Por favor, aguarde...</x:String>
568568
<x:String x:Key="Text.Save" xml:space="preserve">SALVAR</x:String>
569569
<x:String x:Key="Text.SaveAs" xml:space="preserve">Salvar Como...</x:String>
@@ -586,7 +586,7 @@
586586
<x:String x:Key="Text.Stash" xml:space="preserve">Stash</x:String>
587587
<x:String x:Key="Text.Stash.IncludeUntracked" xml:space="preserve">Incluir arquivos não rastreados</x:String>
588588
<x:String x:Key="Text.Stash.Message" xml:space="preserve">Mensagem:</x:String>
589-
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Opcional. Nome deste stash</x:String>
589+
<x:String x:Key="Text.Stash.Message.Placeholder" xml:space="preserve">Opcional. Informações deste stash</x:String>
590590
<x:String x:Key="Text.Stash.OnlyStagedChanges" xml:space="preserve">Apenas mudanças em stage</x:String>
591591
<x:String x:Key="Text.Stash.TipForSelectedFiles" xml:space="preserve">Tanto mudanças em stage e fora de stage dos arquivos selecionados serão enviadas para stash!!!</x:String>
592592
<x:String x:Key="Text.Stash.Title" xml:space="preserve">Guardar Alterações Locais</x:String>

0 commit comments

Comments
 (0)