   [_]
   (time (p-repos (fn [p] (clear-voom-tags p) (tag-repo-projects p)))))
 
+;; ===== Git import =====
 
 (defn git-commits
   [gitdir & args]

                                      ))))))]
     (prn f)))

  (pldb/with-db db3
    (l/run 10 [obj-sha]
     (l/fresh [sha]

               (ancestoro c p)
               (l/== q true))))))

  (time
   (let [_ l/lvar]
     (doall
      (pldb/with-db db2
        (l/run* [q]
                (r-proj (_) q (_) (_) (_) (_) (_)))))))
  (time
   (count
    (into #{}
          (let [_ l/lvar]
            (doall
             (pldb/with-db db2
               (l/run* [p M m i s]
                       (r-proj (_) p M m i (_) s)
                       (l/pred p #(.startsWith (str %) "lono")))))))))

  (time
   (doseq [f
           (into #{}
                 (let [_ l/lvar
                       sha (sha/mk "36bb052caf1d560448dfd9e3c81e19d8e210f1a1")
                       pname 'b2b/b2b-server]
                   (doall
                    (pldb/with-db db2
                      (l/run 20 [A]
                             (l/fresh [p M m i q s p2 M2 m2 i2 q2 s2 tpath tsha osha otsha bsha obsha oosha ootsha oobsha]
                                      ;; For commit SHA, find the location and version of PNAME
                                      (r-commit sha (_) tsha)
                                      (r-proj bsha pname M m i q s)
                                      (obj-patho tsha () "project.clj" :blob bsha tpath)
                                      ;; Find an ancestor of SHA with a project at the same location
                                      (ancestoro sha osha)
                                      (r-commit osha (_) otsha)
                                      (obj-patho otsha () "project.clj" :blob obsha tpath)
                                      ;; Where the very previous commit at this location has a different project.clj blob
                                      (r-commit-parent osha oosha)
                                      (r-commit oosha (_) ootsha)
                                      (l/!= obsha oobsha)
                                      (obj-patho ootsha () "project.clj" :blob oobsha tpath)
                                      ;; And found project.clj is also different from the current
                                      (r-proj obsha pname M2 m2 i2 q2 s2)
                                      (l/!= bsha obsha)
                                      ;; Share the details
                                      (l/== A [tpath osha [p M m i q s] [p2 M2 m2 i2 q2 s2]])
                                      ))))))]
     (prn f)))

  (time
   (doseq [f
           (into #{}
                 (let [_ l/lvar
                       sha (sha/mk "36bb052caf1d560448dfd9e3c81e19d8e210f1a1")
                       pname 'b2b/b2b-server]
                   (doall
                    (pldb/with-db db2
                      (l/run 20 [a]
                             (l/fresh [p M m i q s p2 M2 m2 i2 q2 s2 tpath tsha osha otsha bsha stsha ostsha ootsha oobsha ptpath thing]
                                      ;; For commit SHA, find the location and version of PNAME
                                      (r-commit sha (_) tsha)
                                      (r-proj bsha pname M m i q s)
                                      (obj-patho tsha () "project.clj" :blob bsha tpath)
                                      ;; Locate the project directory
                                      (l/conso thing ptpath tpath)
                                      (obj-patho tsha () thing :tree stsha ptpath)
                                      ;; Find an ancestor of SHA with a project directory at the same location
                                      (ancestoro sha osha)
                                      (r-commit osha (_) otsha)
                                      (obj-patho otsha () thing :tree ostsha ptpath)
                                      (l/!= stsha ostsha)
                                      (l/== a [tpath sha osha [p M m i q s] [p2 M2 m2 i2 q2 s2]])
                                      ))))))]
     (prn f)))

(time ; full
   (doseq [f
           (into #{}
                 (let [_ l/lvar
                       sha (sha/mk "36bb052caf1d560448dfd9e3c81e19d8e210f1a1")
                       pname 'b2b/b2b-server]
                   (doall
                    (pldb/with-db db2
                      (l/run 20 [a]
