Skip to content

Commit c5be29a

Browse files
committed
feature: supports output changes file names (without folders in path) in commit message template (#1851)
Signed-off-by: leo <longshuang@msn.cn>
1 parent 90a049d commit c5be29a

File tree

10 files changed

+58
-22
lines changed

10 files changed

+58
-22
lines changed

src/Models/TemplateEngine.cs

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using System.Text;
45
using System.Text.RegularExpressions;
56

@@ -349,14 +350,10 @@ private static string EvalVariable(Context context, RegexVariable variable)
349350
private delegate string VariableGetter(Context context);
350351

351352
private static readonly IReadOnlyDictionary<string, VariableGetter> s_variables = new Dictionary<string, VariableGetter>() {
352-
// legacy variables
353353
{"branch_name", GetBranchName},
354354
{"files_num", GetFilesCount},
355355
{"files", GetFiles},
356-
//
357-
{"BRANCH", GetBranchName},
358-
{"FILES_COUNT", GetFilesCount},
359-
{"FILES", GetFiles},
356+
{"pure_files", GetPureFiles},
360357
};
361358

362359
private static string GetBranchName(Context context)
@@ -377,13 +374,19 @@ private static string GetFiles(Context context)
377374
return string.Join(", ", paths);
378375
}
379376

377+
private static string GetPureFiles(Context context)
378+
{
379+
var names = new List<string>();
380+
foreach (var c in context.changes)
381+
names.Add(Path.GetFileName(c.Path));
382+
return string.Join(", ", names);
383+
}
384+
380385
private delegate string VariableSliceGetter(Context context, int count);
381386

382387
private static readonly IReadOnlyDictionary<string, VariableSliceGetter> s_slicedVariables = new Dictionary<string, VariableSliceGetter>() {
383-
// legacy variables
384388
{"files", GetFilesSliced},
385-
//
386-
{"FILES", GetFilesSliced},
389+
{"pure_files", GetPureFilesSliced}
387390
};
388391

389392
private static string GetFilesSliced(Context context, int count)
@@ -400,5 +403,20 @@ private static string GetFilesSliced(Context context, int count)
400403

401404
return sb.ToString();
402405
}
406+
407+
private static string GetPureFilesSliced(Context context, int count)
408+
{
409+
var sb = new StringBuilder();
410+
var names = new List<string>();
411+
var max = Math.Min(count, context.changes.Count);
412+
for (int i = 0; i < max; i++)
413+
names.Add(Path.GetFileName(context.changes[i].Path));
414+
415+
sb.AppendJoin(", ", names);
416+
if (max < context.changes.Count)
417+
sb.Append($" and {context.changes.Count - max} other files");
418+
419+
return sb.ToString();
420+
}
403421
}
404422
}

src/Resources/Locales/de_DE.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@
186186
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Commit-Nachricht</x:String>
187187
<x:String x:Key="Text.Configure" xml:space="preserve">Repository Einstellungen</x:String>
188188
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">COMMIT TEMPLATE</x:String>
189-
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">Du kannst ${files_num}, ${branch_name}, ${files} und ${files:N} verwenden, wobei N die maximale Anzahl an auszugebenden Dateipfaden ist.</x:String>
190189
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Template Inhalt:</x:String>
191190
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Template Name:</x:String>
192191
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">BENUTZERDEFINIERTE AKTION</x:String>

src/Resources/Locales/en_US.axaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,14 @@
182182
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Enter commit subject</x:String>
183183
<x:String x:Key="Text.Configure" xml:space="preserve">Repository Configure</x:String>
184184
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">COMMIT TEMPLATE</x:String>
185-
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">You can use ${files_num}, ${branch_name}, ${files} and ${files:N} where N is the max number of file paths to output.</x:String>
185+
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">Built-in parameters:
186+
187+
${branch_name} Current local branch name.
188+
${files_num} Number of changed files
189+
${files} Paths of changed files
190+
${files:N} Max N number of paths of changed files
191+
${pure_files} Likes ${files}, but only pure file names
192+
${pure_files:N} Likes ${files:N}, but without folders</x:String>
186193
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Template Content:</x:String>
187194
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Template Name:</x:String>
188195
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">CUSTOM ACTION</x:String>

src/Resources/Locales/es_ES.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@
186186
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Introducir asunto del commit</x:String>
187187
<x:String x:Key="Text.Configure" xml:space="preserve">Configurar Repositorio</x:String>
188188
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">PLANTILLA DE COMMIT</x:String>
189-
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">Puedes usar ${files_num}, ${branch_name}, ${files} y ${files:N} donde N es el número máximo de rutas de archivo a la salida.</x:String>
190189
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Contenido de la Plantilla:</x:String>
191190
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Nombre de la Plantilla:</x:String>
192191
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">ACCIÓN PERSONALIZADA</x:String>

src/Resources/Locales/id_ID.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@
184184
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Masukkan subjek commit</x:String>
185185
<x:String x:Key="Text.Configure" xml:space="preserve">Konfigurasi Repositori</x:String>
186186
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">TEMPLATE COMMIT</x:String>
187-
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">Anda dapat menggunakan ${files_num}, ${branch_name}, ${files} dan ${files:N} dimana N adalah jumlah maksimal jalur berkas yang ditampilkan.</x:String>
188187
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Konten Template:</x:String>
189188
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Nama Template:</x:String>
190189
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">AKSI KUSTOM</x:String>

