mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-07 11:54:59 +00:00
fix: OpenFolderPickerAsync
raise exception when selected a drive root such as E:\
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
parent
1bd2044589
commit
bc5deac9fe
8 changed files with 32 additions and 9 deletions
|
@ -6,6 +6,7 @@
|
||||||
{
|
{
|
||||||
WorkingDirectory = repo;
|
WorkingDirectory = repo;
|
||||||
Context = repo;
|
Context = repo;
|
||||||
|
Editor = EditorType.None;
|
||||||
Args = $"format-patch {commit} -1 --output=\"{saveTo}\"";
|
Args = $"format-patch {commit} -1 --output=\"{saveTo}\"";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -452,7 +452,9 @@ namespace SourceGit.ViewModels
|
||||||
var selected = await storageProvider.OpenFolderPickerAsync(options);
|
var selected = await storageProvider.OpenFolderPickerAsync(options);
|
||||||
if (selected.Count == 1)
|
if (selected.Count == 1)
|
||||||
{
|
{
|
||||||
var saveTo = Path.Combine(selected[0].Path.LocalPath, Path.GetFileName(file.Path));
|
var folder = selected[0];
|
||||||
|
var folderPath = folder is { Path: { IsAbsoluteUri: true } path } ? path.LocalPath : folder?.Path.ToString();
|
||||||
|
var saveTo = Path.Combine(folderPath, Path.GetFileName(file.Path));
|
||||||
Commands.SaveRevisionFile.Run(_repo.FullPath, _commit.SHA, file.Path, saveTo);
|
Commands.SaveRevisionFile.Run(_repo.FullPath, _commit.SHA, file.Path, saveTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -333,10 +333,12 @@ namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
log = _repo.CreateLog("Save as Patch");
|
log = _repo.CreateLog("Save as Patch");
|
||||||
|
|
||||||
|
var folder = picker[0];
|
||||||
|
var folderPath = folder is { Path: { IsAbsoluteUri: true } path } ? path.LocalPath : folder?.Path.ToString();
|
||||||
var succ = false;
|
var succ = false;
|
||||||
for (var i = 0; i < selected.Count; i++)
|
for (var i = 0; i < selected.Count; i++)
|
||||||
{
|
{
|
||||||
var saveTo = GetPatchFileName(picker[0].Path.LocalPath, selected[i], i);
|
var saveTo = GetPatchFileName(folderPath, selected[i], i);
|
||||||
succ = await Task.Run(() => new Commands.FormatPatch(_repo.FullPath, selected[i].SHA, saveTo).Use(log).Exec());
|
succ = await Task.Run(() => new Commands.FormatPatch(_repo.FullPath, selected[i].SHA, saveTo).Use(log).Exec());
|
||||||
if (!succ)
|
if (!succ)
|
||||||
break;
|
break;
|
||||||
|
@ -691,8 +693,10 @@ namespace SourceGit.ViewModels
|
||||||
{
|
{
|
||||||
log = _repo.CreateLog("Save as Patch");
|
log = _repo.CreateLog("Save as Patch");
|
||||||
|
|
||||||
var saveTo = GetPatchFileName(selected[0].Path.LocalPath, commit);
|
var folder = selected[0];
|
||||||
var succ = new Commands.FormatPatch(_repo.FullPath, commit.SHA, saveTo).Use(log).Exec();
|
var folderPath = folder is { Path: { IsAbsoluteUri: true } path } ? path.LocalPath : folder?.Path.ToString();
|
||||||
|
var saveTo = GetPatchFileName(folderPath, commit);
|
||||||
|
var succ = await Task.Run(() => new Commands.FormatPatch(_repo.FullPath, commit.SHA, saveTo).Use(log).Exec());
|
||||||
if (succ)
|
if (succ)
|
||||||
App.SendNotification(_repo.FullPath, App.Text("SaveAsPatchSuccess"));
|
App.SendNotification(_repo.FullPath, App.Text("SaveAsPatchSuccess"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,11 @@ namespace SourceGit.Views
|
||||||
{
|
{
|
||||||
var selected = await toplevel.StorageProvider.OpenFolderPickerAsync(options);
|
var selected = await toplevel.StorageProvider.OpenFolderPickerAsync(options);
|
||||||
if (selected.Count == 1)
|
if (selected.Count == 1)
|
||||||
TxtLocation.Text = selected[0].Path.LocalPath;
|
{
|
||||||
|
var folder = selected[0];
|
||||||
|
var folderPath = folder is { Path: { IsAbsoluteUri: true } path } ? path.LocalPath : folder?.Path.ToString();
|
||||||
|
TxtLocation.Text = folderPath;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,7 +23,11 @@ namespace SourceGit.Views
|
||||||
{
|
{
|
||||||
var selected = await toplevel.StorageProvider.OpenFolderPickerAsync(options);
|
var selected = await toplevel.StorageProvider.OpenFolderPickerAsync(options);
|
||||||
if (selected.Count == 1)
|
if (selected.Count == 1)
|
||||||
TxtParentFolder.Text = selected[0].Path.LocalPath;
|
{
|
||||||
|
var folder = selected[0];
|
||||||
|
var folderPath = folder is { Path: { IsAbsoluteUri: true } path } ? path.LocalPath : folder?.Path.ToString();
|
||||||
|
TxtParentFolder.Text = folderPath;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,7 +32,9 @@ namespace SourceGit.Views
|
||||||
var selected = await StorageProvider.OpenFolderPickerAsync(options);
|
var selected = await StorageProvider.OpenFolderPickerAsync(options);
|
||||||
if (selected.Count == 1)
|
if (selected.Count == 1)
|
||||||
{
|
{
|
||||||
workspace.Selected.DefaultCloneDir = selected[0].Path.LocalPath;
|
var folder = selected[0];
|
||||||
|
var folderPath = folder is { Path: { IsAbsoluteUri: true } path } ? path.LocalPath : folder?.Path.ToString();
|
||||||
|
workspace.Selected.DefaultCloneDir = folderPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -250,7 +250,9 @@ namespace SourceGit.Views
|
||||||
var selected = await StorageProvider.OpenFolderPickerAsync(options);
|
var selected = await StorageProvider.OpenFolderPickerAsync(options);
|
||||||
if (selected.Count == 1)
|
if (selected.Count == 1)
|
||||||
{
|
{
|
||||||
ViewModels.Preferences.Instance.GitDefaultCloneDir = selected[0].Path.LocalPath;
|
var folder = selected[0];
|
||||||
|
var folderPath = folder is { Path: { IsAbsoluteUri: true } path } ? path.LocalPath : folder?.Path.ToString();
|
||||||
|
ViewModels.Preferences.Instance.GitDefaultCloneDir = folderPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -35,7 +35,11 @@ namespace SourceGit.Views
|
||||||
{
|
{
|
||||||
var selected = await topLevel.StorageProvider.OpenFolderPickerAsync(options);
|
var selected = await topLevel.StorageProvider.OpenFolderPickerAsync(options);
|
||||||
if (selected.Count == 1)
|
if (selected.Count == 1)
|
||||||
ViewModels.Welcome.Instance.OpenOrInitRepository(selected[0].Path.LocalPath, null, false);
|
{
|
||||||
|
var folder = selected[0];
|
||||||
|
var folderPath = folder is { Path: { IsAbsoluteUri: true } path } ? path.LocalPath : folder?.Path.ToString();
|
||||||
|
ViewModels.Welcome.Instance.OpenOrInitRepository(folderPath, null, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception exception)
|
catch (Exception exception)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue