<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://wiki2.linuxformat.ru/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>LXF118:Subversion - История изменений</title>
		<link>http://wiki2.linuxformat.ru/index.php?title=LXF118:Subversion&amp;action=history</link>
		<description>История изменений этой страницы в вики</description>
		<language>ru</language>
		<generator>MediaWiki 1.11.1</generator>
		<lastBuildDate>Wed, 13 May 2026 20:58:50 GMT</lastBuildDate>
		<item>
			<title>Crazy Rebel: викификация, оформление,</title>
			<link>http://wiki2.linuxformat.ru/index.php?title=LXF118:Subversion&amp;diff=9776&amp;oldid=prev</link>
			<description>&lt;p&gt;викификация, оформление,&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая статья&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''Сети''' Свяжем ваши Linux-ПК, и пускай они вас обслуживают&lt;br /&gt;
&lt;br /&gt;
==''Subversion'': Сотрудничаем==&lt;br /&gt;
&lt;br /&gt;
{{Цикл/Сеть}}&lt;br /&gt;
&lt;br /&gt;
: '''Часть 5''': Нужна совместная работа над файлами? '''Нейл Ботвик''' покажет, как ''Subversion'' поддерживает актуальность вашей информации, не наступая никому на пятки.&lt;br /&gt;
&lt;br /&gt;
Нет, ничего общего с государственным переворотом тут нет. Кстати, если вы его задумали, то ''Subversion'' [англ. «свержение»] – наименее подходящая программа для подобных целей. Как честный инструмент для совместной работы над проектами, она регистрирует каждое дополнение, изменение и удаление, а также кто и когда его произвёл, тем самым сводя к нулю все шансы на подпольную деятельность. Итак, что же такое ''Subversion''? Это одна из систем контроля версий (version control software, VCS), используемая для отслеживания и записи всех изменений в наборе файлов. Чаще всего она употребляется (особенно в мире открытого ПО) для управления программными проектами, но её с успехом можно применить при работе с любым набором файлов: web-сайт, документация или коллекция видео или аудио – содержимое роли не играет. Благодаря этому сервер Subversion пригодится для многих видов проектов, и на следующих страницах мы расскажем, как начать с ним работу.&lt;br /&gt;
&lt;br /&gt;
===Контроль чего?===&lt;br /&gt;
&lt;br /&gt;
Основная задача любой системы контроля версий, как следует из названия – это управление различными версиями проекта. При каждом внесении изменений в файл и регистрации их на сервере, ''Subversion'' сохраняет их в виде новой версии проекта, давая вам или кому-то другому возможность увидеть данные в их текущем или более раннем состоянии. Если что-то работает не так, как предполагалось, можно просто откатиться к последней рабочей версии и попробовать другой подход.&lt;br /&gt;
&lt;br /&gt;
Другое ценное преимущество – то, что над проектом может работать множество разных людей. Каждое изменение снабжается именем автора, и сразу видно, кто что внёс. Любой может забрать набор файлов, переделать их и отослать обратно. Тогда новые файлы станут доступны всем пользователям. А вдруг два пользователя возьмутся за один и тот же набор файлов? Первоначальным решением было такое: после того, как некий пользователь извлёк файлы из репозитория, блокировать их, запретив к ним доступ вплоть до фиксации изменений. Но такой подход часто неэффективен, поэтому ''Subversion'' и другие инструменты контроля версий теперь по умолчанию используют другой способ: &lt;br /&gt;
* '''Пользователь А''' извлекает файлы из репозитория и принимается с ними работать. &lt;br /&gt;
* '''Пользователь Б''' делает извлечение из того же каталога и получает ту же начальную копию, поскольку пользователь А ещё не зафиксировал никаких изменений. &lt;br /&gt;
* '''Пользователь А''' делает изменения в паре файлов и фиксирует их. &lt;br /&gt;
* '''Пользователь Б''' вносит какие-то изменения и пытается их зафиксировать.&lt;br /&gt;
&lt;br /&gt;
Тут программа-клиент ''Subversion'' видит, что с тех пор, как пользователь Б извлёк из репозитория свой набор файлов, в нём произошли изменения, и обновляет их. Если обновление касается разных файлов, то проблем нет, и можно фиксировать дальше. Если же оба пользователя меняли один и тот же файл, ''Subversion'' проверит, совместимы ли изменения. Если изменения касаются разных частей файла, оба набора сливаются, и фиксация продолжается. В противном случае пользователь Б информируется о конфликте, и ему предлагается разрешить проблему вручную.&lt;br /&gt;
&lt;br /&gt;
Звучит сложно, но в большинстве случаев такая схема работает хорошо. Лишь в одной ситуации слияние различных правок в одну не срабатывает: когда искомый файл – не текстовый. С последними всё просто, поскольку они состоят из отдельных строк или, если работа идёт с документацией, абзацев. Но для файлов, содержащих двоичные данные, как, например, мультимедиа-ролики, этот под ход уже не годится, и тогда блокировка файла вплоть до внесения сделанных изменений – лучшее решение.&lt;br /&gt;
&lt;br /&gt;
===Установка сервера===&lt;br /&gt;
&lt;br /&gt;
Пакет с ''Subversion'' должен быть в репозиториях вашего дистрибутива, так что установите его обычным способом. Как правило, сервер и штатный клиент идут вместе, хотя существуют и другие способы доступа к репозиторию ''Subversion'', о которых мы поговорим чуть ниже. После установки можно выбрать один из двух режимов работы сервера ''svnserve''. Самый простой – запустить его как самостоятельный демон: отметьте в программе настройки служб вашего дистрибутива, чтобы демон запускался при загрузке системы. Если вам незачем постоянно держать сервер запущенным, стартуйте его из ''inetd'' или ''xinetd''. Для дистрибутива, где используется классический супер-демон ''inetd'', допишите в файл '''/etc/initd.conf''' следующее:&lt;br /&gt;
&lt;br /&gt;
 svn stream tcp nowait svnowner /usr/bin/svnserve svnserve -i&lt;br /&gt;
&lt;br /&gt;
У пользователей ''xinetd'', возможно, уже имеется файл '''svnserve''' в каталоге '''/etc/xinetd.d'''. Тогда просто поменяйте значение параметра '''“disable”''' на '''no'''; в противном случае создайте файл следующего содержания:&lt;br /&gt;
&lt;br /&gt;
 service svn&lt;br /&gt;
 {&lt;br /&gt;
 socket_type = stream&lt;br /&gt;
 wait = no&lt;br /&gt;
 user = apache&lt;br /&gt;
 group = apache&lt;br /&gt;
 umask = 002&lt;br /&gt;
 protocol = tcp&lt;br /&gt;
 log_on_failure += USERID HOST&lt;br /&gt;
 port = 3690&lt;br /&gt;
 server = /usr/bin/svnserve&lt;br /&gt;
 server_args = -i&lt;br /&gt;
 disable = no&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Перезапустите ''inetd'' или ''xinetd'' или отправьте им сигнал '''SIGHUP''', чтобы изменения вступили в силу.&lt;br /&gt;
&lt;br /&gt;
===Настроим ваш первый проект===&lt;br /&gt;
&lt;br /&gt;
{{Врезка| Заголовок=Скорая помощь | Содержание= При публикации изменений всегда добавляйте какой-нибудь осмысленный комментарий. Поначалу это может показаться занудным, но впоследствии вы себя возненавидите, если не будете этого делать. | Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Первый шаг после установки – создание репозитория. С одним-единственным проектом это не вопрос, но при наличии нескольких проектов встаёт выбор: иметь несколько репозиториев или использовать несколько каталогов внутри одного. Второе проще и рекомендуется в большинстве случаев, так что мы опишем&lt;br /&gt;
именно этот способ. Зайдя на сервер с правами root, наберите:&lt;br /&gt;
&lt;br /&gt;
  svnadmin create /var/svn/repos&lt;br /&gt;
&lt;br /&gt;
Это местоположение по умолчанию, но можно указать любой путь. Будет сгенерирована базовая файловая структура; теперь нужно создать в ней директории для проектов. Стандартная практика – иметь в каждом каталоге проекта три подкаталога: '''trunk, branches''' и '''tags''', причём все рабочие файлы хранятся в '''trunk'''. Поначалу такие сложности могут и не понадобиться, но в дальнейшем вы порадуетесь, что настроили всё по такому принципу. Вот типичная раскладка:&lt;br /&gt;
&lt;br /&gt;
 /var/svn/repos&lt;br /&gt;
    project1&lt;br /&gt;
       branches&lt;br /&gt;
       tags&lt;br /&gt;
       trunk&lt;br /&gt;
    project2&lt;br /&gt;
       branches&lt;br /&gt;
       tags&lt;br /&gt;
       trunk&lt;br /&gt;
&lt;br /&gt;
Репозиторий ''Subversion'' – это база данных, представленная как виртуальная файловая система, поэтому просто взять и создать такую раскладку в виде подкаталогов в '''repos''' не удастся. Для  манипулирования файлами и каталогами предусмотрен собственный инструментарий ''Subversion''. Дерево проекта создаётся так:&lt;br /&gt;
&lt;br /&gt;
 svn mkdir --parents file:///var/svn/repos/project1/{trunk,tags,branches}&lt;br /&gt;
&lt;br /&gt;
Далее можно импортировать существующее дерево исходных текстов куда-то в репозиторий. Представьте, что мы работаем над web-сайтом в '''/var/www/localhost/htdocs'''; перенести его в ''Subversion'' можно так:&lt;br /&gt;
&lt;br /&gt;
 svn import /var/www/localhost/htdocs file:///var/svn/repos/website/trunk -m “Initial import”&lt;br /&gt;
&lt;br /&gt;
Флаг '''-m '''сообщает, что к журналу добавляется комментарий; если вы не укажете текст в командной строке, вам предложат его ввести. Вы убедитесь в полезности этих действий потом, отыскивая более старые версии! Теперь ваш web-сайт попал в репозиторий ''Subversion'', но '''/var/www/localhost/htdocs''' не является рабочей копией – её нужно извлечь в тот же каталог таким образом:&lt;br /&gt;
&lt;br /&gt;
 svn checkout file:///var/svn/repos/website/trunk/var/www/localhost/htdocs&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
 cd /var/www/localhost/htdocs&lt;br /&gt;
 svn checkout file:///var/svn/repos/website/trunk .&lt;br /&gt;
&lt;br /&gt;
Точка ('''.'''), означающая текущую директорию, очень важна. Если не указать места назначения, рабочая копия выберет себе название по последней составной части имени проекта, и вы получите каталог '''trunk''' – то есть совсем не то, что хотели.&lt;br /&gt;
&lt;br /&gt;
Просмотр содержимого директории покажет, что оно осталось прежним, только добавился каталог '''.svn''', где содержится информация, нужная для ''Subversion'' – не удаляйте его. Теперь можно вносить изменения и публиковать их на сервере командой&lt;br /&gt;
&lt;br /&gt;
 svn commit&lt;br /&gt;
&lt;br /&gt;
Перед фиксацией изменений, возможно, вам захочется выполнить&lt;br /&gt;
&lt;br /&gt;
 svn status&lt;br /&gt;
&lt;br /&gt;
что покажет список модифицированных файлов. Текущие изменения в файле можно просмотреть по команде ''svn diff'', она работает аналогично стандартной ''diff''.&lt;br /&gt;
&lt;br /&gt;
===Работа с ''Subversion''===&lt;br /&gt;
&lt;br /&gt;
Клиент ''svn'' – главная рабочая лошадка ''Subversion''. Эта программа работает непосредственно с репозиторием. В предыдущих примерах мы задавали пути до репозитория нашего проекта в виде '''file:///URI'''. При настройке это удобно, но коллективную работу немного ограничивает. Для прямого соединения с сервером ''svnserve'' так же можно использовать '''svn:// URI''', так что эти две команды эквива лентны:&lt;br /&gt;
&lt;br /&gt;
  svn checkout file:///var/svn/repos/website/trunk .&lt;br /&gt;
  svn checkout svn:///localhost/repos/website/trunk .&lt;br /&gt;
