Одно из самых общих требований при разработке проекта - видеть, что было изменено. Вам может понадобиться посмотреть различия между двумя ревизиями одного и того же файла, или различия между двумя различными файлами. Для просмотра различий в текстовых файлах TortoiseSVN предоставляет встроенный инструмент, называемый TortoiseMerge. В TortoiseSVN также есть утилита для просмотра различий в графических файлах под названием TortoiseIDiff. Конечно, при желании вы можете использовать вашу любимую программу для просмотра различий.
Если вам надо посмотреть, какие изменения вы сделали в вашей рабочей копии, просто вызовите контекстное меню Проводника и выберите → .
Если вы желаете посмотреть, что изменилось в основном стволе (если вы работаете в ответвлении) или в каком-то ответвлении (если вы работаете в основном стволе), вы можете воспользоваться контекстным меню Проводника. Просто удерживайте нажатой клавишу Shift при щелчке на файле правой кнопкой мыши. Далее выберите → и в последующем диалоге укажите URL в хранилище, с которым вы желаете сравнить ваш локальный файл.
Вы также можете выбрать в обозревателе хранилища два дерева для сравнения, возможно, две метки, или ответвление/метку и ствол. Их можно сравнить, используя «Сравнение папок».
из контекстного меню. Больше прочитать об этом можно вЕсли вы желаете посмотреть различия между определённой ревизией и вашей рабочей копией, выберите нужную ревизию в диалоге журнала ревизий, затем выберите
из контекстного меню.Если вы желаете посмотреть различия между последней зафиксированной ревизией и вашей рабочей копией, при условии, что рабочая копия не была изменена, просто выполните правый щелчок на файле и выберите
→ . Это запустит процесс получения различий между ревизией перед последней-датой-фиксации (зарегистрированной в вашей рабочей копии) и рабочей базой. Будут показаны последние произведённые в этом файле изменения, при помощи которых файл был приведён в своё текущее состояние, наблюдаемое в вашей рабочей копии. Изменения, более поздние, чем ваша рабочая копия, не показываются.Если вы желаете посмотреть различия между двумя ранее зафиксированными ревизиями, выделите в диалоге журнала ревизий (применяя для этого, как обычно, клавишу Ctrl) две ревизии, которые вы хотите сравнить. Затем выберите из контекстного меню.
Если это сделать из журнала ревизий для папки, то появится диалог сравнения ревизий, отображающий список изменённых файлов из этой папки. Больше можно прочитать в «Сравнение папок».
Если вы желаете посмотреть все изменения, произведённые во всех файлах в определённой ревизии, собранные в одном месте, вы можете применить выдачу в виде объединённых различий (Unified-Diff, формат заплаток GNU). Будут показаны только различия с несколькими строками контекста. Этот формат сложнее для чтения, чем визуальное сравнение файлов, но он показывает сразу все изменения. В диалоге журнала ревизий выберите интересующую вас ревизию, затем выберите
из контекстного меню.Если вы желаете посмотреть различия между двумя разными файлами, вы можете сделать это прямо в Проводнике, выделив оба файла (как обычно, с использованием клавиши Ctrl) и выбрав → из контекстного меню Проводника.
Если сравниваемые файлы размещены не в одной папке, то используйте команду Ctrl при нажатии.
→ , чтобы отметить первый файл для сравнения, затем найдите второй файл и используйте → . Чтобы удалить отмеченный файл используйте команду → ещё раз, но удерживайте клавишуЕсли вы желаете посмотреть различия между файлом из вашей рабочей копии и файлом в каком-нибудь хранилище Subversion, то это можно сделать прямо в Проводнике, выделив этот файл и вызвав контекстное меню, удерживая клавишу Shift, после чего выбрав → . Это же можно сделать и для папки в рабочей копии. TortoiseMerge показывает эти различия также, как показывает файл заплаток - в виде списка изменённых файлов, которые можно просматривать по одному за раз.
Если вы желаете посмотреть не только различия, но и автора, ревизию и дату сделанных изменений, вы можете объединить выдачу по различиям и авторству из диалога журнала ревизий. Прочтите «Авторство различий» для дополнительной информации.
Встроенные утилиты, поставляемые с TortoiseSVN, не поддерживают показ различий между иерархиями папок. Но если у вас есть другой инструмент, обладающий такой возможностью, вы можете использовать его. В «Внешние инструменты просмотра различий/слияния» мы расскажем о некоторых инструментах, которые нам довелось попробовать.
Если у вас в настройках указан сторонний инструмент сравнения, вы можете использовать клавишу Shift при выборе команды 'Различия' для его применения. Прочтите «Настройки внешних программ», чтобы узнать, как настраивать другие инструменты сравнения.
За время жизни проекта случается, что вы изменяете завершения строк с CRLF
на LF
, или изменяете отступ какой-нибудь части. К сожалению, это приводит к тому, что большое количество строк помечаются как изменённые, даже если не было изменений смысла кода. Следующие параметры помогут справиться с такими изменениями, когда дело доходит до сравнения и применения различий. Эти настройки присутствуют в диалогах Слияния и Авторства, а также в настройках TortoiseMerge.
Игнорировать завершения строк исключает изменения, возникающие только из-за разницы типов завершений строк.
Сравнивать непечатаемые знаки включает все изменения отступов и пробельных символов внутри строк в виде добавленных/удалённых строк.
Игнорировать изменения пробельных символов исключает изменения, которые состоят только в изменении количества или типа пробельных символов, т. е. изменение отступов или замена табуляций на пробелы. Добавление пробела там где его раньше не было или удаление пробела всё же отображается как изменение.
Игнорировать все непечатаемые знаки исключает все изменения только пробельных символов.
Конечно, все строки с изменившимся содержимым всегда включаются в различия.
Когда вы выбираете два дерева в обозревателе хранилища, или когда вы выбираете две ревизии папки в диалоге журнала, у вас есть возможность → .
Этот диалог показывает список всех изменённых файлов и позволяет производить сравнение или просматривать авторство отдельно для каждого файла, используя контекстное меню.
Вы можете экспортировать дерево изменений, полезное, если вам нужно отправить кому-нибудь структуру вашего проекта в виде дерева, содержащего только изменённые файлы. Эта операция работает только для выбранных файлов, поэтому вам надо выбрать интересующие файлы - часто это означает их все - и после этого → . У вас будет запрошено место, куда будет сохранено дерево изменений.
Вы также можете экспортировать список изменённых файлов при помощи → .
Если вы желаете экспортировать список файлов вместе с выполненными действиями (изменено, добавлено, удалено), то это можно сделать при помощи пункта → .
Кнопка сверху позволяет изменить направление сравнения. Можно посмотреть изменения, необходимые, чтобы из А получить Б, или, если вам больше нравится, такие, чтобы из Б получить А.
Кнопки с номерами ревизий могут быть использованы для переключения на другой диапазон ревизий. При изменении диапазона список элементов, различающихся между ревизиями, будет обновлён автоматически.
Если список имён файлов очень длинный, можно применить поле поиска для уменьшения размеров списка: сделать так, чтобы в нём присутствовали только файлы, содержащие определённый текст в своём имени. Обратите внимание: используется простой поиск текста, поэтому если вам нужны в списке только файлы исходного кода на C, надо ввести .c
, а не *.c
.
Есть множество утилит для сравнения текстовых файлов, включая нашу собственную TortoiseMerge, но часто оказывалось, что нам также хотелось увидеть, что же изменилось в графических файлах. Именно поэтому мы создали TortoiseIDiff.
→ для файлов любого из широко распространённых графических форматов запускает TortoiseIDiff для показа различий в картинках. По умолчанию, картинки показываются бок о бок, но вы можете воспользоваться меню 'Вид' или инструментальной панелью для отображения картинок одна над другой, или, по желанию, вы можете наложить картинки одна на другую как при использовании проектора.
Естественно, вы можете также приблизить, удалить и передвинуть картинку. Передвинуть картинку можно также просто перетягивая её левой кнопкой мыши. Если включить флажок Связать картинки, то органы управления перемещением (полосы прокрутки, колёсико мыши) обеих картинок будут связаны.
В информационном окошке отображается дополнительная информация о графическом файле, такая как размер в пикселах, разрешение и глубина цвета. Если это окошко вам мешает, его можно скрыть, выбрав
→ . Эту же информацию можно получить во всплывающей подсказке при наведении мыши на на заголовок картинки.Когда картинки наложены одна на другую, относительная интенсивность картинок (альфа-сопряжение) регулируется при помощи бегунка слева. Для задания нужной степени прозрачности можно щёлкнуть прямо в нужном месте бегунка, или же изменить значение при помощи
Кнопка над бегунком переключает между 0% и 100% прозрачностью, и при двойном щелчке на кнопке прозрачность будет переключаться автоматически каждую секунду, пока вы не щёлкните по кнопке ещё раз. Это может пригодиться при поиске нескольких мелких изменений.
Иногда бывает необходимо увидеть только то, чем изображения различаются, и не всегда наложение их друг на друга может помочь. Возможно, у вас есть изображения двух ревизий печатных плат и вы желаете посмотреть, какие дорожки изменились. При отключении режима альфа-сопряжения различия будут показаны при помощи операции XOR над значениями цветов пикселов. Неизменённые области будут чисто белыми, а изменения будут окрашены.
Когда вы хотите сравнить нетекстовые документы обычно вам понадобится ПО, с помощью которого вы создали документ, т. к. оно понимает формат этого файла. В общеиспользуемых пакетах Microsoft Office и Open Office есть некоторая возможность просмотра различий, и TortoiseSVN содержит скрипты для запуска с правильными настройками когда вы сравниваете файлы с известными расширениями. Вы можете проверить какие расширения файлов поддерживаются, и добавить свои, открыв Внешние программы.
→ и щелкнув в разделеЕсли вы установили версию Click-to-Run пакета Office 2010 и пытаетесь сравнить документы, то можете получить сообщение об ошибке из Windows Script Host наподобие этой: «ActiveX component can't create object: word.Application». Это говорит о том, что вы должны использовать MSI версию пакета Office чтобы заработала функция сравнения.
Если предоставленные нами инструменты не делают того, что вам надо, попробуйте какую-нибудь из множества доступных альтернатив: программ с открытым исходным кодом или коммерческих программ. У каждого свои предпочтения, и этот список никоим образом не полон, но вот несколько программ, которые вы можете принять во внимание:
WinMerge is a great open-source diff tool which can also handle directories.
Perforce is a commercial RCS, but you can download the diff/merge tool for free. Get more information from Perforce.
KDiff3 - это бесплатный инструмент для просмотра различий, который также может работать с папками. Вы можете загрузить его отсюда.
SourceGear Vault is a commercial RCS, but you can download the diff/merge tool for free. Get more information from SourceGear.
ExamDiff Standard распространяется как freeware. Он может обрабатывать файлы, но не папки. ExamDiff Pro распространяется как shareware и добавляет несколько расширений, включая сравнение директорий и возможность редактирования. Обе разновидности, начиная с версии 3.2, могут работать с юникодом. Вы можете загрузить их с сайта PrestoSoft.
Similar to ExamDiff Pro, this is an excellent shareware diff tool which can handle directory diffs and unicode. Download it from Scooter Software.
Araxis Merge is a useful commercial tool for diff and merging both files and folders. It does three-way comparison in merges and has synchronization links to use if you've changed the order of functions. Download it from Araxis.
В «Настройки внешних программ» описано, как настроить TortoiseSVN для использования этих инструментов.