如何在NGit中使用Ls-Remote

时间:2012-12-02 09:30:40

标签: .net git gitsharp ngit

我希望使用NGit进行以下操作,但在将近一整天后我完全失去了:

  • 创建一个空仓库
  • 使用网址和凭据添加远程“来源”
  • 运行Ls-Remote以获取master
  • origin分支的最新哈希值

如果有人能告诉我这个例子,我会非常感激

1 个答案:

答案 0 :(得分:1)

using System.Collections.Generic;
using System.Linq;
using NGit.Api;
using Sharpen;

// git init
string path = @"C:\git\repo1";
Git git = Git.Init().SetDirectory(new FilePath(path)).Call();
// after init, you can call the below line to open
// Git git = Git.Open(new FilePath(path));

// git remote origin
StoredConfig config = git.GetRepository().GetConfig();
config.SetString("remote", "origin", "url", @"http://user:password@github.com/user/repo1.git");
config.Save();

// git ls-remote
ICollection<Ref> refs = git.LsRemote().SetRemote("origin").Call();
Ref master = refs.FirstOrDefault(a => a.GetName() == "refs/heads/master");
if (master != null)
{
    string hash = master.GetObjectId().Name;
}