/
vasiukoff
/
sg
Обзор
Документация
Войти
/
vasiukoff
/
sg
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/Commands/QueryRefsContainsCommit.cs
40 строк
2 KB
leo
code_review: PR #1492
03 июл 2025, 12:30
03 июл 2025, 12:30
4076582
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using System.Threading.Tasks; namespace SourceGit.Commands { public class QueryRefsContainsCommit : Command { public QueryRefsContainsCommit(string repo, string commit) { WorkingDirectory = repo; RaiseError = false; Args = $"for-each-ref --format=\"%(refname)\" --contains {commit}"; } public async Task<List<Models.Decorator>> GetResultAsync() { var outs = new List<Models.Decorator>(); var rs = await ReadToEndAsync().ConfigureAwait(false); if (!rs.IsSuccess) return outs; var lines = rs.StdOut.Split(['\r', '\n'], StringSplitOptions.RemoveEmptyEntries); foreach (var line in lines) { if (line.EndsWith("/HEAD", StringComparison.Ordinal)) continue; if (line.StartsWith("refs/heads/", StringComparison.Ordinal)) outs.Add(new() { Name = line.Substring("refs/heads/".Length), Type = Models.DecoratorType.LocalBranchHead }); else if (line.StartsWith("refs/remotes/", StringComparison.Ordinal)) outs.Add(new() { Name = line.Substring("refs/remotes/".Length), Type = Models.DecoratorType.RemoteBranchHead }); else if (line.StartsWith("refs/tags/", StringComparison.Ordinal)) outs.Add(new() { Name = line.Substring("refs/tags/".Length), Type = Models.DecoratorType.Tag }); } return outs; } } }