internal Commit(Repo repo, ObjectId objId, byte[] objectContents) : base(repo, objId) { var texty = TextyObject.Parse(objectContents); var parents = new List<ObjectId>(); foreach (var kvp in texty.Attributes) { switch (kvp.Key) { case "tree": if (!Tree.IsZero) throw new Exception("Too many trees!"); Tree = ObjectId.Parse(kvp.Value); break; case "parent": parents.Add(ObjectId.Parse(kvp.Value)); break; case "author": Author = PersonTime.Parse(kvp.Value); break; case "committer": Committer = PersonTime.Parse(kvp.Value); break; default: throw new Exception("Unexpected commit attribute: " + kvp.Key); } } }
internal Blob(Repo repo, ObjectId objId, byte[] bytes) : base(repo, objId) { if (bytes == null) throw new ArgumentNullException(nameof(bytes)); this.Bytes = bytes; }
protected GitObject(Repo repo, ObjectId objId) { if (repo == null) throw new ArgumentNullException(nameof(repo)); this.mRepo = repo; this.ID = objId; }
static void Main(string[] args) { var repo = new Repo(Environment.CurrentDirectory); var repo = new Repo(@"c:\src\austinwise.github.com\"); foreach (var objId in repo.EnumerateObjects()) { var info = repo.ReadObject(objId); Console.WriteLine("{0}: {1}", objId.IdStr, info.ID); } }
internal AnnotedTag(Repo repo, ObjectId objId, byte[] objectContents) : base(repo, objId) { var texty = TextyObject.Parse(objectContents); var dict = texty.Attributes.ToDictionary(kvp => kvp.Key, kvp => kvp.Value); string tagType = dict["type"]; if (tagType != "commit") throw new Exception("Tag type is not commit. Is that ok?"); Tree = ObjectId.Parse(dict["object"]); Tagger = PersonTime.Parse(dict["tagger"]); TagDescription = texty.Body; }
internal Tree(Repo repo, ObjectId objId, byte[] objectContents) : base(repo, objId) { }