git.fiddlerwoaroof.com
repository.lisp
4cc1ee49
 (in-package :fwoar.cl-git)
 
 (defun root-of (repo)
   (typecase repo
     (repository (root repo))
     ((or pathname string) (namestring
                            (truename repo)))))
 
 (defun ref (repo id)
eff0a06d
   "Given a REPOsitory and a ref ID return the ref-id object."
4cc1ee49
   (let ((repo-root (root-of repo)))
     (or (alexandria:when-let ((object-file (loose-object repo id)))
           (make-instance 'loose-ref
                          :repo repo-root
                          :hash id
                          :file object-file))
         (multiple-value-bind (pack offset) (find-object-in-pack-files repo-root id)
           (when pack
             (make-instance 'packed-ref
                            :hash id
                            :repo repo-root
                            :offset offset
                            :pack pack))))))