VSCodeTask
Download SSL Certificates Sort Subtasks of Markdown files Test BioRad EAF CopyDirectories json to Markdown Sort Day 2024 Q2 GitRemoteRemove Handle directoryInfo.LinkTarget better Remove StartAt Handle directoryInfo.LinkTarget
This commit is contained in:
@ -43,24 +43,78 @@ internal static class HelperGit
|
||||
return result.Output;
|
||||
}
|
||||
|
||||
private static List<string> GetOthersModifiedAndDeletedExcludingStandardFilesAsList(string repositoryDirectory, bool usePathCombine, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> results = [];
|
||||
Task<string> task = RunAsync("ls-files --others --modified --deleted --exclude-standard", repositoryDirectory, cancellationToken);
|
||||
task.Wait(cancellationToken);
|
||||
string[] files = task.Result.Split("\r\n");
|
||||
foreach (string file in files)
|
||||
{
|
||||
if (!usePathCombine)
|
||||
results.Add(file);
|
||||
else
|
||||
results.Add(Path.GetFullPath(Path.Combine(repositoryDirectory, file)));
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
internal static ReadOnlyCollection<string> GetOthersModifiedAndDeletedExcludingStandardFiles(string repositoryDirectory, bool usePathCombine, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> results = [];
|
||||
List<string> relativePathFiles;
|
||||
DirectoryInfo directoryInfo;
|
||||
bool usePathCombineInner = false;
|
||||
string checkDirectory = Path.Combine(repositoryDirectory, ".git");
|
||||
if (Directory.Exists(checkDirectory))
|
||||
results.AddRange(GetOthersModifiedAndDeletedExcludingStandardFilesAsList(repositoryDirectory, usePathCombine, cancellationToken));
|
||||
string[] subdirectories = Directory.GetDirectories(repositoryDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string subdirectory in subdirectories)
|
||||
{
|
||||
Task<string> task = RunAsync($"ls-files --others --modified --deleted --exclude-standard", repositoryDirectory, cancellationToken);
|
||||
task.Wait(cancellationToken);
|
||||
string[] files = task.Result.Split("\r\n");
|
||||
foreach (string file in files)
|
||||
{
|
||||
if (!usePathCombine)
|
||||
results.Add(file);
|
||||
else
|
||||
results.Add(Path.GetFullPath(Path.Combine(repositoryDirectory, file)));
|
||||
}
|
||||
directoryInfo = new(subdirectory);
|
||||
if (directoryInfo.LinkTarget is null)
|
||||
continue;
|
||||
checkDirectory = Path.Combine(directoryInfo.LinkTarget, ".git");
|
||||
if (!Directory.Exists(checkDirectory))
|
||||
continue;
|
||||
relativePathFiles = GetOthersModifiedAndDeletedExcludingStandardFilesAsList(directoryInfo.LinkTarget, usePathCombineInner, cancellationToken);
|
||||
foreach (string relativePathFile in relativePathFiles)
|
||||
results.Add(Path.GetFullPath(Path.Combine(subdirectory, relativePathFile)));
|
||||
}
|
||||
return new(results);
|
||||
}
|
||||
|
||||
internal static ReadOnlyCollection<string> RemoteRemove(string repositoryDirectory, string name, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> results = [];
|
||||
Task<string> task = RunAsync($"remote rm {name}", repositoryDirectory, cancellationToken);
|
||||
task.Wait(cancellationToken);
|
||||
string[] lines = task.Result.Split("\r\n");
|
||||
foreach (string line in lines)
|
||||
results.Add(line);
|
||||
return new(results);
|
||||
}
|
||||
|
||||
internal static ReadOnlyCollection<string> RemoteAdd(string repositoryDirectory, string name, string url, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> results = [];
|
||||
Task<string> task = RunAsync($"remote add {name} {url}", repositoryDirectory, cancellationToken);
|
||||
task.Wait(cancellationToken);
|
||||
string[] lines = task.Result.Split("\r\n");
|
||||
foreach (string line in lines)
|
||||
results.Add(line);
|
||||
return new(results);
|
||||
}
|
||||
|
||||
internal static ReadOnlyCollection<string> PushBranch(string repositoryDirectory, string remote, string name, CancellationToken cancellationToken)
|
||||
{
|
||||
List<string> results = [];
|
||||
Task<string> task = RunAsync($"push {remote} {name}", repositoryDirectory, cancellationToken);
|
||||
task.Wait(cancellationToken);
|
||||
string[] lines = task.Result.Split("\r\n");
|
||||
foreach (string line in lines)
|
||||
results.Add(line);
|
||||
return new(results);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user