Введение
В данном HOWTO будет подробно рассказано как работать с самым популярным SVN-клиентом под Windows: скачивать и обновлять репозитории, создавать теги и ветки проекта, коммитить (публиковать) свою рабочую копию, откатывать сделанные изменения и многое другое.
Где можно скачать программу
Скачать программу можно на её официальном сайте на странице Downloads. Там же можно скачать пакет локализации, содержащий помимо перевода интерфейса программы, ещё и словарь проверки орфографии (применяется при коммите изменений (см. ниже)).
Программа TortoiseSVN интегрируется в Проводник Windows (Windows Explorer) и все действия с ней выполняются из контекстного меню каталогов (папок).
Начнём с самого простого – скачивания одного из репозиториев на свой компьютер.
Скачивание репозитория SVN (Checkout)
Если Вы хотите скачать репозиторий какого-нибудь проекта, то Вы должны знать его URL, а также логин и пароль для доступа (если не указаны, то для анонимного доступа (только чтение) используется логин и пароль anonsvn). URL’ы могут быть:
- стандартный svn:// – подключение напрямую к Subversion-серверу;
- http:// – подключение к Subversion-серверу через веб (так работает большинство серверов, т.к. позволяет просматривать проект не имея SVN-клиента напрямую через веб-браузер);
- https:// – то же, что и http://, но через SSL;
- svn+ssh:// – svn через SSH (редко используется в настоящее время).
Допустим, что URL нам известен, поэтому чтобы скачать репозиторий, мы должны сделать следующее:
- Создаём папку, в которую будем скачивать репозитории (для удобства лучше хранить все репозитории в одной папке, например, C:\SVN).
- Заходим в неё в проводнике Windows, нажимаем правой кнопкой мыши по свободному месту и выбираем “SVN Checkout…”.
- В поле “URL of repository” пишем полный URL до репозитория SVN, который нам нужно скачать, а в поле “Checkout directory” корректируем путь, в которой будет помещена локальная копия. Внимание! Вам нужно делать checkout только каталога /trunk/ svn-репозитория, либо корневого, если /trunk/ не существует (очень редко, т.к. в 99% репозиториев trunk существует и содержит всегда самую последнюю версию файлов).
- В списке “Checkout Depth” укажите “Fully recursive”, что означает, что будет скачан весь репозиторий от указанного пути. Если установить флажок “Omit externals”, то внешние файлы, на которые есть ссылки в репозитории (например, из других репозиториев, либо репозиториев третьих лиц), скачаны не будут, поэтому ставить флажок здесь не рекомендуется.
- В блоке “Revision” Вы можете запросить выдать Вам последнюю версию репозитория: “HEAD revision” (рекомендуется именно этот вариант), либо указанную Вам в поле ревизию: “Revision ###” (не рекомендуется).
- Кнопка “Show log” покажет Вам список изменений в репозитории с информацией об авторах каждого изменения, описании изменений (если авторы их вводили при коммите изменений), а также списке добавленных, изменённых и удалённых файлов. Здесь же можно просмотреть чем файл одной ревизии (версии) отличается от файла другой, а также запросить показать унифицированный diff-файл изменений либо нескольких файлов, либо нескольких ревизий (отображается только для текстовых файлов). Более подробную информацию о Log Viewer читайте ниже.
- Нажимаем кнопку “OK” и ждём скачивания репозитория с Subversion-сервера (зависит от скорости Вашего Интернет-соединения, а также от загруженности svn-сервера). Внимание! Некоторые svn-серверы могут запросить пароль. Если Вы не знаете пароля, то вводите anonsvn как логин и пароль. Это стандартный логин/пароль для анонимного доступа. Если Вы хотите в дальнейшем публиковать свои изменения в этот репозиторий и у Вас есть на это право, то введите здесь свой логин и пароль.
- Готово. В каталоге, который Вы указали на третьем шаге в поле “Checkout directory” теперь находится локальная версия репозитория (рабочая копия).
Обновление скачанного репозитория (Update)
SVN и создавался для удобного управления проектам, а также поддержания их в актуальном состоянии, поэтому вторая по значимости операция – обновления скачанной рабочей копии. Рекомендуется как можно чаще обновлять свои рабочие копии. При обновлении скачиваются только изменённые файлы, добавляются новые и удаляются удалённые из репозитория файлы. Итак, чтобы обновить рабочую копию, нужно:
- Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
- Нажимаем правой кнопкой по свободному месту в папке, выбираем “SVN Update”.
- В открывшемся окне наблюдаем за процессом обновления: списком добавленных, изменённых и/или удалённых файлов, текущим номером версии. Здесь же можно нажать кнопку “Show log…” чтобы просмотреть список, прочитать описание изменений (если указано), сравнить текущую версию с предыдущей и т.д.
- Нажмите “OK” чтобы закрыть это окно. Репозитарий обновлён до последней версии.
Сохранение своих изменений в репозиторий (Commit)
Если Вы хотите внести свои изменения в скачанный репозиторий и у Вас есть на это право (право коммита в репозиторий), то просто начинайте работать с локальной рабочей копией как с обычной папкой: создавайте, редактируйте, удаляйте файлы и/или папки. Теперь чтобы внести изменения в репозиторий, нужно:
- Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows. Внимание! Рабочая копия должна быть скачана от логина пользователя, у которого есть право на коммит изменений (коммит-флаг).
- Нажимаем правой кнопкой по свободному месту в папке, выбираем “SVN Commit…”.
- В открывшемся окне “Commit” в секции “Message” вводим краткое описание своих изменений (это рекомендуется делать всегда, особенно если не Вы один работаете над проектом), но описание можно и оставить пустым (не рекомендуется, т.к. другие разработчики или пользователи не смогут понять что именно было изменено). В этом поле разрешено использовать буквы национальных алфавитов (присутствует полная поддержка юникода), но, к сожалению, некоторые веб-клиенты svn (отображающие в браузере список изменений) вместо русских букв отображают кракозябры. TortoiseSVN лишён этого недостатка.
- В секции “Changes made (double-click on file for diff)” Вы увидите список всех изменённых, добавленных и удалённых Вами файлов локальной рабочей копии. У изменённых файлов будут автоматически стоять флажки, у остальных – нет. Установите флажки у тех файлов, изменения которых должны быть загружены на svn-сервер (есть флажок – файл обновляется, добавляется, удаляется; нет флажка – остаётся без изменений). Двойной щелчок по файлу запустит утилиту Tortoise Merge (предназначена для сравнения версий файлов), которая покажет последнюю версию файла из репозитория SVN в левом окне и текущую рабочую копию в правом. Изменения будут выделены: удалённые строки зачёркнуты, добавленные выделены.
- После выделения нужных файлов или всех сразу ("Select / deselect all"), нажмите кнопку “OK” и дождитесь окончания загрузки изменений на сервер. Будет открыто окно со списком добавленных, изменённых и/или удалённых файлов, а также указан текущий номер ревизии.
Работа с репозиторием напрямую на сервере
Иногда требуется работать с svn-репозиторием напрямую на сервере не скачивая его на локальный компьютер. Для этих целей существует утилита “SVN Repo-browser”, также входящая в состав TortoiseSVN. Работать с ней очень просто:
- Запускаем проводник Windows, заходим в любую папку, нажимаем правой кнопкой по свободному месту и выбираем “SVN Repo-browser”.
- В открывшемся окне “URL” вводим полный URL нужного нам svn-репозитория и нажимаем “OK”.
- Будет открыто главное окно утилиты: “%URL% - Repository Browser”, где %URL% – URL репозитория. Работать в этом окне можно так же, как в Проводнике Windows. Разрешено перетаскивание объектов (Drag and Drop). Через контекстное меню файла/папки можно:
- удалять “Delete…”, переименовывать “Rename” файлы и каталоги (папки);
- добавить файл ("Add file…") или папку ("Add folder…") в репозиторий;
- создать пустую папку ("Create folder") в репозитории;
- скачать ("Checkout…") репозиторий (см. выше);
- извлечь файл или папку из репозитория без служебных каталогов ("Export…"). Извлечённая папка отличается от рабочей копии тем, что её нельзя обновлять и она не содержит служебных скрытых каталогов .svn;
- создать ветку или тег ("Copy to…");
- изменять свойства файла или папки ("Show properties").
- Любое изменение требует ввести текст комментария (разрешается не вводить и оставить поле пустым) и увеличивает номер ревизии на единицу. Изменения применяются немедленно.
- Нажмите кнопку “OK” для выхода из Repository Browser.
Создание веток или меток внутри репозитория
Если Вы работаете над большим проектом, то желательно для каждой публичной стабильной версии (1.0, 1.1, 2.0 и т.д.) создавать отдельный тег, например, /tags/RELEASE-Mj.Mn, где Mj – Major-версия, а Mn – Minor-версия проекта. Пример: /tags/RELEASE-1.0 (для версии 1.0), /tags/RELEASE-2.63 (для версии 2.63) и т.д. Внимание! Теги создаются НЕ в каталоге /trunk/, а выше него на один уровень! Чтобы создать метку или ветвление, нужно (у Вас должно быть право коммита в репозиторий для создания меток или ветвлений):
- Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
- Нажимаем правой кнопкой по свободному месту и выбираем “TortoiseSVN” – " Branch/tag…".
- В открывшемся окне в поле “To URL” введите полный URL с путём до нового тега. Пример: https://ваш_проект.svn.sourceforge.net/tags/RELEASE-1.0 (это только пример; пути должны указывать на Ваш проект).
- В секции “Create copy in the repository from” укажите “HEAD revision in the repository” (последняя ревизия; рекомендуется), либо укажите номер ревизии вручную, выбрав “Specific revision in the repository ###”, либо создайте тег из текущей рабочей копии “Working copy” (не рекомендуется).
- В секции “Log message” укажите комментарий к ревизии (например, %НАЗВАНИЕ_ПРОЕКТА% %ВЕРСИЯ_ПРОЕКТА% Released).
- Нажмите “OK”. Флажок в строке “Switch working copy to new branch/tag” ставить не рекомендуется, т.к. это переключит Вашу текущую рабочую копию на новый путь, что может привести к различным ошибкам и проблемам.
Откат изменений в рабочей копии
Если работая с локальным репозиторием Вы совершили какую-либо ошибку, например, повредили какой-то файл, неправильно отредактировали и т.д., то это легко исправить:
- Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
- Нажимаем правой кнопкой по свободному месту и выбираем “TortoiseSVN” – “Revert…”.
- В открывшемся окне Вы увидите список всех изменённых файлов Вашей рабочей копии. Установите флажок у того файла, который Вы хотите откатить до версии из репозитория, либо выберите сразу все файлы ("Select / deselect all"). Двойной щелчок по файлу покажет его отличия от оригинального файла.
- Нажмите “OK”. Выбранные файлы будут восстановлены, а изменённые будут отправлены в Корзину Windows.
Работа с утилитой Log Viewer
Утилита Log Viewer, запускаемая после нажатия на кнопку “Show log…”, либо при нажатии правой кнопкой по свободному месту в локальной рабочей копии – “TortoiseSVN” – “Show log”. По умолчанию утилита показывает последние 50 ревизий и их описаний (если во время коммита они были введены). Все основные действия выполняются из контекстного меню ревизии:
- “Compare with woking copy” – сравнить текущую (выделенную) ревизию с локальной рабочей копией. Список изменений будет показан в Tortoise Merge.
- “Show changes as unified diff” – показать изменения выделенных ревизий как унифицированный патч-файл (unified diff). Если выделена только одна ревизия, то она будет сравниваться с предыдущей (например, выделена ревизия 87, она будет сравниваться с 86).
- “Compare with previous revision” – показать изменения выделенной и предыдующей ревизии. Будет отображено окно с различающимися файлами, двойной щелчок по файлу откроет его в Tortoise Merge для просмотра изменений.
- “Compare and blame with previous revision” – то же, что и предыдущее, но здесь отображается кто и когда внёс какое-либо изменение в файл построчно.
- “Browse repository” – открывает описанный выше Repository Browser для прямой работы с репозиторием.
- “Create branch/tag from revision” – позволяет создать ветку или тег из выделенной ревизии (см. выше).
- “Update item to revision” – обновляет до выделенной ревизии.
- “Revert to this revision” – позволяет откатиться до выделенной ревизии.
- “Revert changes from this revision” – позволяет откатить все изменения, сделанные в выделенной ревизии.
- “Merge revisions to…” – позволяет объединить несколько ревизий в рабочую копию.
- “Checkout…” – скачать выделенную ревизию (см. выше).
- “Export…” – извлечь выделенную ревизию без служебных каталогов.
- “Edit author” – редактировать имя автора выделенной ревизии (нужны права администратора).
- “Edit log message” – позволяет редактировать текст описания выделенной ревизии (нужны права администратора).
- “Show revision properties” – показать свойства выделенной ревизии.
- “Copy to clipboard” – скопировать номер выделенной ревизии, автора, описание и список изменённых файлов в буфер обмена Windows.
- “Search log messages” – запустить поиск в описаниях ревизий.
Кнопка “Show all” покажет все ревизии, а “Show range…” позволит задать диапазон ревизий, которые будут отображаться в окне Log Viewer.
Кнопка “Statistics” отображает различную статистическую информацию: наиболее активный и наименее активный автор, количество изменений в репозитории в неделю, общее количество изменений и т.д.