Svn tortoise как пользоваться
Перейти к содержимому

Svn tortoise как пользоваться

  • автор:

Глава 1. Приступая к работе

Этот раздел написан для тех, кто хотел бы разобраться, что же такое TortoiseSVN и первый раз им воспользоваться. Раздел объясняет, как установить TortoiseSVN и как настроить локальное хранилище, а также дает обзор самых часто используемых операций.

Установка TortoiseSVN

Требования к системе

TortoiseSVN работает под операционной системой Vista или выше, и доступен как в 32-битной, так и в 64-битной версии. Установщик для 64-битной Windows также включает 32-битную часть. Что означает что вы не должны устанавливать 32-битную версию отдельно чтобы контекстное меню и оверлей TortoiseSVN работало в 32-битных приложениях.

Поддержка Windows 98, Windows ME и Windows NT4 была прекращена начиная с версии 1.2.0 и Windows 2000 и XP до SP2 начиная с 1.7.0. Поддержка Windows XP с SP3 была прекращена начиная с версии 1.9.0. Вы все еще можете загрузить и установить старые версии, если они вам понадобятся.

Установка

TortoiseSVN поставляется в виде простого в использовании установочного файла. Сделайте на нем двойной клик и следуйте инструкциям — остальное он сделает за вас. Не забудьте перезагрузить компьютер после установки.

Важно

Вам необходимы привилегии администратора для установки TortoiseSVN. Установщик запросит данные администратора при необходимости.

Доступны языковые пакеты, которые переводят интерфейс TortoiseSVN на множество языков. Пожалуйста, посетите Приложение G, Языковые пакеты и проверка правописания для дополнительной информации о том, как их установить.

Работа с TortoiseSVN

В данном HOWTO будет подробно рассказано как работать с самым популярным SVN-клиентом под Windows: скачивать и обновлять репозитории, создавать теги и ветки проекта, коммитить (публиковать) свою рабочую копию, откатывать сделанные изменения и многое другое.

Где можно скачать программу

Скачать программу можно на её официальном сайте на странице Downloads: http://tortoisesvn.net/downloads. Там же можно скачать пакет локализации, содержащий помимо перевода интерфейса программы, ещё и словарь проверки орфографии (применяется при коммите изменений (см. ниже)).

Программа TortoiseSVN интегрируется в Проводник Windows (Windows Explorer) и все действия с ней выполняются из контекстного меню каталогов (папок).

Начнём с самого простого — скачивания одного из репозиториев на свой компьютер.

Скачивание репозитория SVN (Checkout)

Если Вы хотите скачать репозиторий какого-нибудь проекта, то Вы должны знать его URL, а также логин и пароль для доступа (если не указаны, то для анонимного доступа (только чтение) используется логин и пароль anonsvn). URL’ы могут быть:

  • стандартный svn:// — подключение напрямую к Subversion-серверу;
  • http:// — подключение к Subversion-серверу через веб (так работает большинство серверов, т.к. позволяет просматривать проект не имея SVN-клиента напрямую через веб-браузер);
  • https:// — то же, что и http://, но через SSL;
  • svn+ssh:// — svn через SSH (редко используется в настоящее время).

Допустим, что URL нам известен, поэтому чтобы скачать репозиторий, мы должны сделать следующее:

  1. Создаём папку, в которую будем скачивать репозитории (для удобства лучше хранить все репозитории в одной папке, например, C:\SVN).
  2. Заходим в неё в проводнике Windows, нажимаем правой кнопкой мыши по свободному месту и выбираем «SVN Checkout…«.
  3. В поле «URL of repository» пишем полный URL до репозитория SVN, который нам нужно скачать, а в поле «Checkout directory» корректируем путь, в которой будет помещена локальная копия. Внимание! Вам нужно делать checkout только каталога /trunk/ svn-репозитория, либо корневого, если /trunk/ не существует (очень редко, т.к. в 99% репозиториев trunk существует и содержит всегда самую последнюю версию файлов).
  4. В списке «Checkout Depth» укажите «Fully recursive«, что означает, что будет скачан весь репозиторий от указанного пути. Если установить флажок «Omit externals«, то внешние файлы, на которые есть ссылки в репозитории (например, из других репозиториев, либо репозиториев третьих лиц), скачаны не будут, поэтому ставить флажок здесь не рекомендуется.
  5. В блоке «Revision» Вы можете запросить выдать Вам последнюю версию репозитория: «HEAD revision» (рекомендуется именно этот вариант), либо указанную Вам в поле ревизию: «Revision ###» (не рекомендуется).
  6. Кнопка «Show log» покажет Вам список изменений в репозитории с информацией об авторах каждого изменения, описании изменений (если авторы их вводили при коммите изменений), а также списке добавленных, изменённых и удалённых файлов. Здесь же можно просмотреть чем файл одной ревизии (версии) отличается от файла другой, а также запросить показать унифицированный diff-файл изменений либо нескольких файлов, либо нескольких ревизий (отображается только для текстовых файлов). Более подробную информацию о Log Viewer читайте ниже.
  7. Нажимаем кнопку «OK» и ждём скачивания репозитория с Subversion-сервера (зависит от скорости Вашего Интернет-соединения, а также от загруженности svn-сервера). Внимание! Некоторые svn-серверы могут запросить пароль. Если Вы не знаете пароля, то вводите anonsvn как логин и пароль. Это стандартный логин/пароль для анонимного доступа. Если Вы хотите в дальнейшем публиковать свои изменения в этот репозиторий и у Вас есть на это право, то введите здесь свой логин и пароль .
  8. Готово. В каталоге, который Вы указали на третьем шаге в поле «Checkout directory» теперь находится локальная версия репозитория (рабочая копия).

