       (.setNoCheckout true))
     (.call)))
 
-(defn load-repo [url]
+(defn load-repo ^Git [url]
   (let [path (data-dir url)]
     (if (.exists (io/as-file path))
       (doto (jgit.p/load-repo path)


(def commit-list jgit.q/rev-list)

(defn- complete-id [ent side reader]
  (let [id (.getId ent side)]
    (if (.isComplete id)
      id
      (when-first [obj-id (.resolve reader id)]

      (finally 
        (.close stream)))))

(defn- open-diff [^DiffEntry entry side ^ObjectReader reader]
  (let [mode (.getMode entry side)]
    (when (and (not= FileMode/MISSING mode)
               (= Constants/OBJ_BLOB (.getObjectType mode)))
      (let [id (complete-id entry side reader)
            path (.getPath entry side)]
        (load-obj id path reader)))))

(defn- parse-diff-changes [^DiffEntry entry ^DiffAlgorithm alg ^ObjectReader reader]
  (when-not (or (= FileMode/GITLINK (.getOldMode entry))
                (= FileMode/GITLINK (.getNewMode entry))
                (nil? (.getOldId entry))
