                  :branch found-branch}))
             (partition 2 1 (concat commits [:end]))))))
 
+(defn print-repo-infos
+  [repo-infos]
+  (->> repo-infos
+       (map (fn [info]
+              (-> info
+                  (dissoc :gitdir)
+                  (assoc :repo (-> (remotes (:gitdir info)) :origin :fetch))
+                  (update-in [:sha] #(subs (str % "--------") 0 7)))))
+       (sort-by :ctime)
+       (print-table [:repo :proj :ver :branch :path :ctime :sha]))
+  (newline))
+
 (defn fresh-version [[prj ver :as dep]]
   (let [voom-meta (:voom (meta dep))
         ver-spec (or (:version voom-meta)

          repo-infos (mapcat #(newest-voom-ver-by-spec % "" {}) full-projs)]
      (if (< 1 (count repo-infos))
        (do
          (println "Multiple projects / locations match" (str \" dep \"\:))
          (doseq [r repo-infos]
            (prn r)))
        (box-repo-add (first repo-infos))))))

;; === lein entrypoint ===

     0 (do (println "No matching version found for" prj (pr-str ver-spec))
           dep)
     1 (assoc dep 1 (key (first groups)))
     (do (print "\nMultiple bump resolutions for:"
                prj (pr-str ver-spec) (pr-str voom-meta))
         (print-repo-infos (map #(first (val %)) groups))
         dep))))

(defn rewrite-project-file [input-str replacement-map]