Обновление скачанного репозитория (Update)

SVN и создавался для удобного управления проектам, а также поддержания их в актуальном состоянии, поэтому вторая по значимости операция — обновления скачанной рабочей копии. Рекомендуется как можно чаще обновлять свои рабочие копии. При обновлении скачиваются только изменённые файлы, добавляются новые и удаляются удалённые из репозитория файлы. Итак, чтобы обновить рабочую копию, нужно:

  1. Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
  2. Нажимаем правой кнопкой по свободному месту в папке, выбираем «SVN Update«.
  3. В открывшемся окне наблюдаем за процессом обновления: списком добавленных, изменённых и/или удалённых файлов, текущим номером версии. Здесь же можно нажать кнопку «Show log…» чтобы просмотреть список, прочитать описание изменений (если указано), сравнить текущую версию с предыдущей и т.д.
  4. Нажмите «OK» чтобы закрыть это окно. Репозитарий обновлён до последней версии.

Сохранение своих изменений в репозиторий (Commit)

Если Вы хотите внести свои изменения в скачанный репозиторий и у Вас есть на это право (право коммита в репозиторий), то просто начинайте работать с локальной рабочей копией как с обычной папкой: создавайте, редактируйте, удаляйте файлы и/или папки. Теперь чтобы внести изменения в репозиторий, нужно:

  1. Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows. Внимание! Рабочая копия должна быть скачана от логина пользователя, у которого есть право на коммит изменений (коммит-флаг).
  2. Нажимаем правой кнопкой по свободному месту в папке, выбираем «SVN Commit…«.
  3. В открывшемся окне «Commit» в секции «Message» вводим краткое описание своих изменений (это рекомендуется делать всегда, особенно если не Вы один работаете над проектом), но описание можно и оставить пустым (не рекомендуется, т.к. другие разработчики или пользователи не смогут понять что именно было изменено). В этом поле разрешено использовать буквы национальных алфавитов (присутствует полная поддержка юникода), но, к сожалению, некоторые веб-клиенты svn (отображающие в браузере список изменений) вместо русских букв отображают кракозябры. TortoiseSVN лишён этого недостатка.
  4. В секции «Changes made (double-click on file for diff)» Вы увидите список всех изменённых, добавленных и удалённых Вами файлов локальной рабочей копии. У изменённых файлов будут автоматически стоять флажки, у остальных — нет. Установите флажки у тех файлов, изменения которых должны быть загружены на svn-сервер (есть флажок — файл обновляется, добавляется, удаляется; нет флажка — остаётся без изменений). Двойной щелчок по файлу запустит утилиту Tortoise Merge (предназначена для сравнения версий файлов), которая покажет последнюю версию файла из репозитория SVN в левом окне и текущую рабочую копию в правом. Изменения будут выделены: удалённые строки зачёркнуты, добавленные выделены.
  5. После выделения нужных файлов или всех сразу («Select / deselect all«), нажмите кнопку «OK» и дождитесь окончания загрузки изменений на сервер. Будет открыто окно со списком добавленных, изменённых и/или удалённых файлов, а также указан текущий номер ревизии.

Работа с репозиторием напрямую на сервере

Иногда требуется работать с svn-репозиторием напрямую на сервере не скачивая его на локальный компьютер. Для этих целей существует утилита «SVN Repo-browser«, также входящая в состав TortoiseSVN. Работать с ней очень просто:

  1. Запускаем проводник Windows, заходим в любую папку, нажимаем правой кнопкой по свободному месту и выбираем «SVN Repo-browser«.
  2. В открывшемся окне «URL» вводим полный URL нужного нам svn-репозитория и нажимаем «OK«.
  3. Будет открыто главное окно утилиты: «%URL% — Repository Browser«, где %URL% — URL репозитория. Работать в этом окне можно так же, как в Проводнике Windows. Разрешено перетаскивание объектов (Drag and Drop). Через контекстное меню файла/папки можно:
    • удалять «Delete…«, переименовывать «Rename» файлы и каталоги (папки);
    • добавить файл («Add file…«) или папку («Add folder…«) в репозиторий;
    • создать пустую папку («Create folder«) в репозитории;
    • скачать («Checkout…«) репозиторий (см. выше);
    • извлечь файл или папку из репозитория без служебных каталогов («Export…«). Извлечённая папка отличается от рабочей копии тем, что её нельзя обновлять и она не содержит служебных скрытых каталогов .svn;
    • создать ветку или тег («Copy to…«);
    • изменять свойства файла или папки («Show properties«).
  4. Любое изменение требует ввести текст комментария (разрешается не вводить и оставить поле пустым) и увеличивает номер ревизии на единицу. Изменения применяются немедленно.
  5. Нажмите кнопку «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/, а выше него на один уровень! Чтобы создать метку или ветвление, нужно ( у Вас должно быть право коммита в репозиторий для создания меток или ветвлений ):

  1. Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
  2. Нажимаем правой кнопкой по свободному месту и выбираем «TortoiseSVN» — «Branch/tag…«.
  3. В открывшемся окне в поле «To URL» введите полный URL с путём до нового тега. Пример: http://ваш_проект.svn.sourceforge.net/tags/RELEASE-1.0 (это только пример; пути должны указывать на Ваш проект).
  4. В секции «Create copy in the repository from» укажите «HEAD revision in the repository» (последняя ревизия; рекомендуется), либо укажите номер ревизии вручную, выбрав «Specific revision in the repository ###«, либо создайте тег из текущей рабочей копии «Working copy» (не рекомендуется).
  5. В секции «Log message» укажите комментарий к ревизии (например, %НАЗВАНИЕ_ПРОЕКТА% %ВЕРСИЯ_ПРОЕКТА% Released).
  6. Нажмите «OK«. Флажок в строке «Switch working copy to new branch/tag» ставить не рекомендуется, т.к. это переключит Вашу текущую рабочую копию на новый путь, что может привести к различным ошибкам и проблемам.

