       (let [tag (str "voom-branch--" branch)]
         (git {:gitdir gitdir} "tag" "-f" tag (str "origin/" branch))))))
 
-(defn tag-all-repos
-  [& {:keys [fetch]}]
+(defn p-repos
+  "Call f once for each repo dir, in parallel. When all calls are
+  done, return nil."
+  [f]
   (->> (all-repos-dirs)
-       (map #(future
-               (when fetch
-                 (fetch-all [%]))
-               (tag-repo-projects %)))
+       (map #(future (f %)))
        doall
        (map deref)
        dorun))

  (let [voom-meta (:voom (meta dep))
        ver-spec (or (:version voom-meta)
                     (re-find #"^[^.]+." ver))
        groups (->> (newest-voom-ver-by-spec prj ver-spec voom-meta)
                    (map #(assoc % :voom-ver (format-voom-ver
                                              (update-in % [:sha] subs 0 7))))
                    (group-by :voom-ver))]

    (when (seq tags)
      (apply git {:gitdir gitdir} "tag" "--delete" tags)
      nil)))

(defn parse-tag
  [tag]