&lt;br /&gt;
Заметьте, что здесь указаны не полные пути, а только пути относительно корневого каталога ''Subversion'', и, как правило, это '''/var/svn'''. Конечно же, '''URI''' не обязательно должен быть локальным: можно разрешить соединение с другого компьютера в вашей сети, или откуда-то ещё из Интернета, приняв обычные в таких случаях меры безопасности.&lt;br /&gt;
&lt;br /&gt;
Настроив рабочую копию, примите во внимание пару вещей. Во-первых, новый файл, созданный в рабочей копии, не добавляется к репозиторию ''Subversion'' при следующей фиксации изменений сам по себе. Это необходимо потребовать явно, командой&lt;br /&gt;
&lt;br /&gt;
 svn add PATH&lt;br /&gt;
&lt;br /&gt;
где '''PATH''' может быть файлом, каталогом или шаблоном имени. Не будет беды, если добавится файл, который уже есть в репозитории, так что&lt;br /&gt;
&lt;br /&gt;
 svn add *&lt;br /&gt;
&lt;br /&gt;
– вполне разумный способ включить сразу всё, что нужно. То же касается удаления, копирования и переименования файлов. Вместо команд ''rm, cp'' и ''mv'' пользуйтесь ''svn rm, svn cp'' и ''svn mv'', которые удалят, скопируют или переименуют файл и опубликуют изменения на сервере при следующей фиксации. Также, вместо&lt;br /&gt;
&lt;br /&gt;
 mkdir somedir&lt;br /&gt;
 svn add somedir&lt;br /&gt;