Откат изменений в рабочей копии

Если работая с локальным репозиторием Вы совершили какую-либо ошибку, например, повредили какой-то файл, неправильно отредактировали и т.д., то это легко исправить:

  1. Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
  2. Нажимаем правой кнопкой по свободному месту и выбираем «TortoiseSVN» — «Revert…«.
  3. В открывшемся окне Вы увидите список всех изменённых файлов Вашей рабочей копии. Установите флажок у того файла, который Вы хотите откатить до версии из репозитория, либо выберите сразу все файлы («Select / deselect all«). Двойной щелчок по файлу покажет его отличия от оригинального файла.
  4. Нажмите «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» отображает различную статистическую информацию: наиболее активный и наименее активный автор, количество изменений в репозитории в неделю, общее количество изменений и т.д.

TurtoiseSVN — инструкция как пользоваться на локальном компьютере. Создание локального репозитория

Опишу схему создания локального репозитория SVN с помощью популярной программы TurtoiseSVN.

Используемые версии
  • Windows 8.1
  • TurtoiseSVN — 1.8.11
1. Описание задачи

Необходимо создать локальный репозиторий subversion и хранить в нем свои проекты.

Многие из вас работают над своими собственными проектами и хотят иметь возможность контролировать версии программы на разных стадиях разработки. Для этого удобно сделать репозиторий на локальном (например домашнем) компьютере и коммитить в него свои программы.

2. Создание репозитория

Установку программы TurtoiseSVN и самого svn опущу, т.к. в ней нет ничего сложного. Итак, сначала нам необходимо создать репозиторий svn в котором будут складывать различные версии какого-либо проекта. Для этого создаем папку где будет находится репозиторий и жмем в ней правой кнопкой. Выбираем TurtoiseSVN > Create repository here .

create reposiroty here

Будет предложено на выбор создание стандартной структуры каталогов или ручками.

StartRepoBrowser

Первый вариант создаст в корне репозитория три каталога trunk — основная линия разработки, branches — ответвления в проекте (например решили запилить фичу, но пока не в основном проекте) и tags — содержит копии меток.

потом такую структуру можно поделить на несколько проектов:

Лично я привык создавать сначала каталоги с названиями проекта, а в них уже эти три каталога. Поэтому выбираю второй вариант:

create folders in repo

Создаю два каталога для проектов. Теперь у нас два возможных случая.

Импорт существующего проекта в локальный репозиторий

Допустим у вас уже есть какой-либо проект и вам необходимо залить его в репозиторий. Таким образом вы сможете дальше коммитить разные версии и пользоваться всеми благами svn. Для этого нажимайте на папке с проектом правой кнопкой и далее TurtoiseSVN > Import . В этом примере будет импортироваться существующий проект с названием ProjectForSVN :

omport to svn

В появившимся окне выбираем в какой каталог в репозитории будет залит существующий проект. Я выбрал Project1:

import dialog

После импорта увидим, что наш проект отображается в репозитории. Для этого в любом месте жмем TurtoiseSVN > Repo-browser :

after import

Но это еще не всё. То что вы залили существующий проект в репозиторий не означает что он будет версионироваться! Нам нужно сделать ещё одно действие.

В каталоге, где будет храниться ваш разрабатываемый проект нажимаем правой кнопкой и выбираем Checkout :

checkout

Тут важный момент — первая строчка URL of repository это путь в репозитории, где лежит проект (не тот который вы запускаете из среды разработки!). Ниже Checkout directory — это каталог в котором будет лежать ваш разрабатываемый проект (тот, который открываете в среде разработки). И как раз эту папку вы будете коммитить, а данные о различиях в версиях будут записываться в репозиторий.

Напомню, что уже существующий проект назывался ProjectForSVN , а выбрал папку для checkout с названием Project1 (совпадает с именем в репозитории). Именно она теперь будет поддерживать просмотр версий и прочее.

Импорт нового (пустого) проекта в локальный репозиторий

Если у вас еще нет никакого проекта, то необходимо нажать в пустом месте checkout и выбрать каталог в котором будет содержаться проект из репозитория:

# Работа с SVN через TortoiseSVN. 1. Выгрузка , фиксация, журнал

SVN — популярная система контроля версий. Система контроля версий применяется когда несколько человек совместно редактируют файлы. При правильной работе с SVN изменения разных людей не затирают друг друга и есть возможность посмотреть кто, когда и какие изменения вносил.

open in new window — GUI-клиент для SVN. Ниже показаны примеры работы с TortoiseSVN и описание часто возникающий проблем. Для полного понимая работы советую прочитать документацию

Будем считать что TortoiseSVN уставлена и русифицирована. Получен адрес репозитория svn://89.223.27.224/project в котором добавлены два пользователя Petya и Vasya.

# Извлечение репозитория

В SVN всегда есть один центральный репозиторий в котором хранятся все изменения. Пользователи для работы выгружают к себе рабочую копию.

Петя создает новый каталог project и выгружает рабочую копию.

Извлечение рабочей копии

