本文整理汇总了C#中LibGit2Sharp.Repository.CheckoutPaths方法的典型用法代码示例。如果您正苦于以下问题:C# Repository.CheckoutPaths方法的具体用法?C# Repository.CheckoutPaths怎么用?C# Repository.CheckoutPaths使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LibGit2Sharp.Repository
的用法示例。
在下文中一共展示了Repository.CheckoutPaths方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Revert
public static void Revert(FileInfo file)
{
using (var repository = new LibGit2Sharp.Repository(file.DirectoryName))
{
repository.CheckoutPaths("master", new[] { file.FullName }, new CheckoutOptions { CheckoutModifiers = CheckoutModifiers.Force });
Log.Add($"Revert: {file.Name}");
}
}
示例2: FolderSync
/// <summary>
/// Synchronizes a folder
/// </summary>
/// <param name="repoPath">Main repository path</param>
/// <param name="folderPath">The folder to synchronize (checkout). Could be the model path or the layer path</param>
/// <param name="forceCheckout">Forces the update from the latest commit (head tip)</param>
/// <returns>A SysVersionControlItem with all the files that have been affected</returns>
public static SysVersionControlTmpItem FolderSync(string repoPath, string folderPath, bool forceCheckout)
{
SysVersionControlTmpItem tmpItem = new SysVersionControlTmpItem();
CheckoutOptions checkoutOptions = new CheckoutOptions
{
CheckoutModifiers =
forceCheckout
? CheckoutModifiers.Force
: CheckoutModifiers.None
};
string tipSha;
string folderName = folderPath.Split('\\').Last();
using (Repository repo = new Repository(repoPath))
{
repo.CheckoutPaths(repo.Head.Tip.Id.Sha, new[] { folderPath }, checkoutOptions);
tipSha = repo.Head.Tip.Id.Sha;
InitTmpItemFromTree(repoPath, repo.Head.Tip.Tree[folderName].Target as Tree, ref tmpItem);
}
return tmpItem;
}
示例3: FileGetVersion
/// <summary>
/// Get a single file version from the git repository
/// </summary>
/// <param name="repoPath">Repository main path</param>
/// <param name="tmpItem">The temporary item table holding the sha commit</param>
/// <returns>a temporary file path</returns>
public static string FileGetVersion(string repoPath, string fileName, SysVersionControlTmpItem tmpItem)
{
string indexPath = tmpItem.InternalFilename.Replace(repoPath, string.Empty);
CheckoutOptions options = new CheckoutOptions();
options.CheckoutModifiers = CheckoutModifiers.Force;
using (Repository repo = new Repository(repoPath))
{
var commit = repo.Lookup<Commit>(tmpItem.GTXSha);
if (commit != null)
{
try
{
repo.CheckoutPaths(commit.Id.Sha, new[] { fileName }, options);
}
catch (MergeConflictException ex)
{
//should not reach here as we're forcing checkout
throw ex;
}
}
}
return fileName;
}
示例4: FileUndoCheckout
/// <summary>
/// Resets the changes of a file to it's HEAD last commit
/// </summary>
/// <param name="repoPath">Repository main path</param>
/// <param name="fileName">The file path</param>
/// <returns>True if reset was successful false if not</returns>
public static bool FileUndoCheckout(string repoPath, string fileName, bool forceCheckout)
{
FileInfo fileInfo = new FileInfo(fileName);
using (Repository repo = new Repository(repoPath))
{
string indexPath = fileInfo.FullName.Replace(repo.Info.WorkingDirectory, string.Empty);
CheckoutOptions checkoutOptions = new CheckoutOptions
{
CheckoutModifiers =
forceCheckout
? CheckoutModifiers.Force
: CheckoutModifiers.None
};
var fileCommits = repo.Head.Commits.Where(c => c.Parents.Count() == 1 &&
c.Tree[indexPath] != null &&
(c.Parents.FirstOrDefault().Tree[indexPath] == null ||
c.Tree[indexPath].Target.Id != c.Parents.FirstOrDefault().Tree[indexPath].Target.Id)
);
if (fileCommits.Any())
{
var lastCommit = fileCommits.First();
repo.CheckoutPaths(lastCommit.Id.Sha, new[] { fileName }, checkoutOptions);
}
return true;
}
}
示例5: Update
public static string Update(string url, Log log, string directory, string repoDirectory = null)
{
if (string.IsNullOrWhiteSpace(url))
{
Utility.Log(LogStatus.Skipped, "Updater", string.Format("No Url specified - {0}", url), log);
}
else
{
try
{
var dir = Path.Combine(directory, url.GetHashCode().ToString("X"), "trunk");
if (Repository.IsValid(dir))
{
using (var repo = new Repository(dir))
{
repo.Config.Set("user.name", Config.Instance.Username);
repo.Config.Set("user.email", Config.Instance.Username + "@joduska.me");
repo.Fetch("origin");
if (repoDirectory != null)
{
repo.CheckoutPaths("origin/master", new List<String>() { repoDirectory }, new CheckoutOptions { CheckoutModifiers = CheckoutModifiers.Force });
}
else
{
repo.Checkout("origin/master", new CheckoutOptions { CheckoutModifiers = CheckoutModifiers.Force });
}
}
}
else
{
var oldPath = Path.Combine(directory, url.GetHashCode().ToString("X"));
if (Directory.Exists(oldPath))
{
Directory.Delete(oldPath, true);
}
Repository.Clone(url, dir, new CloneOptions { Checkout = true });
using (var repo = new Repository(dir))
{
repo.Config.Set("user.name", Config.Instance.Username);
repo.Config.Set("user.email", Config.Instance.Username + "@joduska.me");
}
}
return dir;
}
catch (Exception ex)
{
Utility.Log(LogStatus.Error, "Updater", string.Format("{0} - {1}", ex.Message, url), log);
}
}
return string.Empty;
}