Perforce和Emacs

8
我想设置emacs以便在不使用p4v的情况下使用perforce。我查看了Emacs Wiki网站,但似乎只有两个选项 - 都相当陈旧。第一个选项是p4.el,最后更新于2004年。第二个选项是与emacs VC组件集成,最后更新于2007年8月。
来自SO的第二个链接似乎建议使用p4.el。这仍然是推荐的建议吗?有人有什么技巧或诀窍可以分享吗?
非常感谢您的帮助和建议。
Chris

有趣的是你提到了这个问题 - 我目前遇到的另一个问题是似乎无法让git-p4工作!这真的很烦人,因为如果我能让它运行起来,我可能会绕过大部分Perforce交互。 - cristobalito
2个回答

4

是的,p4.el仍然是将Perforce集成到Emacs中的推荐方式。它被很好地实现了,这也解释了为什么自2004年以来没有更新。

我进行了一些定制,主要是添加和禁用一些快捷键。

我还添加了从Emacs调用一些p4v命令的可能性。

(defun invoke-p4v-cmd (cmd)
  (let ((file (if (equal major-mode 'dired-mode)
                  (dired-get-file-for-visit)
                (buffer-file-name))))
    (when file
      (shell-command (concat "\"c:/Program Files/Perforce/p4v.exe\" -cmd \"" cmd " " file "\" &")))))

(defun op:p4v-timelapse ()
  "show revision tree"
  (interactive)
  (invoke-p4v-cmd "annotate"))

(define-key p4-prefix-map "T" 'op:p4v-timelapse)


(defun op:p4v-tree ()
  "show revision tree"
  (interactive)
  (invoke-p4v-cmd "tree"))

(define-key p4-prefix-map "g" 'op:p4v-tree)

(defun op:p4v-history ()
  "Show history"
  (interactive)
  (invoke-p4v-cmd "history"))

(define-key p4-prefix-map "x" 'op:p4v-history)

谢谢你的回答。只是出于兴趣,我假设 p4.el 不支持暂存(因为暂存是后来才出现的),对吗? - cristobalito
我对Perforce还很陌生,但似乎p4 shelve类似于git stash。你可以基于p4.el轻松实现一个p4-shelve emacs函数。 - Oleg Pavliv
自10.6版本以来,CVS已经进行了一些工作;请参阅http://p4el.cvs.sourceforge.net/viewvc/p4el/p4/以获取未发布的10.7版本(尽管我不知道它有多稳定)。 - J. C. Salomon

3
我已经在 https://github.com/gareth-rees/p4.el 开始了一个新的 p4.el 分支,如果您是一个勇敢的 Emacs 用户并且不介意偶尔出现的 bug,您可能想试试它。(发送带有错误修复的 pull 请求给我!)我一直在努力提高用户体验,在 Perforce 服务器无法稳定连接时(例如使用移动数据连接时),尤其是使大多数用户操作异步进行,因此工作很少会因等待 Perforce 服务器响应而被阻塞。
我也正在添加对于新的 Perforce 特性如 p4 statusp4 annotate 的支持,修复 bug 并且更新代码。 这里是关于目前完成情况的博客。

我已经进来了,很高兴看到cygwin的支持 :) - Miserable Variable
@MiserableVariable:我自己不使用Cygwin Perforce,所以它很容易出现问题(或者我可能已经弄坏了它)。欢迎提供错误报告和补丁! - Gareth Rees
+1 谢谢!在 SourceForge 上的旧版 p4.el 与 Emacs-24 不兼容(加载时会挂起),而您的版本目前似乎运行良好! - Bogatyr
我现在才回到这个问题 - 这听起来很棒,Gareth,我一定会去看看的。 - cristobalito
与Emacs 24.5.1兼容良好。 - Axel Bregnsbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接