В диалоге извлечения он указывает только адрес репозитория

Извлечение рабочей копии

Зеленая метка на значке папки показывает что папка является рабочей копией SVN и изменений в ней нет.

Метка TortoiseSVN на каталоге

В каталоге project появилась скрытая папка .svn . SVN хранит в ней информацию связанную с рабочей копией.

Скрытая папка .svn

# Фиксация в репозиторий

Петя создает новый файл main.py в рабочей копии и нажимает Фиксировать

Фиксация изменений

В диалоге фиксации Петя заполняет комментарий к фиксации, отмечает файл main.py и нажимает ОК.

Фиксация изменений

Файл зафиксирован, у него появилась отметка такая же как у каталога.

Отметка TortoiseSVN на файле

Пете понадобилось изменить файл main.py — вынести весь код в функцию.

После изменений на файле новая красная отметка — файл содержит изменения.

Отметка TortoiseSVN на измененном файле

Петя снова фиксирует

Фиксация изменений

# Просмотр истории

Теперь посмотрим историю изменений

Просмотр Журнала

Просмотр Журнала

В журнале видно что было две фиксации, их сделал Петя, видно комментарий к ним.

Каждая фиксация имеет уникальный номер для всего репозитория. Установленная в рабочей копии ревизия выделена жирным — сейчас это последняя ревизия номер 2.

Работа с TortoiseSVN

В данном HOWTO будет подробно рассказано как работать с самым популярным SVN-клиентом под Windows: скачивать и обновлять репозитории, создавать теги и ветки проекта, коммитить (публиковать) свою рабочую копию, откатывать сделанные изменения и многое другое.

Где можно скачать программу

Скачать программу можно на её официальном сайте на странице Downloads: http://tortoisesvn.net/downloads. Там же можно скачать пакет локализации, содержащий помимо перевода интерфейса программы, ещё и словарь проверки орфографии (применяется при коммите изменений (см. ниже)).

Программа TortoiseSVN интегрируется в Проводник Windows (Windows Explorer) и все действия с ней выполняются из контекстного меню каталогов (папок).

Начнём с самого простого — скачивания одного из репозиториев на свой компьютер.

Скачивание репозитория SVN (Checkout)

Если Вы хотите скачать репозиторий какого-нибудь проекта, то Вы должны знать его URL, а также логин и пароль для доступа (если не указаны, то для анонимного доступа (только чтение) используется логин и пароль anonsvn). URL’ы могут быть:

  • стандартный svn:// — подключение напрямую к Subversion-серверу;
  • http:// — подключение к Subversion-серверу через веб (так работает большинство серверов, т.к. позволяет просматривать проект не имея SVN-клиента напрямую через веб-браузер);
  • https:// — то же, что и http://, но через SSL;
  • svn+ssh:// — svn через SSH (редко используется в настоящее время).

Допустим, что URL нам известен, поэтому чтобы скачать репозиторий, мы должны сделать следующее:

  1. Создаём папку, в которую будем скачивать репозитории (для удобства лучше хранить все репозитории в одной папке, например, C:\SVN).
  2. Заходим в неё в проводнике Windows, нажимаем правой кнопкой мыши по свободному месту и выбираем «SVN Checkout…«.
  3. В поле «URL of repository» пишем полный URL до репозитория SVN, который нам нужно скачать, а в поле «Checkout directory» корректируем путь, в которой будет помещена локальная копия. Внимание! Вам нужно делать checkout только каталога /trunk/ svn-репозитория, либо корневого, если /trunk/ не существует (очень редко, т.к. в 99% репозиториев trunk существует и содержит всегда самую последнюю версию файлов).
  4. В списке «Checkout Depth» укажите «Fully recursive«, что означает, что будет скачан весь репозиторий от указанного пути. Если установить флажок «Omit externals«, то внешние файлы, на которые есть ссылки в репозитории (например, из других репозиториев, либо репозиториев третьих лиц), скачаны не будут, поэтому ставить флажок здесь не рекомендуется.
  5. В блоке «Revision» Вы можете запросить выдать Вам последнюю версию репозитория: «HEAD revision» (рекомендуется именно этот вариант), либо указанную Вам в поле ревизию: «Revision ###» (не рекомендуется).
  6. Кнопка «Show log» покажет Вам список изменений в репозитории с информацией об авторах каждого изменения, описании изменений (если авторы их вводили при коммите изменений), а также списке добавленных, изменённых и удалённых файлов. Здесь же можно просмотреть чем файл одной ревизии (версии) отличается от файла другой, а также запросить показать унифицированный diff-файл изменений либо нескольких файлов, либо нескольких ревизий (отображается только для текстовых файлов). Более подробную информацию о Log Viewer читайте ниже.
  7. Нажимаем кнопку «OK» и ждём скачивания репозитория с Subversion-сервера (зависит от скорости Вашего Интернет-соединения, а также от загруженности svn-сервера). Внимание! Некоторые svn-серверы могут запросить пароль. Если Вы не знаете пароля, то вводите anonsvn как логин и пароль. Это стандартный логин/пароль для анонимного доступа. Если Вы хотите в дальнейшем публиковать свои изменения в этот репозиторий и у Вас есть на это право, то введите здесь свой логин и пароль .
  8. Готово. В каталоге, который Вы указали на третьем шаге в поле «Checkout directory» теперь находится локальная версия репозитория (рабочая копия).

Обновление скачанного репозитория (Update)

