citizenmp-server-updater/RepositoryExtensions.cs

40 lines
1.3 KiB
C#

using System.IO;
using System.Linq;
using LibGit2Sharp;
namespace CitizenMP.Server.Installer
{
static class RepositoryExtensions
{
public static void UpdateSubmodules(this IRepository git)
{
foreach (var submodule in git.Submodules)
{
var subrepoPath = Path.Combine(git.Info.WorkingDirectory, submodule.Path);
if (!Repository.IsValid(subrepoPath))
{
Directory.Delete(subrepoPath, true);
Repository.Clone(submodule.Url, subrepoPath);
}
using (var subrepo = new Repository(subrepoPath))
{
subrepo.UpdateRepository(submodule.HeadCommitId.Sha);
}
}
}
public static void UpdateRepository(this IRepository git, string committishOrBranchSpec)
{
git.RemoveUntrackedFiles();
git.Reset(ResetMode.Hard);
git.Fetch(git.Network.Remotes.First().Name, new FetchOptions
{
TagFetchMode = TagFetchMode.None
});
// TODO: Check out correct branch if needed
git.Checkout(committishOrBranchSpec, new CheckoutOptions(), Program.GitSignature);
}
}
}