<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>hudson@work &#187; svn</title>
	<atom:link href="http://hudson.su/tag/svn/feed/" rel="self" type="application/rss+xml" />
	<link>http://hudson.su</link>
	<description>статьи о web-разработке, менеджменте IT проектов и контроле качества</description>
	<lastBuildDate>Fri, 20 Jan 2012 13:15:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Subversion на CentOS 4.x/5.x и RHEL 4/5. Часть 2 &#8211; работа с Subversion</title>
		<link>http://hudson.su/2009/12/09/subversion-centos-rhel-p2/</link>
		<comments>http://hudson.su/2009/12/09/subversion-centos-rhel-p2/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 22:31:07 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=526</guid>
		<description><![CDATA[По мотивам вики centos &#8211; статья в двух частях про Subversion (http://wiki.centos.org/HowTos/Subversion). Часть вторая, в которой рассматриваются вопросы работы с SVN для начинающих: Использование Subversion Структура репозитория Subversion Если все предыдущие шаги пройдены успешно, то вы готовы к использованию вашего репозитория. В комлекте Subversion поставляется интерфейс для командной строки, который так и называется: svn. # [...]]]></description>
			<content:encoded><![CDATA[<p>По мотивам вики centos &#8211; статья в двух частях про Subversion (<a href="http://wiki.centos.org/HowTos/Subversion">http://wiki.centos.org/HowTos/Subversion</a>).</p>
<p>Часть вторая, в которой рассматриваются вопросы работы с SVN для начинающих:</p>
<p><span id="more-526"></span></p>
<h3>Использование Subversion</h3>
<h4>Структура репозитория Subversion</h4>
<p>Если все предыдущие шаги пройдены успешно, то вы готовы к использованию вашего репозитория. В комлекте Subversion поставляется интерфейс для командной строки, который так и называется: <strong>svn</strong>.</p>
<pre># Получить справку по использованию
[root@name] svn --help</pre>
<p>Основные команды, которые вам нужно знать это <strong>svn import</strong> (импорт исходников в репозиторий), <strong>svn commit</strong> (ci) (обновление репозитория с учетом сделанных вами изменений), и <strong>svn checkout</strong> (co) (загрузка рабочей копии файлов к вам на локальную машину или в локальную директорию). Итак, сначала import чтобы поместить исходники в svn, затем checkout чтобы получить полную актуальную версию и наконец, после правок и изменений &#8211; commit для сохранения внесенных вами изменений.</p>
<p>Перед тем как мы продолжим, несколько слов о структуре репозитория. Едва ли не все источники говорят о создании определенной структуры директорий в репозитории. В особенности они отмечают что необходимо создать директории <strong>branches</strong>, <strong>tags</strong>, и <strong>trunk</strong> в корневой директории репозитория. Например:</p>
<pre>.
|-- project1
|   |-- branches
|   |-- tags
|   `-- trunk
`-- project2
|-- branches
|-- tags
`-- trunk</pre>
<p>Далее в литературе описано как организовать работу с таким репозиторием. Надо сказать что такая структура не является обязательной и если у вас не очень сложный проект вы можете ей не следовать.</p>
<blockquote><p>От переводчика. К слову сказать, я работал как с описанной в литературе структурой, так и без нее. Собственно если разработчиков 1-3, можно обойтись без усложнения процедур и репозитория. Если команда 5 и более человек, проект быстро растет и развивается, то заранее надо подумать о том как будут работать 10, 20 или даже 100 разработчиков.</p></blockquote>
<p>В качестве примера, создадим тестовые директории и несколько файлов в них.</p>
<pre>[root@name] cd /tmp
[root@name] mkdir mytestproj
[root@name] cd mytestproj
[root@name] mkdir configurations options main
[root@name] vim configurations/testconf1.cfg
[root@name] vim options/testopts1.cfg
[root@name] vim main/mainfile1.cfg</pre>
<p>Имейте в виду, что вы можете создать любую нужную вам структуру директорий. Когда у вас есть структура проекта и несколько файликов, мы можем приступить к импортированию их в репозиторий.</p>
<h4>Импорт в Subversion</h4>
<pre>[root@name] svn import /tmp/mytestproj/
file:///var/www/svn/repos/mytestproj
-m "Initial repository layout for mytestproj"
Adding         /tmp/mytestproj/main
Adding         /tmp/mytestproj/main/mainfile1.cfg
Adding         /tmp/mytestproj/configurations
Adding         /tmp/mytestproj/configurations/testconf1.cfg
Adding         /tmp/mytestproj/options
Adding         /tmp/mytestproj/options/testopts1.cfg</pre>
<blockquote><p>На самом деле импортировать можно не только через <strong>file:///var/www/svn/repos/mytestproj</strong> (этот прием подразумевает что репозиторий и ваши файлы находятся на одном сервере), но и указывая URL: <strong>http://yoursvnserver/repos/mytestproj</strong>. Этот же URL будет использован для выгрузки далее.</p></blockquote>
<h4>Выгрузка из Subversion</h4>
<p>Теперь, легким движением руки&#8230; о чем это я&#8230; )) В общем давайте заберем из репозитория то что мы туда положили. Но сперва откройте в браузере http://yourmachine/repos. Однажды импортировав проект в SVN, вы можете использовать его на любой другой машине. Для соединения с репозиторием, вы также будете использовать аккаунт пользователя, созданного в <a href="http://hudson.su/?p=518">первой части данной статьи</a>:</p>
<pre>[root@name] cd /tmp
[root@name] svn co http://yoursvnserver/repos/mytestproj
Authentication realm: &lt;http://yoursvnserver:80&gt; Subversion repos
Password for 'youruser':
A    mytestproj/main
A    mytestproj/main/mainfile1.cfg
A    mytestproj/configurations
A    mytestproj/configurations/testconf1.cfg
A    mytestproj/options
A    mytestproj/options/testopts1.cfg
Checked out revision 1.</pre>
<h4>Правка и коммит в Subversion</h4>
<p>На предыдущем шаге мы выгрузили 1ю ревизию нашего проекта. Теперь вы можете отредактировать что-нибудь и закоммитить (commint) ваши правки обратно на сервер Subversion:</p>
<pre>[root@name] cd mytestproj
[root@name] vim configurations/testconf1.cfg -- Add or delete something and save.
[root@name] svn commit -m "Added a line to testconf1.cfg."
Sending        configurations/testconf1.cfg
Transmitting file data .
Committed revision 2.</pre>
<blockquote><p>От переводчика: обратите внимание, с ключом -m добавляется текстовый комментарий (в данном случае &#8220;Added a line to testconf1.cfg.&#8221;). Комментарий не является обязательным, но я рекомендую не пренебрегать данной возможностью, это очень облегчает понимание изменений сделанных ранее другим разработчиком или вами, но несколько месяцев назад. Об этом еще будет сказано ниже.</p></blockquote>
<p>В общем-то теперь вы можете удалить локальные файлы, так как правку вы внесли и закоммитили. Теперь ваши изменения можно посмотреть через браузер в репозитории. Тем не менее как правило так не делают, так как работают с файлами проекта несколько дней, недель, а то и месяцев.</p>
<h4>Добавление и удаление в Subversion</h4>
<p>Теперь, когда у нас все тип-топ, неожиданно нам требуется добавить файлы в наш репозиторий. Сделать это несложо используя аргумент <strong>add</strong>.  Выгружаем наш проект, копируем новые файлы, добавляем их к репозиторию и коммитим изменения:</p>
<pre># Выгружаем
[root@name] svn co http://yoursvnserver/repos/mytestproj
A    mytestproj/main
A    mytestproj/main/mainfile1.cfg
A    mytestproj/configurations
A    mytestproj/configurations/testconf1.cfg
A    mytestproj/options
A    mytestproj/options/testopts1.cfg
Checked out revision 2.</pre>
<pre># Добавляем файл
[root@name] cd mytestproj
[root@name] cp /etc/yum.repos.d/CentOS-Base.repo configurations/
[root@name] svn add configurations/CentOS-Base.repo
A         configurations/CentOS-Base.repo</pre>
<pre># Коммитим правку
[root@name] svn commit -m "Added the CentOS Yum repo file."
Adding         configurations/CentOS-Base.repo
Transmitting file data .
Committed revision 3.</pre>
<p>Удалить элементы также просто &#8211; только используйте <strong>delete</strong> а не <strong>add</strong>. И не забывайте коммитить изменения! Теперь, если вы зайдете через браузер в репозиторий, вы увидите что ревизия уже 3я.</p>
<h4>Откат в Subversion</h4>
<p>Описанное выше смотрится здорово, но что, если потребуется откатиться назад, к предыдущей версии? Это тоже несложно сделать. Если вы не уверены, какая версия вам нужна, команда <strong>log</strong> вам в помощь. Вот зачем <strong>очень желательно добавлять комментарии к каждому коммиту.</strong> Информации в комментарии не много, но достаточно для того чтобы понять что было сделано.</p>
<blockquote><p>От переводчика: кстати полезно к комментарию добавлять номер бага или требования, по которому вносится данная правка (конечно если у вас используется багтрекинговая система или система управления требованиями), например &#8220;bug 1234: new directory added&#8221;</p></blockquote>
<pre># Лог по всему репозиторию
[root@name] svn log http://yoursvnserver/repos
# Лог по выбранному проекту
[root@name] svn log http://yoursvnserver/repos/mytestproj</pre>
<p>Таким образом вы получили полный список ревизий с комментариями. На основании списка вы можете выбрать нужную вам ревизию.</p>
<pre># Выгрузка первой ревизии
[root@name] svn co -r 1 http://yoursvnserver/repos/mytestproj</pre>
<h4>Контроль доступа (ACL)в Subversion</h4>
<p>Зачастую, вам не потребуется разграничивать доступ пользователей к каждому репозиторию. Тем не менее, если это потребуется, то доступы пользователям можно разграничивать при помощи списков контроля доступа (ACLs). Данные списки можно подключить при помощи директивы <strong>AuthzSVNAccessFile</strong>, параметром которой служит имя файла:</p>
<pre># Включение ACLs
AuthzSVNAccessFile /etc/svn-acl-conf</pre>
<p>Вы можете добавить эту директиву в секцию Location, соответствующую вашему репозиторию:</p>
<pre>DAV svn
SVNParentPath /var/www/svn/repos
AuthzSVNAccessFile /etc/svn-acl-conf
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /etc/svn-auth-conf
Require valid-user</pre>
<p>Теперь необходимо создать файл /etc/svn-acl-conf. Он будет содержать секции следующего вида:</p>
<pre>[reponame:repopath]
user = access</pre>
<p>Параметр access может быть: r (read &#8211; чтение), rw (read-write &#8211; чтение-запись), или пустой (нет доступа). По умолчанию, при использовании ACLs, пользователи не имеют доступа к репозиторию. Предположим, что у нас есть репо <em>framework</em>, и мы хотим выдать следующие права: john &#8211; чтение, joe &#8211; чтение-запись. Это можно сделать при помощи следующей записи:</p>
<pre>[framework:/]
john =  r
joe = rw</pre>
<p>Также можно создавать группы в секции groups. В дальнейшем при использовании перед именами групп ставится @, например:</p>
<pre>[groups]
staff = joe, george

[framework:/]
john =  r
@staff = rw</pre>
<p>Если вы хотите сделать все репозитории доступными всем пользователям, вы можете добавить секцию для корневой директории каждого репо:</p>
<pre>[/]
* = r</pre>
<h4>В качестве заключения</h4>
<p>В данной статье освещена малая часть всех возможностей, которые Subversion может вам предложить. Этот краткий курс молодого svn-бойца предназначен помочь начинающим сориентироваться как что и зачем. Пользуйтесь документацией, там содержится множество полезных фич и приемов, которые будут полезны как одному разработчику, так и большой, в том числе и распределенной географически, команде. Вы также можете использовать Subversion для своих локальных нужд, указывая file:///path/to/repo вместо того чтобы работать через apache http://yoursvnserver/repos/whatever.</p>
<p>Удачи! )</p>
<h4>Что еще почитать о Subversion?</h4>
<p>Version Control with Subversion ака svnbook: <a href="http://svnbook.red-bean.com/">http://svnbook.red-bean.com/</a></p>
<p>P.S.<br />
Про установку и настройку SVN вы сможете прочитать в первой части &#8211; <a href="http://hudson.su/?p=518">Subversion на CentOS 4.x/5.x и RHEL 4/5. Часть 1 &#8211; установка и настройка</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/12/09/subversion-centos-rhel-p2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Subversion на CentOS 4.x/5.x и RHEL 4/5. Часть 1 &#8211; установка и настройка</title>
		<link>http://hudson.su/2009/12/08/subversion-centos-rhel-p1/</link>
		<comments>http://hudson.su/2009/12/08/subversion-centos-rhel-p1/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 20:25:30 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=518</guid>
		<description><![CDATA[По мотивам вики centos &#8211; статья в двух частях про Subversion (http://wiki.centos.org/HowTos/Subversion). Часть первая, в которой рассматривается установка и настройка SVN через mod_dav: Системы Данное руководство применимо к CentOS 4.x/5.x и Red Hat Enterprise (RHEL) 4/5 Ссылки Subversion: http://subversion.tigris.org/ Version Control with Subversion ака svnbook: http://svnbook.red-bean.com/ Установка [root@name]$ yum install mod_dav_svn subversion Устанавливаем перечисленные выше [...]]]></description>
			<content:encoded><![CDATA[<p>По мотивам вики centos &#8211; статья в двух частях про Subversion  (<a href="http://wiki.centos.org/HowTos/Subversion">http://wiki.centos.org/HowTos/Subversion</a>).</p>
<p>Часть первая, в которой рассматривается установка и настройка SVN через mod_dav:</p>
<p><span id="more-518"></span></p>
<h3>Системы</h3>
<p>Данное руководство применимо к <strong>CentOS 4.x/5.x</strong> и <strong>Red Hat Enterprise (RHEL) 4/5</strong></p>
<h3>Ссылки</h3>
<p>Subversion: <a href="http://subversion.tigris.org/">http://subversion.tigris.org/</a><br />
Version Control with Subversion ака svnbook: <a href="http://svnbook.red-bean.com/">http://svnbook.red-bean.com/ </a></p>
<h3>Установка</h3>
<pre>[root@name]$ yum install mod_dav_svn subversion</pre>
<p>Устанавливаем перечисленные выше пакеты. Если у вас еще не утсанавлен apache, то его также необходимо установить. При устновке из yum, также могут устанавливаться дополнительные пакеты, в зависимости от вашей системы и установленных ранее пакетов.</p>
<h3>Конфигурация Subversion</h3>
<h4>Apache</h4>
<p>Перед тем как мы углубимся в дебри, нужно убедиться что у вас есть и сконфигурирован apache. В первую очередь откроем <strong>/etc/httpd/conf/httpd.conf</strong> и как минимум поменяем <strong>ServerName</strong>. Если это не помогает ))) то сверьтесь с официальной документацией по apache (<a href="http://httpd.apache.org">http://httpd.apache.org</a>)</p>
<pre>[root@name] vim /etc/httpd/conf/httpd.conf
[root@name] service httpd start
[root@name] chkconfig httpd on</pre>
<p>Проверьте работает ли веб-сервер, для этого достаточно открыть http://yourmachine в браузере. Работает? Отлично, впереди нас ждут более забавные вещи.</p>
<h4>Конфигурация Apache для Subversion</h4>
<p>Далее нужно сконфигурировать несколько вещей, чтобы apache и subversion могли работать вместе. Открываем примерный файл конфигурации, который шел вместе с пакетом subversion:</p>
<pre>[root@name] cd /etc/httpd/conf.d/
[root@name] vim subversion.conf

# Убедитесь что эти две строки раскоментированы
# это значит apache будет загружать данные модули
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so</pre>
<p>Добавьте или подредактируйте следующие строки для базовой аутентификации и указания места расположения репозиториев</p>
<pre>&lt;Location /repos&gt;
DAV svn
SVNPath /var/www/svn/repos
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /etc/svn-auth-conf
Require valid-user
&lt;/Location&gt;</pre>
<p>Локация &#8211; это строка запроса, которая будет передаваться apache через URL, например http://yourmachine/repos указывает на SVNPath, который вы указали. Пример выше не является истиной первой инстанции, поэтому данные параметры вы можете настраивать как вам угодно (да, и не забывайте сохранять файл после того как отредактируете его)))).</p>
<p>Далее нам надо создать файл с паролями для аутентификации (этот файл мы уже прописали в конфигурации выше). Мы воспользуемся для этого утилитой htpasswd. В первый раз ее надо запускать с параметрами <strong>-cm</strong>. При этом будет создан новый файл и пароль будет зашифрован при помощи алгоритма MD5. Далее нужно использовать только ключ <strong>-m</strong>.</p>
<pre>[root@name] htpasswd -cm /etc/svn-auth-conf yourusername
New password:
Re-type new password:
Adding password for user yourusername
[root@name] htpasswd -m /etc/svn-auth-conf anotherusername
New password:
Re-type new password:
Adding password for user anotherusername</pre>
<h4>Конфигурирование репозитория</h4>
<p>Далее нужно создать репозиторий, куда будут загружаться ваш файлы. Это несложно сделать с помощью инструментария, который идет в комплекте с svn.</p>
<pre>[root@name] cd /var/www/
[root@name] mkdir svn
[root@name] cd svn
[root@name] svnadmin create repos
[root@name] chown -R apache:apache repos
[root@name] service httpd restart</pre>
<p>Протестируйте репозиторий через браузер http://yourmachine/repos. Сначала должно отобразиться окошко с запросом имени и пароля. После успешной аутентификации должна отобразиться страница ревизии 0. Если все было именно так, значит наш репозиторий настроен. Если нужно много репозиториев, обратитесь к документации в начале данной статьи. Ну чтож, приступим к использованию нашего репозитория )</p>
<p><strong>P.S.</strong><br />
Про работу с SVN вы сможете прочитать во второй части &#8211; <a href="http://hudson.su/?p=526">Subversion на CentOS 4.x/5.x и RHEL 4/5. Часть 2 – работа с svn</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/12/08/subversion-centos-rhel-p1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Использование svn:externals</title>
		<link>http://hudson.su/2009/04/10/svn-externals-usage/</link>
		<comments>http://hudson.su/2009/04/10/svn-externals-usage/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 22:43:00 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=74</guid>
		<description><![CDATA[Дано: наш проект (все-равно какой) в SVN&#160;репозитории; внешняя библиотека (нашей или сторонней разработки). Задача: прозрачно для разработчика иметь up to date копию библиотеки в проекте. Решение: Пусть для определенности библиотеки у нас хранятся в&#160;директории&#160;lib/vendor относительно корня проекта. Выполняем команды $ cd lib/vendor$ svn propedit svn:externals .&#160; И&#160;в открывшемся редакторе (у меня vim) добавляем следующую строку: [...]]]></description>
			<content:encoded><![CDATA[<p>Дано:
<ul>
<li>наш проект (все-равно какой) в SVN&nbsp;репозитории;</li>
<li>внешняя библиотека (нашей или сторонней разработки).</li>
</ul>
<p>Задача:
<ul>
<li>прозрачно для разработчика иметь up to date копию библиотеки в проекте.</li>
</ul>
<p>Решение:</p>
<p><span id="more-74"></span><br />
Пусть для определенности библиотеки у нас хранятся в&nbsp;директории&nbsp;<strong>lib/vendor </strong>относительно корня проекта. Выполняем команды</p>
<div style="margin-left: 40px"><span style="color: #0000ff">$ cd lib/vendor<br />$ svn propedit svn:externals .</span><br />&nbsp;</div>
<p>И&nbsp;в открывшемся редакторе (у меня vim) добавляем следующую строку:</p>
<div style="margin-left: 40px"><span style="color: #0000ff">dirname svn://url.to.the/library/repository<br /></span></div>
<p>Здесь:
<ul>
<li>dirname это имя директории в которую будет развернута библиотека</li>
<li>svn://url.to.the/library/repository &#8211; соответственно URL&nbsp;репозитория (http, https, svn)</li>
</ul>
<p>Сохраняем изменения и фиксируем их в репозитории. После этого можно выполнять</p>
<div style="margin-left: 40px"><span style="color: #0000ff">svn up<br /></span></div>
<p>Будет создана директория lib/vendor/dirname и в нее развернут код из указанного нами URL. Теперь при обновлении проекта будет обновляться и билиотека.</p>
<p>Хинт:&nbsp;если при выполнении <em>svn propedit </em>вылетает ошибка вида </p>
<div style="margin-left: 40px"><span style="color: #0000ff">svn: The EDITOR, SVN_EDITOR or VISUAL environment variable or &#8216;editor-cmd&#8217; run-time configuration option is empty or consists solely of whitespace. Expected a shell command.</span><br />&nbsp;</div>
<p>Значит у вас не установлена переменная,&nbsp;указывающая какой редактор должен использовать svn. Смотрим где у нас vim и задаем требуемое значение переменной:</p>
<div style="margin-left: 40px"><span style="color: #0000ff">$ which vim<br />/usr/bin/vim<br />$ export SVN_EDITOR=/usr/bin/vim</span></div>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2009/04/10/svn-externals-usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVN Id Таг</title>
		<link>http://hudson.su/2008/05/25/svn-id-tag-usage/</link>
		<comments>http://hudson.su/2008/05/25/svn-id-tag-usage/#comments</comments>
		<pubDate>Sun, 25 May 2008 16:24:00 +0000</pubDate>
		<dc:creator>hudson</dc:creator>
				<category><![CDATA[Профессиональное]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://hudson.su/?p=64</guid>
		<description><![CDATA[Как выяснилось после некоторого общения с SVN, $Id:$ таг не работает по умолчанию. Для того чтобы его использовать, нужно добавить следующий property для файла: $ svn propset svn:keywords Id &#34;filename&#34; Как вариант, вы можете активировать данную возможность в конфиге SVN путем модификации строк, указанных ниже (нужно иметь в виду, что данное свойство будет автоматически проставляться [...]]]></description>
			<content:encoded><![CDATA[<div class="contenttext">
<p>Как выяснилось после некоторого общения с SVN, $Id:$ таг не работает по умолчанию. Для того чтобы его использовать, нужно добавить следующий property для файла:</p>
<div class="entrytext">
<blockquote>
<pre>
$ svn propset svn:keywords Id &quot;filename&quot;</pre>
</blockquote>
<p>Как вариант, вы можете активировать данную возможность в конфиге SVN путем модификации строк, указанных ниже (нужно иметь в виду, что данное свойство будет автоматически проставляться только для вновь добавленных файлов):</p>
<p><span id="more-64"></span></p>
<blockquote><pre>
[miscellany]
enable-auto-props = yes
[auto-props]
*.php = svn:keywords=Id # enable id for php files</pre>
</blockquote>
</div>
<p>Для tortoisesvn делаем так:</p>
<p>- выбираем properties проекта</p>
<p><a href="http://pics.livejournal.com/dbykadorov/pic/0000335b/"><img alt="" border="0" src="http://pics.livejournal.com/dbykadorov/pic/0000335b" /></a></p>
<p>- прописываем параметр:</p>
<p><a href="http://pics.livejournal.com/dbykadorov/pic/000048ph/"><img alt="" border="0" src="http://pics.livejournal.com/dbykadorov/pic/000048ph" /></a></p>
<p>Ну и не забываем про <strong>commit </strong>после этих действий.</p>
<p>Неприятный момент при этом &#8211; что для новых файлов нужно properties прописывать заново. <span style="text-decoration: line-through">Как сделать для tortoisesvn это значение дефолтным, увы не знаю (если знаете &#8211; пишите <img class="wp-smiley" alt=":)" src="http://blog.hudson.su/wp-includes/images/smilies/icon_smile.gif" /> )</span>.</p>
<p>(UPD) <strong>Ура! </strong>Теперь я знаю как настраивать конфиг TortoiseSVN. Все просто: открываем контекстное меню, выбираем пункт <strong>Settings </strong>-&gt; <strong>General </strong>-&gt; &ldquo;<strong>Subversion configuration file</strong>&rdquo; -&gt; кнопка <strong>Edit</strong>. Открывается текстовый конфиг SVN, который можно поправить в соответствии с тем что указано в начале данной темы.<span style="text-decoration: line-through"><br /></span></p>
<p>Итак, с такой настройкой мы можем писать в коде строку:</p>
<blockquote><p>/**<br />* @version SVN: $Id:$<br />*/</p>
</blockquote>
<p>Которая после коммита преобразуется в такую:</p>
<blockquote><p>/**<br />* @version SVN: $Id: actions.class.php 38 2008-05-22 21:27:23Z hudson $<br />*/</p>
</blockquote>
<p>Have fun <img src='http://hudson.su/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://hudson.su/2008/05/25/svn-id-tag-usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

