nazywając cygwin svn z vim

0

Próbuję powłoki, aby uzyskać 'svn log%'. Aby uzyskać to w innym buforze, wydaje się, że najlepszym sposobem jest wywołanie:

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

Gdzie r umieszcza dane wyjściowe z polecenia powłoki w buforze utworzonym z new i # odwołuje się do nazwy pliku poprzedniego bufora. Mam problem z tym, że moją domyślną powłoką jest DOS, a mój svn to cygwin. dostaję

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

Wygląda na to, że powłoka przekazuje ścieżkę DOS, a svn interpretuje ją do ścieżki bazowej /e/code/branch ale następnie dołącza resztę ścieżki za pomocą \ - co się myli.

Próbowałem też:

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

Ale próbuję uwierzytelnić użytkownika. Co jest dziwne, ponieważ gdy uruchamiam to samo polecenie z menu „Start” lub powłoki poleceń, nie muszę się logować.

Jak uzyskać zachowanie svn? Czy ktoś ma dobrą wtyczkę do vima dla svn?

JonathanH
źródło

Odpowiedzi:

0

Tworząc funkcję SVNLog mam problemy ze ścieżką:

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

Nadal miałem problem z uwierzytelnianiem, gdzie następujące dane wyjściowe zostały potokowane do mojego pliku tymczasowego:

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

Rozwiązałem to, zmieniając silent exec ... powyżej do exec "!svn log " . file, uruchom raz, wprowadź hasło, zmień z powrotem na oryginalny.

JonathanH
źródło