mirror of
https://fastgit.cc/github.com/sourcegit-scm/sourcegit
synced 2026-04-23 10:22:13 +08:00
feature: supports output changes file names (without folders in path) in commit message template (#1851)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
@@ -349,14 +350,10 @@ namespace SourceGit.Models
|
||||
private delegate string VariableGetter(Context context);
|
||||
|
||||
private static readonly IReadOnlyDictionary<string, VariableGetter> s_variables = new Dictionary<string, VariableGetter>() {
|
||||
// legacy variables
|
||||
{"branch_name", GetBranchName},
|
||||
{"files_num", GetFilesCount},
|
||||
{"files", GetFiles},
|
||||
//
|
||||
{"BRANCH", GetBranchName},
|
||||
{"FILES_COUNT", GetFilesCount},
|
||||
{"FILES", GetFiles},
|
||||
{"pure_files", GetPureFiles},
|
||||
};
|
||||
|
||||
private static string GetBranchName(Context context)
|
||||
@@ -377,13 +374,19 @@ namespace SourceGit.Models
|
||||
return string.Join(", ", paths);
|
||||
}
|
||||
|
||||
private static string GetPureFiles(Context context)
|
||||
{
|
||||
var names = new List<string>();
|
||||
foreach (var c in context.changes)
|
||||
names.Add(Path.GetFileName(c.Path));
|
||||
return string.Join(", ", names);
|
||||
}
|
||||
|
||||
private delegate string VariableSliceGetter(Context context, int count);
|
||||
|
||||
private static readonly IReadOnlyDictionary<string, VariableSliceGetter> s_slicedVariables = new Dictionary<string, VariableSliceGetter>() {
|
||||
// legacy variables
|
||||
{"files", GetFilesSliced},
|
||||
//
|
||||
{"FILES", GetFilesSliced},
|
||||
{"pure_files", GetPureFilesSliced}
|
||||
};
|
||||
|
||||
private static string GetFilesSliced(Context context, int count)
|
||||
@@ -400,5 +403,20 @@ namespace SourceGit.Models
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private static string GetPureFilesSliced(Context context, int count)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
var names = new List<string>();
|
||||
var max = Math.Min(count, context.changes.Count);
|
||||
for (int i = 0; i < max; i++)
|
||||
names.Add(Path.GetFileName(context.changes[i].Path));
|
||||
|
||||
sb.AppendJoin(", ", names);
|
||||
if (max < context.changes.Count)
|
||||
sb.Append($" and {context.changes.Count - max} other files");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,7 +186,6 @@
|
||||
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Commit-Nachricht</x:String>
|
||||
<x:String x:Key="Text.Configure" xml:space="preserve">Repository Einstellungen</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">COMMIT TEMPLATE</x:String>
|
||||
<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>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Template Inhalt:</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Template Name:</x:String>
|
||||
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">BENUTZERDEFINIERTE AKTION</x:String>
|
||||
|
||||
@@ -182,7 +182,14 @@
|
||||
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Enter commit subject</x:String>
|
||||
<x:String x:Key="Text.Configure" xml:space="preserve">Repository Configure</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">COMMIT TEMPLATE</x:String>
|
||||
<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>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">Built-in parameters:
|
||||
|
||||
${branch_name} Current local branch name.
|
||||
${files_num} Number of changed files
|
||||
${files} Paths of changed files
|
||||
${files:N} Max N number of paths of changed files
|
||||
${pure_files} Likes ${files}, but only pure file names
|
||||
${pure_files:N} Likes ${files:N}, but without folders</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Template Content:</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Template Name:</x:String>
|
||||
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">CUSTOM ACTION</x:String>
|
||||
|
||||
@@ -186,7 +186,6 @@
|
||||
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Introducir asunto del commit</x:String>
|
||||
<x:String x:Key="Text.Configure" xml:space="preserve">Configurar Repositorio</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">PLANTILLA DE COMMIT</x:String>
|
||||
<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>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Contenido de la Plantilla:</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Nombre de la Plantilla:</x:String>
|
||||
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">ACCIÓN PERSONALIZADA</x:String>
|
||||
|
||||
@@ -184,7 +184,6 @@
|
||||
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Masukkan subjek commit</x:String>
|
||||
<x:String x:Key="Text.Configure" xml:space="preserve">Konfigurasi Repositori</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">TEMPLATE COMMIT</x:String>
|
||||
<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>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Konten Template:</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Nama Template:</x:String>
|
||||
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">AKSI KUSTOM</x:String>
|
||||
|
||||
@@ -174,7 +174,6 @@
|
||||
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Inserisci l'oggetto del commit</x:String>
|
||||
<x:String x:Key="Text.Configure" xml:space="preserve">Configura Repository</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">TEMPLATE DI COMMIT</x:String>
|
||||
<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>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Contenuto Template:</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Nome Template:</x:String>
|
||||
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">AZIONE PERSONALIZZATA</x:String>
|
||||
|
||||
@@ -186,7 +186,6 @@
|
||||
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">Введите тему ревизии</x:String>
|
||||
<x:String x:Key="Text.Configure" xml:space="preserve">Настройка репозитория</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">ШАБЛОН РЕВИЗИИ</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">Вы можете использовать ${files_num}, ${branch_name}, ${files} и ${files:N}, где N — максимальное количество путей к файлам для вывода.</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">Cодержание:</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">Название:</x:String>
|
||||
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">ПОЛЬЗОВАТЕЛЬСКОЕ ДЕЙСТВИЕ</x:String>
|
||||
|
||||
@@ -186,7 +186,14 @@
|
||||
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">填写提交信息主题</x:String>
|
||||
<x:String x:Key="Text.Configure" xml:space="preserve">仓库配置</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">提交信息模板</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">您可使用 ${files_num}, ${branch_name}, ${files} 或 ${files:N}(N表示最大显示的文件数)</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">内置变量:
|
||||
|
||||
${branch_name} 当前分支名
|
||||
${files_num} 变更文件数量
|
||||
${files} 变更文件路径列表
|
||||
${files:N} 变更文件路径列表(仅输出指定 N 条)
|
||||
${pure_files} 与 ${files} 类似,但仅输出文件名
|
||||
${pure_files:N} 与 ${files:N} 类似,但仅输出文件名</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">模板内容 :</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">模板名 :</x:String>
|
||||
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">自定义操作</x:String>
|
||||
|
||||
@@ -186,7 +186,14 @@
|
||||
<x:String x:Key="Text.CommitMessageTextBox.SubjectPlaceholder" xml:space="preserve">填寫提交訊息標題</x:String>
|
||||
<x:String x:Key="Text.Configure" xml:space="preserve">存放庫設定</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate" xml:space="preserve">提交訊息範本</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">您可以使用 ${files_num}、${branch_name}、${files} 或 ${files:N},其中 N 是要輸出的檔案路徑的最大數目。</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.BuiltinVars" xml:space="preserve">內建參數:
|
||||
|
||||
${branch_name} 目前分支名稱
|
||||
${files_num} 已變更檔案數
|
||||
${files} 已變更檔案路徑清單
|
||||
${files:N} 已變更檔案路徑清單(僅列出前 N 個)
|
||||
${pure_files} 類似 ${files}, 不含資料夾的純檔案名稱
|
||||
${pure_files:N} 類似 ${files:N}, 不含資料夾的純檔案名稱</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Content" xml:space="preserve">範本內容:</x:String>
|
||||
<x:String x:Key="Text.Configure.CommitMessageTemplate.Name" xml:space="preserve">範本名稱:</x:String>
|
||||
<x:String x:Key="Text.Configure.CustomAction" xml:space="preserve">自訂動作</x:String>
|
||||
|
||||
@@ -257,12 +257,14 @@
|
||||
<TextBlock Text="{DynamicResource Text.Configure.CommitMessageTemplate.Name}"/>
|
||||
<TextBox Margin="0,4,0,0" CornerRadius="3" Height="28" Text="{Binding Name, Mode=TwoWay}"/>
|
||||
|
||||
<TextBlock Margin="0,12,0,0" Text="{DynamicResource Text.Configure.CommitMessageTemplate.Content}"/>
|
||||
<v:CommitMessageTextBox Margin="0,4,0,0" Height="150" Text="{Binding Content, Mode=TwoWay}"/>
|
||||
<TextBlock Margin="0,2,0,0"
|
||||
Text="{DynamicResource Text.Configure.CommitMessageTemplate.BuiltinVars}"
|
||||
Foreground="{DynamicResource Brush.FG2}"
|
||||
TextWrapping="Wrap"/>
|
||||
<Grid ColumnDefinitions="*,Auto" Margin="0,12,0,0">
|
||||
<TextBlock Grid.Column="0" Text="{DynamicResource Text.Configure.CommitMessageTemplate.Content}"/>
|
||||
<Border Grid.Column="1" Width="14" Height="14" Background="Transparent" ToolTip.Tip="{DynamicResource Text.Configure.CommitMessageTemplate.BuiltinVars}">
|
||||
<Path Data="{StaticResource Icons.Info}"/>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
<v:CommitMessageTextBox Margin="0,4,0,0" Height="200" Text="{Binding Content, Mode=TwoWay}"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ContentControl.DataTemplates>
|
||||
|
||||
Reference in New Issue
Block a user