- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
myprogram.cmd
在 PATH 中;
myprogram.cmd
使用 %~dp0
来确定它所在的文件夹;
我已将 @echo %~dp0
包含到 myprogram.cmd
中进行调试;
当我从任何地方调用 myprogram.cmd
时,它工作得很好,显示了 myprogram.cmd
所在的文件夹;
当我调用 hg extdiff -p myprogram.cmd
时,它不起作用,显示类似 c:\Users\Username\AppData\Local\Temp\extdiff.3n8op2\
.
这里是hgrc
文件的相关部分:
[extensions]
hgext.extdiff =
我做错了什么? %~dp0
不应该返回批处理文件的驱动器和路径吗?我用什么代替?我是否必须对 Mercurial 存储库应用一些特殊配置?将 myprogram.cmd
的完整路径传递给 hg extdiff -p
不是一个选项,除非它是自动完成的。
最佳答案
%~dp0 技巧是一个弥天大谎。它实际上并不是一个神奇的变量,它只是对 %0 的操作(或者你把 ~dp 放在前面的任何一个变量)。它只是获取该变量中的任何 string 并告诉您它的驱动器和路径组件是什么。如果该字符串只是一个像“myprogram”这样的名称,它表示“好吧,没有驱动器和路径的文件名被假定在当前目录中”。
所以 %~dp0 技巧只有在以下情况下才有效:
a) 您已经通过全名启动了您的脚本,或者b) 你正好在它所在的目录下
在这种情况下,您运行:
hg extdiff -p myprogram
变成以下对 Windows 的调用:
CreateProcess(NULL, "cmd.exe /c myprogram some diff args", ..., "c:/some/temp/path", ...)
这在道德上等同于打开一个 shell 并运行:
C:\>cd c:\some\temp\path
C:\some\temp\path>myprogram some diff args
%0 is myprogram
%~dp0 is C:\some\temp\path
我建议像这样通过 .hgrc 为您的工具传递完整的程序名称:
[extdiff]
myprogram=c:/tools/myprogram.cmd
但请注意,这可能会因文件名中存在空格而混淆,您可能需要尝试使用引号。
关于mercurial - hg extdiff -p 和 %~dp0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7586385/
我使用 winmerge 作为我的 extdiff 工具,像这样: [extdiff] cmd.winmerge = C:\Program Files\WinMerge\WinMergeU.exe o
这是我的 Mercurial.ini 中的内容... [extdiff] cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe opts
我想将 Mercurial 配置为能够执行“hg diff -S”之类的操作,但使用外部 diff 工具(特别是 kdiff3)。执行此操作的逻辑方法类似于 hg extdiff -S -p kdif
使用 Windows、Mercurial 和 extdiff 扩展(用于 Mercurial)。我试图设置 extdiff 以将 WinDiff 用作外部差异工具,但我认为我已经缩小了问题的范围,足以
我不明白为什么我的 extdiff 扩展不适用于 Mercurial(在 Mac 上)。 这是我的 .hgrc 文件的样子: [extensions] fetch= hgext.extdiff = [
myprogram.cmd 在 PATH 中; myprogram.cmd 使用 %~dp0 来确定它所在的文件夹; 我已将 @echo %~dp0 包含到 myprogram.cmd 中进行调试;
我正在对 Deltawalker 进行评估,虽然它似乎是一个很棒的工具,但没有明显的方法可以让它与 mercurial 集成以便我可以做到; hg extdiff -r some_rev -r som
我是一名优秀的程序员,十分优秀!