&lt;br /&gt;
можно применить ''svn mkdir''.&lt;br /&gt;
&lt;br /&gt;
В ''Subversion'' есть встроенная онлайн-справка. Для получения списка команд введите&lt;br /&gt;
&lt;br /&gt;
 svn help&lt;br /&gt;
&lt;br /&gt;
а для получения дополнительной информации о конкретной команде –&lt;br /&gt;
&lt;br /&gt;
 svn help command&lt;br /&gt;
&lt;br /&gt;
Полная информация доступна в '''Subversion Complete Reference''' [Управление версиями в Subversion], на DVD или на сайте http://svnbook.red-bean.com.&lt;br /&gt;
&lt;br /&gt;
===Безопасность и контроль доступа===&lt;br /&gt;
&lt;br /&gt;
{{Врезка| Заголовок=Скорая помощь| Содержание=Не бойтесь экспериментировать: ведь в ''Subversion'' ничто не теряется! Все ваши ошибки и все удачные решения пребудут на сервере вечно.| Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Тут действуют общепринятые правила по предоставлению доступа из Интернета. Главное из них – не делать того, в чём нет нужды. Если необходим доступ извне, анонимным пользователям в лучшем случае предоставьте права только на чтение. При работе над открытым проектом можно предоставить возможность извлечения файлов глобально, но права на запись должны быть только у зарегистрированных разработчиков. Впрочем, ''Subversion'' (как и любая система контроля версий) имеет огромный плюс: тут ничего не теряется. Если кто-то, заполучив права на запись, злостно изменит или поудаляет файлы, старые копии все равно останутся на месте, и вы просто откатитесь к ревизии, созданной до нашествия вандалов.&lt;br /&gt;
&lt;br /&gt;
Вам вряд ли нужно, чтобы кто ни попадя из Интернета мог извлекать ваши файлы и тем более фиксировать в них изменения; а как организовать защиту? Первым шагом будет, как и всегда, настройка брандмауэра. Решив дать доступ к файлам только локальным пользователям, заблокируйте внешний доступ к соответствующим портам. Под стандартный интерфейс '''HTTP/WebDAV''' отведён порт '''80''', а для использования ''svnserve'' – '''3690'''. При работе через '''HTTP''' весь доступ контролируется web-сервером способами, описанными в учебнике про ''Apache'' в начале нашей серии статей ([[LXF113-114:Apache|LXF113/114]]). У ''svnserve'' есть собственная система аутентификации, настраиваемая в подкаталоге '''conf/svnserve.conf''' главной директории '''repos'''. Параметры по умолчанию таковы:&lt;br /&gt;
&lt;br /&gt;
 anon-access = read&lt;br /&gt;
 auth-access = write&lt;br /&gt;
&lt;br /&gt;
То есть извлекать файлы могут все, но фиксировать изменения вправе только зарегистрированные пользователи. Естественно, вы можете изменить настройки согласно вашим нуждам. Для любой из них можно указать параметр '''‘none’''': так,&lt;br /&gt;
&lt;br /&gt;
 anon-access = none&lt;br /&gt;
 auth-access = write&lt;br /&gt;
&lt;br /&gt;
позволит изменять файлы только авторизованным пользователям, а&lt;br /&gt;
&lt;br /&gt;
 anon-access = read&lt;br /&gt;
 auth-access = none&lt;br /&gt;
&lt;br /&gt;
создаст публичный репозиторий, доступный исключительно для чтения. Также можно указать файл, используемый при авторизации: &lt;br /&gt;
&lt;br /&gt;
 password-db = passwd&lt;br /&gt;
&lt;br /&gt;
Путь задаётся относительно '''svnserve.conf'''. Формат этого файла – по строке на каждого пользователя:&lt;br /&gt;
&lt;br /&gt;
 [users]&lt;br /&gt;
  user1 = password1&lt;br /&gt;
  user2 = password2&lt;br /&gt;
&lt;br /&gt;
Как говорилось выше, ''Subversion'' не знает понятия «проекты»: здесь это просто каталоги в репозитории. А если надо контролировать доступ к конкретным проектам (другими словами, к каталогам)? Это делается с помощью файла '''authz''' из каталога '''conf'''. Раскомментируйте указания на него в '''svnserve.conf''' и настройте доступ в самом файле '''authz''' таким способом:&lt;br /&gt;
&lt;br /&gt;
 [/myproject]&lt;br /&gt;
  user1 = rw&lt;br /&gt;
  user2 = r&lt;br /&gt;
  * =&lt;br /&gt;
&lt;br /&gt;
Мы установили контроль над доступом к каталогу '''myproject''' и всем его подкаталогам. Пользователь '''user1''' имеет права на чтение/запись, '''user2''' может только читать, а другие не имеют никаких прав доступа вообще. Когда '''authz-db''' вступит в силу, доступ закроется всем, кроме специально оговоренных лиц; не исключено, что придётся добавить&lt;br /&gt;
&lt;br /&gt;
 [/]&lt;br /&gt;
  * = r&lt;br /&gt;
&lt;br /&gt;
разрешив чтение остальным пользователям. Не перестарайтесь, урезая права доступа для коллективного проекта. Лучше доверить право на изменение файлов пользователям с должной квалификацией, чем ограничивать им доступ.&lt;br /&gt;
&lt;br /&gt;
===Машина времени===&lt;br /&gt;
Сервер ''Subversion'' подобен машине времени – ничто никуда не исчезает. Удаляя файл из рабочей копии и затем фиксируя изменения на сервере, мы удаляем файл только из новой ревизии. После правки файла и публикации изменений старая версия по-прежнему находится в предыдущей ревизии. Пока мы работали только с самой свежей версией (выбираемой по умолчанию, когда мы извлекаем рабочую копию), но можно откатиться к любой на ваш вкус. Для начала узнайте, какие ревизии доступны. Команда&lt;br /&gt;
&lt;br /&gt;
  svn log&lt;br /&gt;
&lt;br /&gt;
покажет ревизии текущей копии в обратном порядке, включая время, комментарий и имя пользователя, зафиксировавшего изменение. Сузить список отображаемых ревизий можно одним из следующих способов:&lt;br /&gt;
&lt;br /&gt;
 svn log -r 25&lt;br /&gt;
 svn log -r 25:15&lt;br /&gt;
 svn log -r 15:25&lt;br /&gt;
&lt;br /&gt;
Первый покажет одну ревизию, второй – указанный диапазон ревизий, а третий сделает то же самое, но в прямом хронологическом порядке. Добавление флага '''-v''' выведет список изменённых файлов. Также можно указать путь или URI: команда&lt;br /&gt;
&lt;br /&gt;
 svn log -v svn://hostname/repos&lt;br /&gt;
&lt;br /&gt;
выведет все изменения, сделанные в данном репозитории, не прибегая к извлечению файлов. Обнаружив версию, с которой вам хотелось бы поработать, извлеките её или же обновите имеющуюся рабочую копию, добавив '''-r number''' к соответствующей команде ''svn''. Опубликовать такую копию нельзя, поскольку уже существуют более поздние фиксации, но можно с ней поработать, чтобы убедиться, что вам именно это и нужно. Если вы захотите добавить более старые, удалённые или изменённые файлы снова в текущую рабочую копию, это делается с помощью ''svn copy'':&lt;br /&gt;
&lt;br /&gt;
 svn copy svn://hostname/repos/project/trunk/somefile@NNN ./somefile&lt;br /&gt;
&lt;br /&gt;
где '''NNN''' – номер ревизии. Данный синтаксис можно использовать для доступа к файлам любой версии. Теперь, когда файлы снова находятся в рабочей копии, следующая публикация изменений добавит их в проект.&lt;br /&gt;
&lt;br /&gt;
===Графические возможности===&lt;br /&gt;
&lt;br /&gt;
До сего момента всё делалось с помощью консольного клиента ''svn''. Это полезно для обучения работе с ''Subversion'', поскольку помогает лучше ухватить суть происходящего; но для общего использования вполне можно предпочесть графический подход. Существует несколько специализированных графических клиентов, включая ''RapidSVN'' (созданный там же, где и ''Subversion''), и мы включили их подборку на наш DVD. У пользователей KDE есть выбор из пары кандидатур: полноценного клиента ''kdesvn'' и ''Konqueror'' для просмотра репозиториев через адреса типа '''svn://URI'''. Разместив свой код в ''Subversion'', вы сможете получить к нему доступ и из популярных IDE: большинство интегрированных сред предлагают поддержку ''Subversion'', встроенную или в виде подключаемого модуля.&lt;br /&gt;
&lt;br /&gt;
На этих четырёх страницах мы коснулись только самых вершков возможностей ''Subversion''. Справочное руководство содержит более 400 страниц, ведущих от базовых навыков к сложным настройкам. С его помощью вы найдёте ответы на любые вопросы, возникшие у вас во время чтения нашей статьи, так что обязательно просмотрите экземпляр руководства на нашем DVD. '''LXF'''&lt;br /&gt;
&lt;br /&gt;
===Словарь­глоссарий===&lt;br /&gt;
&lt;br /&gt;
Прежде чем продолжить установку и настройку ''Subversion'', опишем терминологию, применяемую в системах контроля версий.&lt;br /&gt;
&lt;br /&gt;
* '''Репозиторий (хранилище)''' Полный набор файлов, управляемых системой контроля версий.&lt;br /&gt;
* '''Проект''' Подмножество репозитория. Представ ляется в виде подкаталога, хотя в ''Subversion'', по сути, нет понятия проекта как такового – оно применяется только для удобства простых смертных.&lt;br /&gt;
* '''Извлечение (Check out)''' Действие по загрузе рабочей копии из репозитория для работы с ней.&lt;br /&gt;
* '''Публикация изменений (фиксация, Commit)''' Выгрузка ваших изменений в репозиторий. ''Subversion'' знает, какие файлы вы отредактировали, и отсылает в репозиторий только модифицированные данные. Именно на этом этапе ''Subversion'' проверяет, не зафиксировал ли кто-нибудь ещё изменений для файлов, которые изменяли и вы. Фиксация изменений в ''Subversion'' атомарна, то есть, изменив несколько файлов, вы обновляете либо их все, либо ни одного, даже при аварийном завершении программы или обрыве связи во время фиксации изменений.&lt;br /&gt;
* '''Рабочая копия''' Набор файлов, которые вы правите; локальная копия части репозитория. Когда ваши правки вас удовлетворят, вы посылаете их обратно в репозиторий. Рабочая копия так же содержит каталог '''.svn''' – но он не является частью проекта.&lt;br /&gt;
* '''Обновление (Update)''' Обновление вашей рабочей копии пу тём загрузки любых, кем-то когда-то сделанных изменений.&lt;br /&gt;
* '''Версия (Revision, «ревизия»)''' При каждой фиксации пользователем изменений для одного или более файлов номер версии увеличивается. В отличие от других систем кон троля версий, в ''Subversion'' применяется глобальный номер ревизии, а не отдельная ну мерация для каждого набора файлов.&lt;br /&gt;
* '''Головная версия (Head)''' Самая свежая ревизия – именно её вам предоставят при извлечении файлов с сервера или обновлении локального проекта.&lt;br /&gt;
&lt;br /&gt;
===''Subversion'' по HTTP===&lt;br /&gt;
&lt;br /&gt;
На нашем уроке мы использова ли сервер ''svnserve'' и адреса типа '''svn://URIs''': это наиболее простой подход. Но репозиторием так же можно управлять по HTTP, с помощью сервера ''WebDav''. Руководствуясь инструкциями из первой части этой серии статей, вы должны бы уже настроить себе ''Apache'', а теперь добавьте к его конфигурации следующее:&lt;br /&gt;
&lt;br /&gt;
  LoadModule dav_svn_module modules/mod_dav_svn.so&lt;br /&gt;
  LoadModule authz_svn_module modules/mod_authz_svn.so&lt;br /&gt;
 &amp;lt;Location /svn&amp;gt;&lt;br /&gt;
  DAV svn&lt;br /&gt;
  SVNParentPath /var/svn&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете соединиться с http://hostname/svn/repos. Не исключено, что аналогичный набор директив уже присутствует в '''/etc/apache/modules.d''', и тогда вам остается лишь аккуратно настроить пути. Это базовый шаблон; при желании добавьте установки для аутентификации пользователей, ограничив доступ.&lt;/div&gt;</description>
			<pubDate>Mon, 01 Mar 2010 07:42:52 GMT</pubDate>			<dc:creator>Crazy Rebel</dc:creator>			<comments>http://wiki2.linuxformat.ru/index.php/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:LXF118:Subversion</comments>		</item>
	</channel>
</rss>