src/Resources/Locales/it_IT.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@
174174
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Inserisci l'oggetto del commit</x:String>
175175
<x:String x:Key="Text.Configure" xml:space="preserve">Configura Repository</x:String>
176176
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">TEMPLATE DI COMMIT</x:String>
177-
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">Puoi usare ${files_num}, ${branch_name}, ${files} e ${files:N} dove N è il numero massimo di percorsi di file da mostrare.</x:String>
178177
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Contenuto Template:</x:String>
179178
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Nome Template:</x:String>
180179
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">AZIONE PERSONALIZZATA</x:String>

src/Resources/Locales/ru_RU.axaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@
186186
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Введите тему ревизии</x:String>
187187
<x:String x:Key="Text.Configure" xml:space="preserve">Настройка репозитория</x:String>
188188
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">ШАБЛОН РЕВИЗИИ</x:String>
189-
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">Вы можете использовать ${files_num}, ${branch_name}, ${files} и ${files:N}, где N — максимальное количество путей к файлам для вывода.</x:String>
190189
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Cодержание:</x:String>
191190
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Название:</x:String>
192191
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">ПОЛЬЗОВАТЕЛЬСКОЕ ДЕЙСТВИЕ</x:String>

src/Resources/Locales/zh_CN.axaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,14 @@
186186
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">填写提交信息主题</x:String>
187187
<x:String x:Key="Text.Configure" xml:space="preserve">仓库配置</x:String>
188188
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">提交信息模板</x:String>
189-
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">您可使用 ${files_num}, ${branch_name}, ${files} 或 ${files:N}(N表示最大显示的文件数)</x:String>
189+
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">内置变量:
190+
191+
${branch_name} 当前分支名
192+
${files_num} 变更文件数量
193+
${files} 变更文件路径列表
194+
${files:N} 变更文件路径列表(仅输出指定 N 条)
195+
${pure_files} 与 ${files} 类似,但仅输出文件名
196+
${pure_files:N} 与 ${files:N} 类似,但仅输出文件名</x:String>
190197
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">模板内容 :</x:String>
191198
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">模板名 :</x:String>
192199
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">自定义操作</x:String>

src/Resources/Locales/zh_TW.axaml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,14 @@
186186
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">填寫提交訊息標題</x:String>
187187
<x:String x:Key="Text.Configure" xml:space="preserve">存放庫設定</x:String>
188188
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">提交訊息範本</x:String>
189-
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">您可以使用 ${files_num}、${branch_name}、${files} 或 ${files:N},其中 N 是要輸出的檔案路徑的最大數目。</x:String>
189+
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">內建參數:
190+
191+
${branch_name} 目前分支名稱
192+
${files_num} 已變更檔案數
193+
${files} 已變更檔案路徑清單
194+
${files:N} 已變更檔案路徑清單(僅列出前 N 個)
195+
${pure_files} 類似 ${files}, 不含資料夾的純檔案名稱
196+
${pure_files:N} 類似 ${files:N}, 不含資料夾的純檔案名稱</x:String>
190197
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">範本內容:</x:String>
191198
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">範本名稱:</x:String>
192199
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">自訂動作</x:String>

src/Views/RepositoryConfigure.axaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -257,12 +257,14 @@
257257
<TextBlock Text="{DynamicResource Text.Configure.CommitMessageTemplate.Name}"/>
258258
<TextBox Margin="0,4,0,0" CornerRadius="3" Height="28" Text="{Binding Name, Mode=TwoWay}"/>
259259

260-
<TextBlock Margin="0,12,0,0" Text="{DynamicResource Text.Configure.CommitMessageTemplate.Content}"/>
261-
<v:CommitMessageTextBox Margin="0,4,0,0" Height="150" Text="{Binding Content, Mode=TwoWay}"/>
262-
<TextBlock Margin="0,2,0,0"
263-
Text="{DynamicResource Text.Configure.CommitMessageTemplate.BuiltinVars}"
264-
Foreground="{DynamicResource Brush.FG2}"
265-
TextWrapping="Wrap"/>
260+
<Grid ColumnDefinitions="*,Auto" Margin="0,12,0,0">
261+
<TextBlock Grid.Column="0" Text="{DynamicResource Text.Configure.CommitMessageTemplate.Content}"/>
262+
<Border Grid.Column="1" Width="14" Height="14" Background="Transparent" ToolTip.Tip="{DynamicResource Text.Configure.CommitMessageTemplate.BuiltinVars}">
263+
<Path Data="{StaticResource Icons.Info}"/>
264+
</Border>
265+
</Grid>
266+
267+
<v:CommitMessageTextBox Margin="0,4,0,0" Height="200" Text="{Binding Content, Mode=TwoWay}"/>
266268
</StackPanel>
267269
</DataTemplate>
268270
</ContentControl.DataTemplates>

0 commit comments

Comments
 (0)