git.fiddlerwoaroof.com
protocol.lisp
4cc1ee49
 (in-package :fwoar.cl-git)
 
489818ad
 (defclass+ blob (git-object)
657ab332
   ((%data :reader data :initarg :data)))
 
489818ad
 (defgeneric -extract-object-of-type (type s repository &key  &allow-other-keys)
   (:method :around (type s repository &key hash)
     (let ((result (call-next-method)))
       (prog1 result
         (when (typep result 'git-object)
           (setf (hash result) hash)))))
 
4cc1ee49
   (:method ((type (eql :blob)) s repository &key)
657ab332
     (blob s))
4cc1ee49
 
   (:method ((type (eql :tag)) s repository &key)
     s))
 
 (defgeneric component (component object)
   (:argument-precedence-order object component)
   (:method (component (object git-ref))
     (component component (extract-object object)))
   (:method ((component sequence) object)
     (reduce (lambda (cur next)
               (component next cur))
             component
             :initial-value object)))