代码拉取完成,页面将自动刷新
using NGitLab;
using NGitLab.Models;
namespace Extensions.Configuration.GitRepository.GitLabProvider
{
internal class GitLabRepositoryClient : IGitRepositoryClient
{
private NGitLab.GitLabClient client;
private readonly GitRepositoryConfigurationOptions _options;
private Project project;
private IRepositoryClient repo;
public GitLabRepositoryClient(GitRepositoryConfigurationOptions options)
{
_options = options;
}
private void check_connect()
{
if (client == null)
{
client = new NGitLab.GitLabClient(_options.HostUrl, _options.AuthenticationToken);
}
if (project == null || repo == null)
{
try
{
project = client.Projects.GetByNamespacedPathAsync(_options.RepositoryPath).GetAwaiter().GetResult();
repo = client.GetRepository(new ProjectId(project.Id));
}
catch (System.Exception ex)
{
Console.WriteLine($"GitLabRepositoryClient:{ex.ToString()}");
throw;
}
}
}
public bool FileExists(string filePath)
{
check_connect();
return repo.Files.FileExists(filePath, project.DefaultBranch);
}
public string GetFile(string fileName)
{
check_connect();
var context = repo.Files.Get(fileName, project.DefaultBranch).DecodedContent;
return context;
}
public void PutFile(string fileName, string content, string msg)
{
check_connect();
var fileUpsert = new FileUpsert
{
Branch = project.DefaultBranch,
CommitMessage = msg,
RawContent = content,
Encoding = "base64",
Path = fileName
};
repo.Files.Create(fileUpsert);
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。