SVN и создавался для удобного управления проектам, а также поддержания их в актуальном состоянии, поэтому вторая по значимости операция — обновления скачанной рабочей копии. Рекомендуется как можно чаще обновлять свои рабочие копии. При обновлении скачиваются только изменённые файлы, добавляются новые и удаляются удалённые из репозитория файлы. Итак, чтобы обновить рабочую копию, нужно:

  1. Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
  2. Нажимаем правой кнопкой по свободному месту в папке, выбираем «SVN Update«.
  3. В открывшемся окне наблюдаем за процессом обновления: списком добавленных, изменённых и/или удалённых файлов, текущим номером версии. Здесь же можно нажать кнопку «Show log…» чтобы просмотреть список, прочитать описание изменений (если указано), сравнить текущую версию с предыдущей и т.д.
  4. Нажмите «OK» чтобы закрыть это окно. Репозитарий обновлён до последней версии.

Сохранение своих изменений в репозиторий (Commit)

Если Вы хотите внести свои изменения в скачанный репозиторий и у Вас есть на это право (право коммита в репозиторий), то просто начинайте работать с локальной рабочей копией как с обычной папкой: создавайте, редактируйте, удаляйте файлы и/или папки. Теперь чтобы внести изменения в репозиторий, нужно:

  1. Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows. Внимание! Рабочая копия должна быть скачана от логина пользователя, у которого есть право на коммит изменений (коммит-флаг).
  2. Нажимаем правой кнопкой по свободному месту в папке, выбираем «SVN Commit…«.
  3. В открывшемся окне «Commit» в секции «Message» вводим краткое описание своих изменений (это рекомендуется делать всегда, особенно если не Вы один работаете над проектом), но описание можно и оставить пустым (не рекомендуется, т.к. другие разработчики или пользователи не смогут понять что именно было изменено). В этом поле разрешено использовать буквы национальных алфавитов (присутствует полная поддержка юникода), но, к сожалению, некоторые веб-клиенты svn (отображающие в браузере список изменений) вместо русских букв отображают кракозябры. TortoiseSVN лишён этого недостатка.
  4. В секции «Changes made (double-click on file for diff)» Вы увидите список всех изменённых, добавленных и удалённых Вами файлов локальной рабочей копии. У изменённых файлов будут автоматически стоять флажки, у остальных — нет. Установите флажки у тех файлов, изменения которых должны быть загружены на svn-сервер (есть флажок — файл обновляется, добавляется, удаляется; нет флажка — остаётся без изменений). Двойной щелчок по файлу запустит утилиту Tortoise Merge (предназначена для сравнения версий файлов), которая покажет последнюю версию файла из репозитория SVN в левом окне и текущую рабочую копию в правом. Изменения будут выделены: удалённые строки зачёркнуты, добавленные выделены.
  5. После выделения нужных файлов или всех сразу («Select / deselect all«), нажмите кнопку «OK» и дождитесь окончания загрузки изменений на сервер. Будет открыто окно со списком добавленных, изменённых и/или удалённых файлов, а также указан текущий номер ревизии.

Работа с репозиторием напрямую на сервере

Иногда требуется работать с svn-репозиторием напрямую на сервере не скачивая его на локальный компьютер. Для этих целей существует утилита «SVN Repo-browser«, также входящая в состав TortoiseSVN. Работать с ней очень просто:

  1. Запускаем проводник Windows, заходим в любую папку, нажимаем правой кнопкой по свободному месту и выбираем «SVN Repo-browser«.
  2. В открывшемся окне «URL» вводим полный URL нужного нам svn-репозитория и нажимаем «OK«.
  3. Будет открыто главное окно утилиты: «%URL% — Repository Browser«, где %URL% — URL репозитория. Работать в этом окне можно так же, как в Проводнике Windows. Разрешено перетаскивание объектов (Drag and Drop). Через контекстное меню файла/папки можно:
    • удалять «Delete…«, переименовывать «Rename» файлы и каталоги (папки);
    • добавить файл («Add file…«) или папку («Add folder…«) в репозиторий;
    • создать пустую папку («Create folder«) в репозитории;
    • скачать («Checkout…«) репозиторий (см. выше);
    • извлечь файл или папку из репозитория без служебных каталогов («Export…«). Извлечённая папка отличается от рабочей копии тем, что её нельзя обновлять и она не содержит служебных скрытых каталогов .svn;
    • создать ветку или тег («Copy to…«);
    • изменять свойства файла или папки («Show properties«).
  4. Любое изменение требует ввести текст комментария (разрешается не вводить и оставить поле пустым) и увеличивает номер ревизии на единицу. Изменения применяются немедленно.
  5. Нажмите кнопку «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/, а выше него на один уровень! Чтобы создать метку или ветвление, нужно ( у Вас должно быть право коммита в репозиторий для создания меток или ветвлений ):

  1. Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
  2. Нажимаем правой кнопкой по свободному месту и выбираем «TortoiseSVN» — «Branch/tag…«.
  3. В открывшемся окне в поле «To URL» введите полный URL с путём до нового тега. Пример: http://ваш_проект.svn.sourceforge.net/tags/RELEASE-1.0 (это только пример; пути должны указывать на Ваш проект).
  4. В секции «Create copy in the repository from» укажите «HEAD revision in the repository» (последняя ревизия; рекомендуется), либо укажите номер ревизии вручную, выбрав «Specific revision in the repository ###«, либо создайте тег из текущей рабочей копии «Working copy» (не рекомендуется).
  5. В секции «Log message» укажите комментарий к ревизии (например, %НАЗВАНИЕ_ПРОЕКТА% %ВЕРСИЯ_ПРОЕКТА% Released).
  6. Нажмите «OK«. Флажок в строке «Switch working copy to new branch/tag» ставить не рекомендуется, т.к. это переключит Вашу текущую рабочую копию на новый путь, что может привести к различным ошибкам и проблемам.

