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)))))))