anchor.diff:              `(nil ,string)
               `(,string nil)))))
   
  -(defun clone-github (owner name &key (alias (format nil "~A/~A" owner name)) (path "templates") branch)
  +(defun clone-github (owner name &key (alias (format nil "~A/~A" owner name)) (path "templates") branch (homedir (homedir)))
     (format *error-output* "install from github ~A/~A~%" owner name)
     (if (which "git")
  -      (let ((dir (merge-pathnames (format nil "~A/~A/" path alias) (homedir))))
  +      (let ((dir (merge-pathnames (format nil "~A/~A/" path alias) homedir)))
           (setq branch (if branch (format nil "-b ~A" branch) ""))
           (if (funcall (intern (string :probe-file*) :uiop) dir)
               ()
  
positive.code:                   path/)
          (expand path/ (ensure-directories-exist dir))
          (rename-file (first (directory (merge-pathnames "*/" dir)))
                       (merge-pathnames (format nil "~A/~A/" path alias) (homedir)))
          (delete-file path/)
          (funcall (intern (string :delete-directory-tree) :uiop) dir :if-does-not-exist :ignore :validate t)
          t)))
  
negative.code:                      branch
                       owner name
                       (namestring (ensure-directories-exist dir))))))
        (let* ((path/ (merge-pathnames (format nil "~A/~A.tgz" path alias) homedir))
               (dir (merge-pathnames ".expand/" (make-pathname :defaults path/ :name nil :type nil))))
          (funcall (intern (string :delete-directory-tree) :uiop) dir :if-does-not-exist :ignore :validate t)
          (setq branch (or branch "master"))
  