Откат изменений в рабочей копии

Если работая с локальным репозиторием Вы совершили какую-либо ошибку, например, повредили какой-то файл, неправильно отредактировали и т.д., то это легко исправить:

  1. Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
  2. Нажимаем правой кнопкой по свободному месту и выбираем «TortoiseSVN» — «Revert…«.
  3. В открывшемся окне Вы увидите список всех изменённых файлов Вашей рабочей копии. Установите флажок у того файла, который Вы хотите откатить до версии из репозитория, либо выберите сразу все файлы («Select / deselect all«). Двойной щелчок по файлу покажет его отличия от оригинального файла.
  4. Нажмите «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» отображает различную статистическую информацию: наиболее активный и наименее активный автор, количество изменений в репозитории в неделю, общее количество изменений и т.д.

Бетке Сергей: iT блог

В жизни современного системного администратора сценарии играют решающую роль, что правильно. Но рождённый однажды сценарий не останавливается на месте, а развивается. Иногда при этом возникает необходимость найти изменения, которые привели к нежелательным последствиям. И тут без системы управления изменениями никуда. Рассмотрим одну из таких систем.

Введение

В своих первых более менее крупных проектах использовал MS Visual Studio (тогда ещё – 6ая студия была). Тогда и пришла необходимость использовать систему управления версиями с многопользовательским доступом. И использовал, естественно, Visual SourceSafe. Но этот продукт входит в состав студии и бесплатным не является. Учитывая, что для целей администрирования нам хватает от студии MS Visual Studio Shell (что бесплатно), использовать не бесплатный Visual SourceSafe смысла нет.

Посему решил изучить Tortoise SVN (бесплатный), о котором далее и пойдёт речь.

Установка и распространение

Для начала – загрузим себе дистрибутив. Доступны варианты и на 32 бита, и на 64. Пробую 1.6.12. Качаем там же и русский language pack.

Контролируем изменения: управление версиями в Tortoise SVN Прелесть в том, что дистрибутивы представляют из себя msi пакеты, которые можно без проблем распространить по сети (администраторам, разработчиками, может – и ещё кому потребуется). Распространяем с помощью GPO.

Устанавливается совершенно без проблем, что радует. Огорчает лишь тот факт, что дистрибутив, хоть и msi, но не использует механизмов восстановления и установки по требованию.

Первый запуск

Контролируем изменения: управление версиями в Tortoise SVN Запустим продукт в первый раз. Пуск \ TortoiseSVN \ Settings. Первое, что следует сделать – выбрать русский язык интерфейса (если Вы уже установили языковой пакет, он также через GPO прекрасно распространяется). в Global Ignore Pattern прописываем маски имени файлов, которые не должны подвергаться контролю версий, сравнениям и так далее. Пока оставил как есть при установке.

Контролируем изменения: управление версиями в Tortoise SVN Несколько “бесить” могут настройки на следующей странице Context Menu. Выбранные глаголы интегрируются во все папки, что несколько мешает. Разработчики предоставили нам возможность указать маски каталогов (вида C:\Windows\*), для которых в контекстном меню глаголы SVN появляться не будут.

Контролируем изменения: управление версиями в Tortoise SVN На странице Dialog1 следует заполнить Default Path. Когда Вы будете “забирать” файлы на редактирование, они должны быть скопированы в доступную Вам папку. И по умолчанию Вам будет предлагаться путь, который Вы здесь и укажете.

Контролируем изменения: управление версиями в Tortoise SVN Следует обратить внимание на страницу Icon Overlays. По умолчанию выбрана опция Default Status Cache. Есть также вариант Shell. Суть в следующем: в первом варианте за отображение иконки папки отвечает отдельный процесс SVN, что несколько грузит проводник и при некоторых условиях может быть нежелательным. Если иконки видеть хотим, но проводник грузить не хотим – можно использовать вариант Shell, но при этом иконка будет присвоена только корневой папке проект, для вложенных папок иконка обрабатываться не будет.

Страница Network позволяет нам настроить proxy сервер. Эта опция будет полезна, если Вы разместите хранилище на web ресурсе, а не на сетевом или локальном ресурсе.

Кроме всего прочего, SVN обеспечивает интеграцию с bag tracking системами (Issue Tracker Integration). Эту опцию мы оставим на закуску, для начала имеет смысл просто с хранилищем и контролем версий разобраться.

Сам Tortoise SVN представляет Shell Namespace Extension к проводнику, а также предоставляет моникёр tsvn:http://tortoisesvn.googlecode.com/svn/trunk/. Подобного рода url обрабатываются SVN и рассматриваются как web сервисы хранилищ. По указанному url скачал все исходники SVN (75 Мб :-)).

Создадим первый проект, с этой целью в первую очередь почитаем документацию.

