Visual Studio 代码为 perforce 的 mergetool

Visual Studio Code as mergetool for perforce

使用 VS Code 作为 Perforce 的 difftool,您可以在 P4 首选项对话框中编写。

Location: Path to exe
Arguments: -n -d %1 %2

但是你写什么来使用VS Code作为合并工具, P4 说它必须包括 %1 %2 and %r?

我快速 google 查看 VSCode 是否有合并选项,但看起来没有: https://github.com/microsoft/vscode/issues/37350

您最好的选择是执行命令行解析,允许 Perforce 执行合并以生成一个已插入冲突标记的文件,然后使用 VSCode 作为编辑器。

C:\Perforce\test\merge>p4 sync foo.txt
//stream/main/merge/foo.txt#2 - is opened and not being changed
... //stream/main/merge/foo.txt - must resolve #2 before submitting

C:\Perforce\test\merge>p4 set P4EDITOR="C:\Program Files\Microsoft VS Code\Code.exe -n -w"

C:\Perforce\test\merge>p4 resolve
c:\Perforce\test\merge\foo.txt - merging //stream/main/merge/foo.txt#2
Diff chunks: 0 yours + 0 theirs + 0 both + 1 conflicting
Accept(a) Edit(e) Diff(d) Merge (m) Skip(s) Help(?) e: e

或者,您可以使用 p4 merge3(或者就此而言 diff3 或任何其他可以将其输出写入纯文本格式的合并实用程序来制作伪造的 VSCode 合并工具) 然后在 VSCode:

中打开结果
C:\Perforce\test\merge>cat vsmerge.bat
@p4 merge3 %1 %2 %3 > %4
@code -n -w %4

C:\Perforce\test\merge>p4 set P4MERGE=vsmerge.bat

C:\Perforce\test\merge>p4 resolve
c:\Perforce\test\merge\foo.txt - merging //stream/main/merge/foo.txt#2
Diff chunks: 0 yours + 0 theirs + 0 both + 1 conflicting
Accept(a) Edit(e) Diff(d) Merge (m) Skip(s) Help(?) e: m

这与使用 VSCode 作为编辑器并选择 "e" 产生的结果基本相同,但如果您只想使用 VSCode 进行合并而不想使用 VSCode,则可能更可取希望它在您编辑表单时弹出。