Как просмотреть SVN Diff в стиле VimDiff в SVN - PullRequest
13 голосов
/ 23 октября 2011

Я начинаю использовать Subversion в Linux.svn diff дает очень загадочный взгляд - очень, очень недружественный для глаз.Как мне интерпретировать его вывод?И что еще более важно, есть ли способ увидеть разницу в аккуратном стиле vimdiff, когда оба файла будут открываться рядом?

Ответы [ 8 ]

19 голосов
/ 19 марта 2015

Отредактируйте файл $HOME/.subversion/config, чтобы он содержал строку:

diff-cmd = <your favorite diff application>

Некоторые приложения diff поддерживают svn. Например, diff-cmd = meld должно работать нормально. Однако vimdiff является , а не одним из них. Причина этого в том, что svn diff дает файлы для сравнения как 6-й и 7-й аргументы, а не как 1-й и 2-й, как обычно. Так что большинство людей делают в этой ситуации это:

Создание сценария оболочки :

#!/bin/sh

/usr/bin/vimdiff ${6} ${7}

Сохраните его, например, в $ HOME / bin / svndiffwrap.sh

Не забудьте сделать его исполняемым chmod +x $HOME/bin/svndiffwrap.sh.

Сделайте это командой svn diff :

in $HOME/.subversion/config:

diff-cmd = /home/<username>/bin/svndiffwrap.sh

Примечание : Некоторые клиенты SVN не поддерживают пути, использующие переменную среды $HOME. Поэтому полезно указывать полный путь.

11 голосов
/ 23 октября 2011

Нашел по адресу: http://blog.tplus1.com/index.php/2007/08/29/how-to-use-vimdiff-as-the-subversion-diff-tool/

В этом блоге сценарий взят непосредственно из примера внешних инструментов SVN book :

diffwrap.sh

#!/bin/sh

# Configure your favorite diff program here.
DIFF="/usr/local/bin/vimdiff"

# Subversion provides the paths we need as the sixth and seventh 
# parameters.
LEFT=${6}
RIGHT=${7}

# Call the diff command (change the following line to make sense for
# your merge program).
$DIFF $LEFT $RIGHT

# Return an errorcode of 0 if no differences were detected, 1 if some were.
# Any other errorcode will be treated as fatal.

Примечание: Это предполагает, что ваш vimdiff находится в /usr/local/bin, для меня, в Fedora, он был в /usr/bin.Если вы не можете найти его, запустите:

$ whereis vimdiff

Затем в ~/.subversion/config:

[helpers]
...
diff-cmd = /home/<username>/bin/diffwrap.sh
6 голосов
/ 09 августа 2016

vimdiff <(svn diff)

<() упоминается как подстановка процесса , которая создает псевдофайл из вывода svn diff для vimdiff для использования.

Вы можете создать псевдоним оболочки следующим образом: alias svndiff='vimdiff <(svn diff)'

Аналогичный ответ

PS - это самое простое решение, которое я пока не нашел;это изменило мою жизнь (условно говоря)!

1 голос
/ 09 ноября 2018

Мне нравится иметь ревизию и файл в строке состояния при использовании vimdiff с svn, поэтому я использую следующее:

svnvimdiff.sh

#!/bin/bash
/usr/bin/vim -R -d -f --nofork -n -c "let F1='${5//$'\t'/ }' | set statusline=%{F1} | let F2='${3//$'\t'/ }' | setlocal statusline=%{F2}" ${6} ${7}

Объяснение:

  • -R = только для чтения (мы не можем редактировать эти файлы)
  • -d = режим сравнения (рядом)
  • -f = передний план (пусть SVN подождет)
  • - nofork = также передний план (пусть SVN подождет)
  • -n = пропустить файлы подкачки (нам не нужны файлы подкачки, так как они уже временные)
  • -c = выполнить команду vim
  • let F1 = '$ {5 // $' \ t '/}' (имя для всех окон с замененной вкладкой, потому что она отображается неправильно)
  • установить строку состояния =% {F1} (установить имя в качестве глобальной строки состояния)
  • let F2 = '$ {3 // $' \ t '/}' (имя первого окна с замененной вкладкой, потому что оно отображается неправильно)
  • setlocal statusline =% {F2} (установить строку состояния для первого окна)

Добавить / изменить diff-cmd в $ HOME / .subversion / config

diff-cmd = /yourpath/svnvimdiff.sh
1 голос
/ 23 октября 2011

VCSCommand может сделать это за вас - установите плагин, перейдите к файлу и нажмите <Leader>cv

0 голосов
/ 19 июля 2018

Выполните следующие действия

  1. Установите colordiff, например: для Ubuntu sudo apt-get установите colordiff

  2. Теперь выможно просто попробовать вывод svn diff в colordiff: svn diff -r Rev1: файл Rev2 |colordiff

  3. Добавьте следующий код в свой профиль bash (~ / .bashrc или ~ / .bash_profile) для быстрого доступа.

    svndiff () {svn diff"$ {@}" |colordiff}

  4. исходный профиль bash.

    source ~ / .basrc Теперь он готов к использованию ... Вы можете просто увидетьsvn diff в вашем терминале наиболее эффективно.

    Например: svndiff

0 голосов
/ 24 октября 2011

База каждого файла хранится в папке .svn, поэтому вы можете написать небольшой скрипт для запуска vimdiff или mgdiff, чтобы указать путь в папке .svn для сравнения вашего файла. Это не потребует от вас выполнения команды diff для vimdiff по умолчанию для svn.

0 голосов
/ 23 октября 2011

Я использую tkdiff и tkcvs для SVN.Хороший вид рядом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...