Что делает TortoiseSVN таким хорошим клиентом Subversion? Вот краткий список возможностей (да простят мне разработчики некоторый плагиат):

  1. Интеграция с оболочкой.
    TortoiseSVN интегрируется непосредственно в оболочку Windows (т.е. в Проводник). Контекстные меню TortoiseSVN работают во многих других файловых менеджерах, и в диалогах для открытия файлов, используемых в большинстве стандартных Windows-приложений.
  2. Пометки на значках.
    Статус каждого версированного файла и папки отображается при помощи маленькой пометки поверх основного значка. Таким образом, вы сразу можете видеть состояние вашей рабочей копии.
  3. Простой доступ к командам Subversion.
    Все команды Subversion доступны из контекстного меню Проводника. TortoiseSVN добавляет туда собственное подменю.
  4. Версирование папок.
    CVS отслеживает только историю отдельных файлов, тогда как Subversion реализует «виртуальную» версионную файловую систему, которая отслеживает изменения в целых деревьях папок во времени. Файлы и папки являются версированными. В результате, есть команды переместить и копировать, реально выполняемые на стороне клиента и работающие непосредственно с файлами и папками.
  5. Атомарные фиксации.
    Фиксация сохраняется в хранилище либо полностью, либо не сохраняется вообще. Это позволяет разработчикам фиксировать изменения, собранные в логически связанные части.
  6. Версированные метаданные
    Каждый файл и папка имеет прикреплённый невидимый набор «свойств». Вы можете создавать и сохранять произвольные пары ключ/значение для собственных нужд. Свойства тоже версируются во времени, как и содержимое файла.
  7. Возможность выбора сетевого уровня.
    В Subversion есть абстрагируемое понятие доступа к хранилищу, которое упрощает реализацию новых сетевых механизмов. «Усовершенствованный» сетевой сервер Subversion является модулем для веб-сервера Apache, который использует для взаимодействия диалект HTTP под названием WebDAV/DeltaV. Это даёт Subversion большие преимущества в стабильности и совместимости, и предоставляет различные ключевые возможности без дополнительных затрат: проверка личности (аутентификация), проверка прав доступа (авторизация), сжатие потока данных при передаче, просмотр хранилища. Также доступна меньшая, автономная версия сервера Subversion, взаимодействующая по собственному протоколу, который легко может быть туннелирован через ssh.
  8. Единый способ обработки данных.
    Subversion получает различия между файлами при помощи бинарного разностного алгоритма, который работает одинаково как с текстовыми (читаемыми человеком), так и с бинарными (не читаемыми человеком) файлами. Оба типа файлов содержатся в хранилище в сжатом виде, а различия передаются по сети в обоих направлениях.
  9. Эффективные ветки и метки.
    Стоимость создания веток и меток не обязательно должна быть пропорциональна размеру проекта. Subversion создаёт ветки и метки, просто копируя проект с использованием механизма, похожего на жёсткие ссылки в NTFS. Благодаря этому, операции по созданию веток и меток происходят за одинаковое, очень малое время и занимают очень мало места в хранилище.
  10. Расширяемость.
    Subversion не имеет исторического багажа. Она реализована в виде набора совместно используемых библиотек на языке C с хорошо определёнными API. Это делает Subversion чрезвычайно удобной в сопровождении системой, пригодной для взаимодействия с другими приложениями и языками программирования.
Возможные варианты хранилища

Возможные варианты хранилища и доступа к нему описаны здесь:

file://
Прямой доступ к хранилищу на локальном или сетевом диске.

http://
Доступ через протокол WebDAV к Subversion, работающем на сервере Apache.

https://
Тоже самое, что и http:// , но с шифрованием SSL

svn://
Не аутентифицируемый TCP/IP доступ через собственный протокол к серверу svnserve .

svn+ssh://
Аутентифицируемый, зашифрованный TCP/IP доступ через собственный протокол к серверу svnserve .

На этом этапе нас будет интересовать только file://

Создаём первое хранилище

Контролируем изменения: управление версиями в Tortoise SVN Создадим локальное хранилище. Скажем, в папке C:\Work\test\SVN . В дальнейшем перенесём его на сетевой ресурс. Исходя из полученных рекомендаций, выбираем систему хранения FSFS для создаваемого репозитория. Процедура создания описана здесь: http://tortoisesvn.net/docs/release/TortoiseSVN_ru/tsvn-repository.html.

Контролируем изменения: управление версиями в Tortoise SVN Вид папки после создания репозитория в ней показан на рисунке слева. Для того, чтобы увидеть его содержимое (а хранилище сейчас пустое), в контекстном меню воспользуемся глоголом Контролируем изменения: управление версиями в Tortoise SVNОбозреватель хранилища”. И действительно – хранилище пустое :-).

В указанной выше статье настоятельно просят нас использовать не сетевое хранилище, а клиент-сервер технологию. Хотя для нескольких администраторов, думается мне, эта технология будет избыточной. Посему пока остановлюсь на файл-серверной технологии.

Последуем совету и создадим через обозреватель хранилища рекомендуемые папки. Большинство людей создают папку trunk , в которой ведётся «основная линия» разработки, папку branches , содержащую копии ответвлений, и папку tags для копий меток. Если хранилище содержит только один проект, тогда их часто создают как папки верхнего уровня:

Контролируем изменения: управление версиями в Tortoise SVN Сделаем мы через импорт временной папки, как и описано в конце главы. Результат положительный.

Итак, теперь мы имеем хранилище, доступное по следующему url: tsvn:file:///c:/work/temp/svn/SysAdm. Благодаря префиксу tsvn:, по такому url будет открываться обозреватель хранилища. Контролируем изменения: управление версиями в Tortoise SVN Так что теперь можем создать ярлык на наш первый репозиторий.

End User Interface

Контролируем изменения: управление версиями в Tortoise SVN Пользователю достаточно один раз получить содержимое в свою рабочую папку. В дальнейшем он имеет возможность выполнить все необходимые действия из контекстного меню проводника в своей папки (рисунок справа). Обратите внимание на информативные пометки в иконках файлов и папок! Ну очень удобно.

