public
Last active

API design thoughts for libgit2sharp

  • Download Gist
libgit2sharp.cs
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
using (var repo = new Repository("path\to\repo.git"))
{
// Object lookup
var obj = repo.Lookup("sha");
var commit = repo.Lookup<Commit>("sha");
var tree = repo.Lookup<Tree>("sha");
var tag = repo.Lookup<Tag>("sha");
 
// Rev walking
foreach (var c in repo.Commits.Walk("sha")) { }
var commits = repo.Commits.StartingAt("sha").Where(c => c).ToList();
var sortedCommits = repo.Commits.StartingAt("sha").SortBy(SortMode.Topo).ToList();
 
// Refs
var reference = repo.Refs["refs/heads/master"];
var allRefs = repo.Refs.ToList();
foreach (var c in repo.Refs["HEAD"].Commits) { }
foreach (var c in repo.Head.Commits) { }
var headCommit = repo.Head.Commits.First();
var allCommits = repo.Refs["HEAD"].Commits.ToList();
var newRef = repo.Refs.CreateFrom(reference);
var anotherNewRef = repo.Refs.CreateFrom("sha");
 
// Branches
// special kind of reference
var allBranches = repo.Branches.ToList();
var branch = repo.Branches["master"];
var remoteBranch = repo.Branches["origin/master"];
var localBranches = repo.Branches.Where(p => p.Type == BranchType.Local).ToList();
var remoteBranches = repo.Branches.Where(p => p.Type == BranchType.Remote).ToList();
var newBranch = repo.Branches.CreateFrom("sha");
var anotherNewBranch = repo.Branches.CreateFrom(newBranch);
repo.Branches.Delete(anotherNewBranch);
 
// Tags
// really another special kind of reference
var aTag = repo.Tags["refs/tags/v1.0"];
var allTags = repo.Tags.ToList();
var newTag = repo.Tags.CreateFrom("sha");
var newTag2 = repo.Tags.CreateFrom(commit);
var newTag3 = repo.Tags.CreateFrom(reference);
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.