<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,59 +1,72 @@
 &#65279;using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Text;
 using dotGit;
-using System.IO;
 using dotGit.Objects;
-using System.Security.Cryptography;
-using System.Globalization;
-using dotGit.Objects.Storage;
-using dotGit.Refs;
-using dotGit.Index;
+
 
 namespace TestConsole
 {
   class Program
   {
-    static void Main(string[] args)
-    {
-      Repository repo = Repository.Open(@&quot;F:\code\dotgit&quot;);
-      Console.WriteLine(repo.Storage);
-      
-
-      WalkTree(repo.HEAD.Commit.Tree, 0);
+    #region History Builder (Example)
 
+    static Dictionary&lt;string,Commit&gt; _seen = new Dictionary&lt;string,Commit&gt;(5000);
+    static Queue&lt;Commit&gt; _pending = new Queue&lt;Commit&gt;();
+    
+    private static void BuildHistory()
+    {
 
+      while (_pending.Count &gt; 0)
+      {
+        Commit entry = _pending.Dequeue();
+        if (!_seen.Keys.Contains(entry.SHA))
+        {
+          _seen.Add(entry.SHA,  entry);
+        
+          if (entry.HasParents)
+          {
+             for (int idx = entry.Parents.Count - 1; idx &gt;= 0; idx--)
+              {
+                _pending.Enqueue(entry.Parents[idx]);
+              }
+          }
+        }
+      }
+    }
 
-      //dotGit.Objects.Storage.Pack.LoadPack(System.IO.Path.Combine(repo.GitDir.FullName, &quot;objects\\pack\\pack-209b24047b294e1d9a97680d62a5b9e1d4bef33c&quot;));
-
-      //Tag firstTag = repo.Tags[&quot;0.1-alpha&quot;];
-      //Branch master = repo.Branches[&quot;master&quot;];
-      Console.WriteLine(repo.HEAD.Commit.Tree.Children);
-
-      //IStorableObject obj = repo.Storage.GetObject(&quot;bf6ae5d04bcd11d035be3654973ff5339d3f4e1b&quot;);
-
-      //Index idx = repo.Index;
+    #endregion
 
-      //TreeNodeCollection nodes = repo.HEAD.Commit.Tree.Children;
+    private static string RepositoryPath = @&quot;f:\code\dotGit\&quot;;
 
-      //Commit obj = repo.Storage.GetObject&lt;Commit&gt;(&quot;5202e973f3d38c583b1a4645d23a638acc012c41&quot;);
-      //Blob b = repo.Storage.GetObject&lt;Blob&gt;(&quot;58d11b659b2c71a0cbdc0d037e237243cfec8a88&quot;);
+    /// &lt;summary&gt;
+    /// This example program opens a Git repository (specify the path above in the RepositoryPath variable) and reads the complete
+    /// history (all objects) from the pack file by using the BuildHistory() function.
+    /// &lt;/summary&gt;
+    /// &lt;param name=&quot;args&quot;&gt;&lt;/param&gt;
+    /// 
+    static void Main(string[] args)
+    {
+      Repository repo = Repository.Open(RepositoryPath);
 
-      //IStorableObject o = repo.Storage.GetObject(&quot;54040746289fd8beff929bcdcdd2b33be8a3700b&quot;);
+      Console.WriteLine(repo.Storage);
+      
+      DateTime start = DateTime.Now;
+      Console.WriteLine(&quot;Start building traversing history @ {0}&quot;, DateTime.Now);
 
-      //foreach (Tag tag in repo.Tags)
-      //{
-      //				Console.WriteLine(String.Format(&quot;Tag: '{0}' points to {1}&quot;, tag.Name, tag.SHA));
-      //}
+      _pending.Enqueue(repo.HEAD.Branch.Commit);
+      BuildHistory();
 
+      Console.WriteLine(&quot;Traversed history in {0} seconds&quot;, (DateTime.Now - start).TotalSeconds);
 
+#if DEBUG
       Console.ReadLine();
+#endif
 
+    }
 
+    #region More Examples 
 
-
-    }
     private static void WalkTree(Tree tree, int level)
     {
       Console.WriteLine(new String('-', level) + tree.Path);
@@ -65,7 +78,9 @@ namespace TestConsole
           WalkTree((Tree)n, level++);
       }
     }
-  }
 
+    #endregion
 
+  }
 }
+</diff>
      <filename>TestConsole/Program.cs</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>5623fe4ee76a120154d4d00ffb0d86374f64af41</id>
    </parent>
  </parents>
  <author>
    <name>skinny</name>
    <email>sjonge@hotmail.com</email>
  </author>
  <url>http://github.com/pheew/dotgit/commit/960101b943926ec20cc6a3b3a16fcc3ba22b1c1a</url>
  <id>960101b943926ec20cc6a3b3a16fcc3ba22b1c1a</id>
  <committed-date>2009-01-28T13:56:18-08:00</committed-date>
  <authored-date>2009-01-28T13:56:18-08:00</authored-date>
  <message>A new and improved Program.cs (test app)</message>
  <tree>6386584ad0b9fd9a0871be209129128794cf9dbf</tree>
  <committer>
    <name>skinny</name>
    <email>sjonge@hotmail.com</email>
  </committer>
</commit>
