branch: externals/vc-jj
commit 9d1980a06a97b902ce172450e82d08a643ad5779
Author: Kristoffer Balintona <[email protected]>
Commit: Kristoffer Balintona <[email protected]>
feat: Implement `vc-jj-clone'
---
NEWS.org | 2 +-
vc-jj.el | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/NEWS.org b/NEWS.org
index ef9360907a..f2eed5f95f 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -33,7 +33,7 @@
=vc-jj-log-view-mode=: =vc-jj-bookmark-set=, =vc-jj-bookmark-delete=, and
=vc-jj-bookmark-rename=. These have bindings under the "b" prefix key
in =vc-jj-log-view-mode=: =vc= buffers.
-
+- Added =vc-jj-clone=, making it possible to run =vc-clone=.
- Added list of other jj support packages for Emacs to the
documentation -- not everyone is looking for vc integration :)
diff --git a/vc-jj.el b/vc-jj.el
index 9b98cfdb10..0e72686518 100644
--- a/vc-jj.el
+++ b/vc-jj.el
@@ -175,6 +175,16 @@ stderr and1 `vc-do-command' cannot separate output to
stdout and stderr."
nil
(append global-switches flags filesets))))
+(defun vc-jj-clone (remote directory rev)
+ "Attempt to clone REMOTE repository into DIRECTORY at revision REV.
+On failure, return nil. Upon success, return DIRECTORY."
+ (let ((successp (ignore-errors
+ (vc-jj--command-dispatched nil 0 nil "git" "clone"
"--colocate" remote directory))))
+ (when (and successp rev)
+ (let ((default-directory directory))
+ (vc-jj--command-dispatched nil 0 nil "new" rev "--quiet")))
+ (when successp directory)))
+
(defun vc-jj-registered (file)
"Check whether FILE is registered with jj."
(and-let* ((vc-jj-program (executable-find vc-jj-program))