 
 (defn find-project-files
   [^File d]
-  (let [{:keys [out err exit]} (git {:gitdir d} "ls-files" "project.clj" "**/project.clj")
-        projects (when-not (empty? out)
-                   (s/split-lines out))]
-    (map #(str (.getParent d) "/" %) projects)))
+  (let [{:keys [lines]} (git {:gitdir d} "ls-files" "project.clj" "**/project.clj")]
+    (map #(str (.getParent d) "/" %) lines)))
 
 (defn contains-sha? [d sha]
   (prn "contains-sha?" d sha)

        rtn (apply sh "git" all-args)]
    (when-not (zero? (:exit rtn))
      (throw (ex-info "git error" (assoc rtn :git all-args))))
    rtn))

;; === git sha-based versions ===


                  qprj)
        git-ptn (str #"\(defproject\s+" prj-ptn #"\s+\"" ver-ptn \")
        _ (prn :git-ptn git-ptn)
        {:keys [lines]} (git {:gitdir gitdir} "log" "--name-only" "--all" "--pretty=format:%H"
                             "-G" git-ptn "--" "project.clj" "**/project.clj")]
    (->> lines
         (reductions (fn [[sha v] line]
                       (cond