Русские Блоги

TortoiseSVN — это система контроля версий для управления кодом проекта, основанная на централизованной системе контроля версий. На работе, в связи с необходимостью фактических работ по развитию, отдел использует SVN для управления ежедневными задачами разработки проекта. Для проекта часто требуется несколько дней и совместная работа нескольких человек или разных команд, поэтому контроль версий также особенно важен. Ниже приводится мой первый опыт использования инструмента SVN.

1. Установка клиента TortoiseSVN

1.2 Для регистрации введите адрес в адресной строке: http:// /svnmanager/index.php Чтобы войти в приветственный интерфейс SVNManager

Во-вторых, выберите каталог SVN

2.1 После завершения установки в соответствии с настройками по умолчанию щелкните правой кнопкой мыши две опции, выберите TortoiseSVN → Репо-браузер, чтобы открыть каталог SVN, и введите адрес SVN.

SVN-url

Рабочий каталог можно увидеть ниже. Все файлы проекта могут быть общими, используйте CheckOut Загрузить в текущий каталог

workspace
2.2. В зависимости от потребностей его также можно загрузить на локальный диск.
workspace-2

В-третьих, добавить отправку файла

3.1 Щелкните правой кнопкой мыши TortoiseSVN → добавить, чтобы добавить файлы в каталог.

3.2 Выберите SVN Commit для отправки. Все остальные это видят. После завершения отправки знак "+" на файле становится зеленой галочкой.

В-четвертых, обновленная версия

4.1 Потому что система контроля версий в основном используется командой. Следовательно, этот же файл все еще можно редактировать.

4.2. Обеспечить синхронизацию файлов в рабочем каталоге с файлами группы. Перед редактированием рекомендуется обновить.

4.3 Здесь щелкните правой кнопкой мыши значок файла или каталога, который вы хотите обновить, и выберите «Обновление SVN».

Пятерка, ретроспективная версия

5.1 Вы можете использовать функцию SVN «Обновить до ревизии», чтобы вернуться к определенной дате или версии. Щелкните правой кнопкой мыши значок файла или каталога, который вы хотите обновить. И выберите TortoiseSVN-> Обновить до версии.
update
5.2. Вы можете вернуться к версии Head. Конечно, вы также можете выбрать конкретную версию журнала шоу.

progress

Шесть, заблокировать и разблокировать

6.1 Установите блокировку перед каждым изменением, чтобы другие люди не могли изменить этот файл. В противном случае, если два человека изменят один и тот же файл, это будет проблемой. Значок показывает небольшой замок после блокировки

6.2 Используйте блокировку разблокировки, чтобы разблокировать после модификации

Семь, создайте новый бренд

7.1. Создайте новый бренд в стволе, TortoiseSVN → Branch / tag

7.2 Убедитесь, что каталог в From WC по URL: является исходным каталогом для копирования.

7.3 Введите путь для копирования в поле «Кому URL». Обычно все ветки сосредоточены в одном каталоге. Файлы веток обычно сосредоточены в подкаталоге ветвей. Вам нужно только ввести требуемый каталог в To URL.

7.4 Если каталог не существует, он будет автоматически создан SVN. Обратите особое внимание на косую черту SVN как символ разделителя каталогов.

brcnch
7.5 Затем введите цель этой ветви в сообщении журнала.

# Работа с SVN через TortoiseSVN. 1. Выгрузка , фиксация, журнал

SVN — популярная система контроля версий. Система контроля версий применяется когда несколько человек совместно редактируют файлы. При правильной работе с SVN изменения разных людей не затирают друг друга и есть возможность посмотреть кто, когда и какие изменения вносил.

open in new window — GUI-клиент для SVN. Ниже показаны примеры работы с TortoiseSVN и описание часто возникающий проблем. Для полного понимая работы советую прочитать документацию

Будем считать что TortoiseSVN уставлена и русифицирована. Получен адрес репозитория svn://89.223.27.224/project в котором добавлены два пользователя Petya и Vasya.

# Извлечение репозитория

В SVN всегда есть один центральный репозиторий в котором хранятся все изменения. Пользователи для работы выгружают к себе рабочую копию.

Петя создает новый каталог project и выгружает рабочую копию.

Извлечение рабочей копии

В диалоге извлечения он указывает только адрес репозитория

Извлечение рабочей копии

Зеленая метка на значке папки показывает что папка является рабочей копией SVN и изменений в ней нет.

Метка TortoiseSVN на каталоге

В каталоге project появилась скрытая папка .svn . SVN хранит в ней информацию связанную с рабочей копией.

Скрытая папка .svn

# Фиксация в репозиторий

Петя создает новый файл main.py в рабочей копии и нажимает Фиксировать

Фиксация изменений

В диалоге фиксации Петя заполняет комментарий к фиксации, отмечает файл main.py и нажимает ОК.

Фиксация изменений

Файл зафиксирован, у него появилась отметка такая же как у каталога.

Отметка TortoiseSVN на файле

Пете понадобилось изменить файл main.py — вынести весь код в функцию.

После изменений на файле новая красная отметка — файл содержит изменения.

Отметка TortoiseSVN на измененном файле

Петя снова фиксирует

Фиксация изменений

# Просмотр истории

Теперь посмотрим историю изменений

Просмотр Журнала

Просмотр Журнала

В журнале видно что было две фиксации, их сделал Петя, видно комментарий к ним.

Каждая фиксация имеет уникальный номер для всего репозитория. Установленная в рабочей копии ревизия выделена жирным — сейчас это последняя ревизия номер 2.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *