vimdiff против репо с контролем версий - PullRequest
4 голосов
/ 17 мая 2009

scmdiff отмечает различия между зарегистрированной версией файла и редактируемым файлом. Это отмечает это, окрашивая измененные линии. Есть ли способ просмотреть изменения, используя разделение в стиле vimdiff вместо того, чтобы просто закрашивать измененные линии?

Например, если abc - это файл, контролируемый версией, то я могу использовать следующее для отображения текущей версии abc с одной стороны и последней версии с другой стороны:

tkdiff abc

Я также могу сделать:

tkdiff -r1 -r5 abc

, чтобы показать различия между версиями 1 и 5. Наконец, я могу сделать:

tkdiff -r1 abc

чтобы увидеть разницу между текущей версией и версией 1.

Это тот тип diff, который я хотел бы видеть между двумя версиями файла, только с использованием Vim. Это можно сделать? Я работаю под Linux и использую Bitkeeper для контроля версий.

Ответы [ 5 ]

8 голосов
/ 18 мая 2009

Я использую плагин vcscommand для взаимодействия с VCS.

Из описания:

Плагин VIM 7, полезный для манипулирования файлами, управляемыми CVS, SVN, SVK и git в VIM, включая фиксацию изменений и выполнение различий с использованием системы vimdiff.

В частности, :VCSVimDiff разделит текущее окно и покажет «vimdiff» против последней версии в репо. Вы также можете указать один номер ревизии для сравнения текущего буфера с (т.е. :VCSVimDiff -2) или два номера ревизии для сравнения друг с другом. Вот соответствующий раздел из документации:

: VCSVimDiff

Использует vimdiff для отображения различий между версиями текущего файл.

Если редакция не указана, самая последняя версия файла на текущая ветка используется. С одним аргументом этот аргумент используется как ревизия, как указано выше. С двумя аргументами, различия между две ревизии отображаются с использованием vimdiff.

С нулевым или одним аргументом, оригинальный буфер используется для выполнения Vimdiff. Когда скретч-буфер закрыт, исходный буфер будет возвращен в нормальный режим.

Когда режим vimdiff запущен с использованием вышеуказанных методов, дополнительный vimdiff буферы могут быть добавлены путем передачи одного аргумента версии команда. Всего может быть до 4 буферов vimdiff.

Использование команды с двумя аргументами сбрасывает vimdiff только на те 2 версии. Кроме того, при вызове команды в другом файле закройте предыдущие буферы vimdiff.

8 голосов
/ 17 мая 2009

Я использую vimdiff с Subversion следующим образом:

Когда я хочу увидеть различия в vimdiff для конкретного файла или группы файлов, которые я делаю:

svn diff [files] --diff-cmd svd

Здесь --diff-cmd инструктирует subversion использовать команду "svd" вместо поведения по умолчанию diff. svd - это следующий скрипт оболочки:

#!/bin/bash
shift 5; /usr/bin/vimdiff -f "$@"

Вы не упомянули свою ОС, вышеописанное наверняка будет работать для Linux и OS X.

2 голосов
/ 01 июля 2009

Плагин VCSCommand действительно полезен в этом случае и без проблем работает с SVN, CVS и другими репозиториями. :VCSVimDiff применяет vimdiff между файлом, загруженным в буфер, и копией в хранилище.

1 голос
/ 18 мая 2009

Я счастливый пользователь базара vimdiff плагин . Для git есть gitvimdiff (и можно использовать несколько других решений ). Mercurial может сделать это .

0 голосов
/ 18 мая 2009

Для ClearCase VCS существует плагин , который также делает то, что вы хотите.

...