从 vim 调用 cygwin svn

从 vim 调用 cygwin svn

我正在尝试使用 shell 获取“svn log %”。为了将其放入不同的缓冲区,似乎最好的方法是调用:

:new | set buftype=nowrite | r !svn log #

rshell 命令的输出放入从中创建的缓冲区new,并#引用前一个缓冲区的文件名。我遇到的问题是,我的默认 shell 是 DOS,而我的 svn 是 cygwin。我得到

svn: E155010: The node '/e/code/branch\project\myproject\main.cpp' was not found.

因此看起来 shell 正在传递 DOS 路径,而 svn 正在将其解释为基本路径/e/code/branch,然后使用 -- 附加其余路径\,这会使自己感到困惑。

我也尝试过:

silent exec "r !bash -c \"svn log `cygpath -u \'" . file . "\'`\""

但是我尝试验证用户身份。这很奇怪,因为当我从“开始”菜单或命令 shell 运行相同的命令时,我不需要登录。

我该如何让 svn 正常工作?有没有人有适合 svn 的 vim 插件?

答案1

通过制作函数 SVNLog,我解决了路径问题:

function! SVNLog()
  cd e:/code/wws_shared/sdk
  let file = system("cygpath -u '" . expand("%:p") . "'")
  new
  silent exec "r !svn log " . file
endfunction

我仍然有身份验证问题,以下输出被传输到我的临时文件:

Authentication realm: <http://svn.mydomain.com:80> Subversion Repository
Password for 'jh': 

我通过将silent exec ...上述内容更改为来解决这个问题exec "!svn log " . file,运行一次,输入密码,再改回原来的样子。

相关内容