         (conj out e)
         (recur (f-entry r) (conj out e))))))
 
-(defn file-mtime
-  [filepath]
+(defn file-mtime [filepath]
   (java.util.Date. (.lastModified (java.io.File. filepath))))
 
-(defn file-size
-  [filepath]
+(defn file-size [filepath]
   (.length (clojure.java.io/file filepath)))
 
 ; TODO: If times differ, compute hash to check for differences

        (conj out e)
        (recur (f-entry r) (conj out e))))))

(defn blob
  [hash-hex]
  (to-str (second (read-object hash-hex))))

(defn branch
  [b]
  (let [filepath (str (git-root) "refs/heads/" b)]
    (clojure.string/replace (slurp filepath) #"\n" "")))


               (str "Ambiguous object prefix '" hash-prefix "'")))
      :else (second (first matches)))))

(defn read-object [hash-prefix]
  (let [hash-hex (complete-hash hash-prefix)
        filepath (str (git-root) 
                      "objects/"
