Tôi đang cố gắng sử dụng libgit2sharp
để tải xuống phiên bản trước của tệp. Tôi muốn thư mục làm việc vẫn như cũ, ít nhất được khôi phục về điều kiện trước đó.Làm cách nào để tải xuống phiên bản trước của một tệp bằng libgit2sharp
Cách tiếp cận ban đầu của tôi là thử stash, kiểm tra đường dẫn trên tệp tôi muốn, lưu nó vào một biến chuỗi, sau đó chặn cửa sổ bật lên. Có cách nào để chặn đứng pop không? Tôi không thể tìm thấy nó dễ dàng. Dưới đây là mã tôi có cho đến thời điểm này:
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?
}
Nếu có cách tiếp cận dễ dàng hơn sử dụng Stash, điều đó cũng có tác dụng tuyệt vời.
Cảm ơn. Chỉ cần một lưu ý cho người khác: phương thức 'Repository.CheckoutPaths' sử dụng @nulltoken không tồn tại trong v0.13. Nhưng nó được bao gồm trong chi nhánh vNext. Vì vậy, khi phát hành, (hoặc nếu bạn đang sử dụng vAlpha) điều này sẽ làm việc hoàn hảo. Cho đến lúc đó, bạn sẽ cần phải viết lại các cuộc gọi đó bằng chữ ký hơi khác. – Shlomo
Ngoài ra, cảm ơn công việc của bạn về một gói tuyệt vời. Trợ giúp lớn. – Shlomo
@Shlomo Cảm ơn rất nhiều! :) – nulltoken