Function: vc-clone

vc-clone is a byte-compiled function defined in vc.el.gz.

Signature

(vc-clone REMOTE &optional BACKEND DIRECTORY REV)

Documentation

Clone repository REMOTE using version-control BACKEND, into DIRECTORY.

If successful, return the string with the directory of the checkout; otherwise return nil. REMOTE should be a string, the URL of the remote repository or the name of a directory (if the repository is local). If DIRECTORY is nil or omitted, it defaults to default-directory. If BACKEND is nil or omitted, the function iterates through every known backend in vc-handled-backends until one succeeds to clone REMOTE. If REV is non-nil, it indicates a specific revision to check out after cloning; the syntax of REV depends on what BACKEND accepts.

Source Code

;; Defined in /usr/src/emacs/lisp/vc/vc.el.gz
(defun vc-clone (remote &optional backend directory rev)
  "Clone repository REMOTE using version-control BACKEND, into DIRECTORY.
If successful, return the string with the directory of the checkout;
otherwise return nil.
REMOTE should be a string, the URL of the remote repository or the name
of a directory (if the repository is local).
If DIRECTORY is nil or omitted, it defaults to `default-directory'.
If BACKEND is nil or omitted, the function iterates through every known
backend in `vc-handled-backends' until one succeeds to clone REMOTE.
If REV is non-nil, it indicates a specific revision to check out after
cloning; the syntax of REV depends on what BACKEND accepts."
  (setq directory (expand-file-name (or directory default-directory)))
  (if backend
      (progn
        (unless (memq backend vc-handled-backends)
          (error "Unknown VC backend %s" backend))
        (vc-call-backend backend 'clone remote directory rev))
    (catch 'ok
      (dolist (backend vc-handled-backends)
        (ignore-error vc-not-supported
          (when-let ((res (vc-call-backend
                           backend 'clone
                           remote directory rev)))
            (throw 'ok res)))))))