mirror of
https://fastgit.cc/github.com/sourcegit-scm/sourcegit
synced 2026-04-24 02:40:24 +08:00
feature: supports to use git-credential-libsecret instead of git-credential-manager on Linux (#1560)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
@@ -153,7 +153,6 @@ namespace SourceGit.Commands
|
||||
{
|
||||
var start = new ProcessStartInfo();
|
||||
start.FileName = Native.OS.GitExecutable;
|
||||
start.Arguments = "--no-pager -c core.quotepath=off -c credential.helper=manager ";
|
||||
start.UseShellExecute = false;
|
||||
start.CreateNoWindow = true;
|
||||
|
||||
@@ -182,16 +181,27 @@ namespace SourceGit.Commands
|
||||
start.Environment.Add("LC_ALL", "C");
|
||||
}
|
||||
|
||||
// Force using this app as git editor.
|
||||
start.Arguments += Editor switch
|
||||
{
|
||||
EditorType.CoreEditor => $"""-c core.editor="\"{selfExecFile}\" --core-editor" """,
|
||||
EditorType.RebaseEditor => $"""-c core.editor="\"{selfExecFile}\" --rebase-message-editor" -c sequence.editor="\"{selfExecFile}\" --rebase-todo-editor" -c rebase.abbreviateCommands=true """,
|
||||
_ => "-c core.editor=true ",
|
||||
};
|
||||
var builder = new StringBuilder();
|
||||
builder
|
||||
.Append("--no-pager -c core.quotepath=off -c credential.helper=")
|
||||
.Append(Native.OS.CredentialHelper)
|
||||
.Append(' ');
|
||||
|
||||
// Append command args
|
||||
start.Arguments += Args;
|
||||
switch (Editor)
|
||||
{
|
||||
case EditorType.CoreEditor:
|
||||
builder.Append($"""-c core.editor="\"{selfExecFile}\" --core-editor" """);
|
||||
break;
|
||||
case EditorType.RebaseEditor:
|
||||
builder.Append($"""-c core.editor="\"{selfExecFile}\" --rebase-message-editor" -c sequence.editor="\"{selfExecFile}\" --rebase-todo-editor" -c rebase.abbreviateCommands=true """);
|
||||
break;
|
||||
default:
|
||||
builder.Append("-c core.editor=true ");
|
||||
break;
|
||||
}
|
||||
|
||||
builder.Append(Args);
|
||||
start.Arguments = builder.ToString();
|
||||
|
||||
// Working directory
|
||||
if (!string.IsNullOrEmpty(WorkingDirectory))
|
||||
|
||||
@@ -58,6 +58,12 @@ namespace SourceGit.Native
|
||||
private set;
|
||||
} = new Version(0, 0, 0);
|
||||
|
||||
public static string CredentialHelper
|
||||
{
|
||||
get;
|
||||
set;
|
||||
} = "manager";
|
||||
|
||||
public static string ShellOrTerminal
|
||||
{
|
||||
get;
|
||||
|
||||
@@ -555,6 +555,7 @@
|
||||
<x:String x:Key="Text.Preferences.Git.Invalid" xml:space="preserve">Git (>= 2.25.1) is required by this app</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.Path" xml:space="preserve">Install Path</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.SSLVerify" xml:space="preserve">Enable HTTP SSL Verify</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.UseLibsecret" xml:space="preserve">Use git-credential-libsecret instead of git-credential-manager</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.User" xml:space="preserve">User Name</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.User.Placeholder" xml:space="preserve">Global git user name</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.Version" xml:space="preserve">Git version</x:String>
|
||||
|
||||
@@ -559,6 +559,7 @@
|
||||
<x:String x:Key="Text.Preferences.Git.Invalid" xml:space="preserve">本软件要求GIT最低版本为2.25.1</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.Path" xml:space="preserve">安装路径</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.SSLVerify" xml:space="preserve">启用HTTP SSL验证</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.UseLibsecret" xml:space="preserve">使用 git-credential-libsecret 替代 git-credential-manager</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.User" xml:space="preserve">用户名</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.User.Placeholder" xml:space="preserve">默认GIT用户名</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.Version" xml:space="preserve">Git 版本</x:String>
|
||||
|
||||
@@ -559,6 +559,7 @@
|
||||
<x:String x:Key="Text.Preferences.Git.Invalid" xml:space="preserve">本軟體要求 Git 最低版本為 2.25.1</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.Path" xml:space="preserve">安裝路徑</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.SSLVerify" xml:space="preserve">啟用 HTTP SSL 驗證</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.UseLibsecret" xml:space="preserve">使用 git-credential-libsecret 取代 git-credential-manager</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.User" xml:space="preserve">使用者名稱</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.User.Placeholder" xml:space="preserve">預設 Git 使用者名稱</x:String>
|
||||
<x:String x:Key="Text.Preferences.Git.Version" xml:space="preserve">Git 版本</x:String>
|
||||
|
||||
@@ -310,6 +310,20 @@ namespace SourceGit.ViewModels
|
||||
set => SetProperty(ref _gitDefaultCloneDir, value);
|
||||
}
|
||||
|
||||
public bool UseLibsecretInsteadOfGCM
|
||||
{
|
||||
get => Native.OS.CredentialHelper.Equals("libsecret", StringComparison.Ordinal);
|
||||
set
|
||||
{
|
||||
var helper = value ? "libsecret" : "manager";
|
||||
if (OperatingSystem.IsLinux() && !Native.OS.CredentialHelper.Equals(helper, StringComparison.Ordinal))
|
||||
{
|
||||
Native.OS.CredentialHelper = helper;
|
||||
OnPropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int ShellOrTerminal
|
||||
{
|
||||
get => _shellOrTerminal;
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
<TextBlock Classes="tab_header" Text="{DynamicResource Text.Preferences.Git}"/>
|
||||
</TabItem.Header>
|
||||
|
||||
<Grid Margin="8" RowDefinitions="32,32,32,32,32,32,32,32" ColumnDefinitions="Auto,*">
|
||||
<Grid Margin="8" RowDefinitions="32,32,32,32,32,32,32,32,Auto" ColumnDefinitions="Auto,*">
|
||||
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||
Text="{DynamicResource Text.Preferences.Git.Path}"
|
||||
HorizontalAlignment="Right"
|
||||
@@ -366,6 +366,12 @@
|
||||
Height="32"
|
||||
Content="{DynamicResource Text.Preferences.Git.SSLVerify}"
|
||||
IsChecked="{Binding #ThisControl.EnableHTTPSSLVerify, Mode=TwoWay}"/>
|
||||
|
||||
<CheckBox Grid.Row="8" Grid.Column="1"
|
||||
Height="32"
|
||||
Content="{DynamicResource Text.Preferences.Git.UseLibsecret}"
|
||||
IsChecked="{Binding UseLibsecretInsteadOfGCM, Mode=TwoWay}"
|
||||
IsVisible="{OnPlatform False, Linux=True}"/>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user