我試圖用libgit2sharp
獲取文件的以前版本。我寧願工作目錄保持原樣,至少恢復到以前的狀態。我如何獲得一個文件的以前版本libgit2sharp
我最初的做法是試圖藏匿,結賬路徑上我想要的文件,是保存到一個字符串變量,然後藏匿流行。有沒有辦法隱藏流行音樂?我找不到它。這裏是我到目前爲止的代碼:
using (var repo = new Repository(DirectoryPath, null))
{
var currentCommit = repo.Head.Tip.Sha;
var commit = repo.Commits.Where(c => c.Sha == commitHash).FirstOrDefault();
if (commit == null)
return null;
var sn = "Stash Name";
var now = new DateTimeOffset(DateTime.Now);
var diffCount = repo.Diff.Compare().Count();
if(diffCount > 0)
repo.Stashes.Add(new Signature(sn, "[email protected]", now), options: StashModifiers.Default);
repo.CheckoutPaths(commit.Sha, new List<string>{ path }, CheckoutModifiers.None, null, null);
var fileText = File.ReadAllText(path);
repo.CheckoutPaths(currentCommit, new List<string>{path}, CheckoutModifiers.None, null, null);
if(diffCount > 0)
; // stash Pop?
}
如果有比使用存儲更容易的方法,那也可以。
謝謝。 只是爲別人說明:@nulltoken使用的方法'Repository.CheckoutPaths'在v0.13中不存在。但它包含在vNext分支中。所以當發佈時(或者如果你使用vAlpha),這將會很好地工作。在此之前,您需要使用稍微不同的簽名來重寫這些呼叫。 – Shlomo
此外,感謝您在一個偉大的包裝上的工作。大的幫助。 – Shlomo
@Shlomo非常感謝! :) – nulltoken