예제 #1
0
 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);
         }
     }
 }
예제 #2
0
 internal Blob(Repo repo, ObjectId objId, byte[] bytes)
     : base(repo, objId)
 {
     if (bytes == null)
         throw new ArgumentNullException(nameof(bytes));
     this.Bytes = bytes;
 }
예제 #3
0
        protected GitObject(Repo repo, ObjectId objId)
        {
            if (repo == null)
                throw new ArgumentNullException(nameof(repo));

            this.mRepo = repo;
            this.ID = objId;
        }
예제 #4
0
 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);
     }
 }
예제 #5
0
        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;
        }
예제 #6
0
 internal Tree(Repo repo, ObjectId objId, byte[] objectContents)
     : base(repo, objId)
 {
 }