Я пытаюсь получить «svn log%». Для того, чтобы получить это в другой буфер, кажется, лучший способ это вызвать:

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

Где r помещает вывод команды оболочки в буфер, созданный из new и # ссылается на имя файла предыдущего буфера. У меня проблема в том, что моя оболочка по умолчанию - DOS, а моя SVN - Cygwin. я получил

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

Таким образом, кажется, что оболочка передает путь DOS, а svn интерпретирует его по базовому пути /e/code/branch но затем добавляет остальную часть пути, используя \ - что само по себе сбивает с толку.

Я также попробовал:

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

Но я получаю попытку аутентифицировать пользователя. Что странно, потому что когда я запускаю ту же команду из меню «Пуск» или командной оболочки, мне не нужно входить в систему.

Как мне заставить SVN вести себя? У кого-нибудь есть хороший плагин для vim для svn?

1 ответ1

0

Сделав функцию 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 , запустите один раз, введите пароль, вернитесь к исходному.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .