Make checking out files with a client work

This commit is contained in:
Tom Willemse 2021-01-22 21:35:20 -08:00
parent 2b270a93f0
commit a60278efa7
2 changed files with 14 additions and 8 deletions

View file

@ -524,10 +524,12 @@ optional BUFFER is non-nil, output goes in that buffer. Uses
;; Do NOT need to support "-t". ;; Do NOT need to support "-t".
;; Do NOT need to support the specification of multiple files. ;; Do NOT need to support the specification of multiple files.
(defun p4-lowlevel-edit (file) (cl-defun p4-lowlevel-edit (file &key client)
"Tell Perforce we want to edit FILE. "Tell Perforce we want to edit FILE.
Returns non-nil on success or nil on failure (or raises an error)." Returns non-nil on success or nil on failure (or raises an error)."
(p4-lowlevel-command-or-error (list "edit" file))) (let* ((client-args (if client (list "-c" client)))
(args (append client-args (list "edit" file))))
(p4-lowlevel-command-or-error args)))
;; Here's what we need to support from the "p4 filelog" command, at least for ;; Here's what we need to support from the "p4 filelog" command, at least for
;; the time being: ;; the time being:
@ -696,14 +698,15 @@ resolve. Raises an error if the command fails."
;; DO need to support the specification of a file revision. ;; DO need to support the specification of a file revision.
;; Do NOT need to support the specification of multiple files. ;; Do NOT need to support the specification of multiple files.
(defun p4-lowlevel-sync (file &optional rev force) (cl-defun p4-lowlevel-sync (file &key rev force client)
"Call `p4 sync' for FILE. "Call `p4 sync' for FILE.
If optional REV is specified, use that revision specifier. If If optional REV is specified, use that revision specifier. If
optional FORCE is non-nil, pass the `-f' flag." optional FORCE is non-nil, pass the `-f' flag."
(setq rev (p4-lowlevel-canonicalize-revision rev)) (setq rev (p4-lowlevel-canonicalize-revision rev))
(let* ((fullfile (if rev (concat file rev) file)) (let* ((fullfile (if rev (concat file rev) file))
(force-args (if force (list "-f"))) (force-args (if force (list "-f")))
(args (append (list "sync") force-args (list fullfile)))) (client-args (if client (list "-c" client)))
(args (append client-args (list "sync") force-args (list fullfile))))
(p4-lowlevel-command-or-error args))) (p4-lowlevel-command-or-error args)))
(defun p4-lowlevel-integrate (from-file to-file &optional rev1 rev2 force) (defun p4-lowlevel-integrate (from-file to-file &optional rev1 rev2 force)

View file

@ -269,7 +269,7 @@ special case of a Perforce file that is added but not yet committed."
(delete-file file) (delete-file file)
(rename-file tempfile file)) (rename-file tempfile file))
(p4-lowlevel-revert file :client vc-p4-client)) (p4-lowlevel-revert file :client vc-p4-client))
(p4-lowlevel-edit file)) (p4-lowlevel-edit file :client vc-p4-client))
(error "File %s already opened for delete." file)) (error "File %s already opened for delete." file))
(p4-lowlevel-add file)))) (p4-lowlevel-add file))))
@ -337,8 +337,8 @@ comment COMMENT."
(eq rev t)) (eq rev t))
(setq rev (vc-file-getprop file 'vc-latest-version)))) (setq rev (vc-file-getprop file 'vc-latest-version))))
(if (not (string= rev (vc-file-getprop file 'vc-workfile-version))) (if (not (string= rev (vc-file-getprop file 'vc-workfile-version)))
(p4-lowlevel-sync file rev)) (p4-lowlevel-sync file :rev rev :client vc-p4-client))
(p4-lowlevel-edit file)) (p4-lowlevel-edit file :client vc-p4-client))
(vc-p4-state file nil t)) (vc-p4-state file nil t))
(defun vc-p4-revert (file contents-done) (defun vc-p4-revert (file contents-done)
@ -348,7 +348,10 @@ comment COMMENT."
((null action) ((null action)
;; If Perforce doesn't believe that we edited the file, we have ;; If Perforce doesn't believe that we edited the file, we have
;; to use sync instead of revert. ;; to use sync instead of revert.
(p4-lowlevel-sync file (vc-workfile-version file) t)) (p4-lowlevel-sync file
:rev (vc-workfile-version file)
:force t
:client vc-p4-client))
(t (t
(p4-lowlevel-revert file :client vc-p4-client))) (p4-lowlevel-revert file :client vc-p4-client)))
(if (string= action "add") (if (string= action "add")