Одно из самых общих требований при разработке проекта - видеть, что было изменено. Вам может понадобиться посмотреть различия между двумя ревизиями одного и того же файла, или различия между двумя различными файлами. Для просмотра различий в текстовых файлах TortoiseSVN предоставляет встроенный инструмент, называемый TortoiseMerge. В TortoiseSVN также есть утилита для просмотра различий в графических файлах под названием TortoiseIDiff. Конечно, при желании вы можете использовать вашу любимую программу для просмотра различий.
Если вам надо посмотреть, какие изменения вы сделали в вашей рабочей копии, просто вызовите контекстное меню Проводника и выберите → .
Если вы желаете посмотреть, что изменилось в основном стволе (если вы работаете в ответвлении) или в каком-то ответвлении (если вы работаете в основном стволе), вы можете воспользоваться контекстным меню Проводника. Просто удерживайте нажатой клавишу Shift при щелчке на файле правой кнопкой мыши. Далее выберите → и в последующем диалоге укажите URL в хранилище, с которым вы желаете сравнить ваш локальный файл.
Вы также можете выбрать в обозревателе хранилища два дерева для сравнения, возможно, две метки, или ответвление/метку и ствол. Их можно сравнить, используя из контекстного меню. Больше прочитать об этом можно в «Сравнение папок».
Если вы желаете посмотреть различия между определённой ревизией и вашей рабочей копией, выберите нужную ревизию в диалоге журнала ревизий, затем выберите из контекстного меню.
Если вы желаете посмотреть различия между последней зафиксированной ревизией и вашей рабочей копией, при условии, что рабочая копия не была изменена, просто выполните правый щелчок на файле и выберите → . Это запустит процесс получения различий между ревизией перед последней-датой-фиксации (зарегистрированной в вашей рабочей копии) и рабочей базой. Будут показаны последние произведённые в этом файле изменения, при помощи которых файл был приведён в своё текущее состояние, наблюдаемое в вашей рабочей копии. Изменения, более поздние, чем ваша рабочая копия, не показываются.
Если вы желаете посмотреть различия между двумя ранее зафиксированными ревизиями, выделите в диалоге журнала ревизий (применяя для этого, как обычно, клавишу Ctrl) две ревизии, которые вы хотите сравнить. Затем выберите из контекстного меню.
Если это сделать из журнала ревизий для папки, то появится диалог сравнения ревизий, отображающий список изменённых файлов из этой папки. Больше можно прочитать в «Сравнение папок».
Если вы желаете посмотреть все изменения, произведённые во всех файлах в определённой ревизии, собранные в одном месте, вы можете применить выдачу в виде объединённых различий (Unified-Diff, формат заплаток GNU). Будут показаны только различия с несколькими строками контекста. Этот формат сложнее для чтения, чем визуальное сравнение файлов, но он показывает сразу все изменения. В диалоге журнала ревизий выберите интересующую вас ревизию, затем выберите из контекстного меню.
Если вы желаете посмотреть различия между двумя разными файлами, вы можете сделать это прямо в Проводнике, выделив оба файла (как обычно, с использованием клавиши Ctrl) и выбрав → из контекстного меню Проводника.
Если вы желаете посмотреть различия между файлом из вашей рабочей копии и файлом в каком-нибудь хранилище Subversion, то это можно сделать прямо в Проводнике, выделив этот файл и вызвав контекстное меню, удерживая клавишу Shift, после чего выбрав → . Это же можно сделать и для папки в рабочей копии. TortoiseMerge показывает эти различия также, как показывает файл заплаток - в виде списка изменённых файлов, которые можно просматривать по одному за раз.
Если вы желаете посмотреть не только различия, но и автора, ревизию и дату сделанных изменений, вы можете объединить выдачу по различиям и авторству из диалога журнала ревизий. Прочтите «Авторство различий» для дополнительной информации.
Встроенные утилиты, поставляемые с TortoiseSVN, не поддерживают показ различий между иерархиями папок. Но если у вас есть другой инструмент, обладающий такой возможностью, вы можете использовать его. В «Внешние инструменты просмотра различий/слияния» мы расскажем о некоторых инструментах, которые нам довелось попробовать.
Если у вас в настройках указан сторонний инструмент сравнения, вы можете использовать клавишу Shift при выборе команды 'Различия' для его применения. Прочтите «Настройки внешних программ», чтобы узнать, как настраивать другие инструменты сравнения.
За время жизни проекта случается, что вы изменяете завершения строк с CRLF на LF, или изменяете отступ какой-нибудь части. К сожалению, это приводит к тому, что большое количество строк помечаются как изменённые, даже если не было изменений смысла кода. Следующие параметры помогут справиться с такими изменениями, когда дело доходит до сравнения и применения различий. Эти настройки присутствуют в диалогах Слияния и Авторства, а также в настройках TortoiseMerge.
Игнорировать завершения строк исключает изменения, возникающие только из-за разницы типов завершений строк.
Сравнивать непечатаемые знаки включает все изменения отступов и пробельных символов внутри строк в виде добавленных/удалённых строк.
Игнорировать изменения непечатаемых знаков исключает изменения, возникающие только из-за разницы в количестве или типе пробельных символов, таких как изменение отступов или замена табуляций на пробелы. Добавление пробельного символа там, где их раньше не было или полное их удаление в каком-либо месте всё равно отображается как изменение.
Игнорировать все непечатаемые знаки исключает все изменения только пробельных символов.
Конечно, все строки с изменившимся содержимым всегда включаются в различия.
Когда вы выбираете два дерева в обозревателе хранилища, или когда вы выбираете две ревизии папки в диалоге журнала, у вас есть возможность → .
Этот диалог показывает список всех изменённых файлов и позволяет производить сравнение или просматривать авторство отдельно для каждого файла, используя контекстное меню.
Можно также экспортировать список изменённых файлов в текстовый файл, или экспортировать сами изменённые файлы в папку. Эта операция выполняется только для выбранных файлов, поэтому необходимо выбрать интересующие вас файлы - часто это означает, что надо выбрать их все.
Если вы желаете экспортировать список файлов вместе с выполненными действиями (изменено, добавлено, удалено), то это можно сделать при помощи клавиатурных сокращений Ctrl-A для выбора всех элементов и Ctrl-C для копирования подробного списка в буфер обмена.
Кнопка сверху позволяет изменить направление сравнения. Можно посмотреть изменения, необходимые, чтобы из А получить Б, или, если вам больше нравится, такие, чтобы из Б получить А.
Кнопки с номерами ревизий могут быть использованы для переключения на другой диапазон ревизий. При изменении диапазона список элементов, различающихся между ревизиями, будет обновлён автоматически.
Если список имён файлов очень длинный, можно применить поле поиска для уменьшения размеров списка: сделать так, чтобы в нём присутствовали только файлы, содержащие определённый текст в своём имени. Обратите внимание: используется простой поиск текста, поэтому если вам нужны в списке только файлы исходного кода на C, надо ввести .c, а не *.c.
Есть множество утилит для сравнения текстовых файлов, включая нашу собственную TortoiseMerge, но часто оказывалось, что нам также хотелось увидеть, что же изменилось в графических файлах. Именно поэтому мы создали TortoiseIDiff.
→ для файлов любого из широко распространённых графических форматов запускает TortoiseIDiff для показа различий в картинках. По умолчанию, картинки показываются бок о бок, но вы можете воспользоваться меню 'Вид' или инструментальной панелью для отображения картинок одна над другой, или, по желанию, вы можете наложить картинки одна на другую как при использовании проектора.
Естественно, вы можете также приблизить, удалить и передвинуть картинку. Передвинуть картинку можно также просто перетягивая её левой кнопкой мыши. Если включить флажок Связать картинки, то органы управления перемещением (полосы прокрутки, колёсико мыши) обеих картинок будут связаны.
В информационном окошке отображается дополнительная информация о графическом файле, такая как размер в пикселах, разрешение и глубина цвета. Если это окошко вам мешает, его можно скрыть, выбрав → . Эту же информацию можно получить во всплывающей подсказке при наведении мыши на на заголовок картинки.
Когда картинки наложены одна на другую, относительная интенсивность картинок (альфа-сопряжение) регулируется при помощи бегунка слева. Для задания нужной степени прозрачности можно щёлкнуть прямо в нужном месте бегунка, или же изменить значение при помощи
Кнопка над бегунком служит для переключения между двумя предустановленными значениями прозрачности, соответствующими двум отметкам на разных концах шкалы. По умолчанию, одна из них отмечает максимальное значение, другая - минимальное, так что в результате кнопка просто по очереди показывает то одну, то другую картинку. Вы можете передвинуть отметки для указания, какие значения прозрачности будет использовать кнопка переключения.
Иногда бывает необходимо увидеть только то, чем изображения различаются, и не всегда наложение их друг на друга может помочь. Возможно, у вас есть изображения двух ревизий печатных плат и вы желаете посмотреть, какие дорожки изменились. При отключении режима альфа-сопряжения различия будут показаны при помощи операции XOR над значениями цветов пикселов. Неизменённые области будут чисто белыми, а изменения будут окрашены.
Если предоставленные нами инструменты не делают того, что вам надо, попробуйте какую-нибудь из множества доступных альтернатив: программ с открытым исходным кодом или коммерческих программ. У каждого свои предпочтения, и этот список никоим образом не полон, но вот несколько программ, которые вы можете принять во внимание:
WinMerge - прекрасный инструмент просмотра различий, который также может работать с папками. Программа с открытым исходным кодом.
Perforce - это коммерческая RCS, но вы можете загрузить бесплатный инструмент для просмотра различий/слияния. Дополнительную информацию можно получить на сайте Perforce.
KDiff3 - это бесплатный инструмент для просмотра различий, который также может работать с папками. Вы можете загрузить его отсюда.
ExamDiff Standard распространяется как freeware. Он может обрабатывать файлы, но не папки. ExamDiff Pro распространяется как shareware и добавляет несколько расширений, включая сравнение директорий и возможность редактирования. Обе разновидности, начиная с версии 3.2, могут работать с юникодом. Вы можете загрузить их с сайта PrestoSoft.
Подобно ExamDiff Pro, это прекрасный инструмент просмотра различий, умеющий работать с папками и с юникодом, и распространяемый по лицензии shareware. Загрузить его можно с сайта Scooter Software.
Araxis Merge - это полезный коммерческий инструмент для показа различий/слияния как файлов, так и папок. Он выполняет трёхстороннее сравнение при слиянии и в нём есть ссылки синхронизации, применяемые, если вы изменили порядок функций. Его можно загрузить с сайта Araxis.
Этот текстовый редактор включает подсветку синтаксиса для объединённых различий, делая их восприятие более лёгким. Его можно загрузить с сайта Scintilla.
Notepad2 разрабатывался как замена стандартного Блокнота Windows, и основывается на компоненте с открытым исходным кодом Scintilla. Он не только хорошо подходит для просмотра объединённых различий, он также намного лучше, нежели Блокнот Windows, справляется с большинством задач. Его можно бесплатно загрузить отсюда.
В «Настройки внешних программ» описано, как настроить TortoiseSVN для использования этих инструментов.