[svnbook commit] r1564 - in trunk/src/ru: . book
dmitriy
svnbook-dev at red-bean.com
Sat Jul 23 08:39:54 CDT 2005
Author: dmitriy
Date: Sat Jul 23 08:39:53 2005
New Revision: 1564
Removed:
trunk/src/ru/LAST_UPDATED
Modified:
trunk/src/ru/Makefile
trunk/src/ru/book/appa.xml
trunk/src/ru/book/appb.xml
trunk/src/ru/book/appc.xml
trunk/src/ru/book/ch00.xml
trunk/src/ru/book/ch01.xml
trunk/src/ru/book/ch02.xml
trunk/src/ru/book/ch03.xml
trunk/src/ru/book/ch04.xml
trunk/src/ru/book/ch05.xml
trunk/src/ru/book/ch06.xml
trunk/src/ru/book/ch07.xml
trunk/src/ru/book/ch08.xml
trunk/src/ru/book/ch09.xml
trunk/src/ru/book/foreword.xml
trunk/src/ru/sync.py
Log:
New approach to synchronization of translation with English text.
Revision number with which is synchronized translation is
underlined separately for each file (using <edition></edition>).
For this purpose is in appropriate way modified sync.py.
* sync.py
* Makefile
Changed under the new approach to synchronization
* LAST_UPDATED: removed as superfluous
* ru/book/appa.xml
* ru/book/appb.xml
* ru/book/appc.xml
* ru/book/foreword.xml
* ru/book/ch00.xml
* ru/book/ch01.xml
* ru/book/ch02.xml
* ru/book/ch03.xml
* ru/book/ch04.xml
* ru/book/ch05.xml
* ru/book/ch06.xml
* ru/book/ch07.xml
* ru/book/ch08.xml
* ru/book/ch09.xml
Sync with en/
Modified: trunk/src/ru/Makefile
==============================================================================
--- trunk/src/ru/Makefile (original)
+++ trunk/src/ru/Makefile Sat Jul 23 08:39:53 2005
@@ -9,12 +9,8 @@
$(BOOK_VERSION_SOURCE): book-last-updated
book-last-updated:
- @if $(SVNVERSION) . > /dev/null; then \
- echo '<!ENTITY svn.version "$(L10N_REVISION) '`cat LAST_UPDATED`'">' \
- > $(BOOK_VERSION_SOURCE); \
- else \
- echo '<!ENTITY svn.version "">' > $(BOOK_VERSION_SOURCE); \
- fi
+ @echo '<!ENTITY svn.version "$(L10N_REVISION) '`python sync.py -v`'">' \
+ > $(BOOK_VERSION_SOURCE)
dist-html-chunk: book-last-updated
../tools/book-dist.py --html-chunk --name svnbook-html-chunk-ru
Modified: trunk/src/ru/book/appa.xml
==============================================================================
--- trunk/src/ru/book/appa.xml (original)
+++ trunk/src/ru/book/appa.xml Sat Jul 23 08:39:53 2005
@@ -3,8 +3,11 @@
<!-- @ENGLISH {{{
<title>Subversion for CVS Users</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Subversion для пользователей CVS</title>
+ <appendixinfo>
+ <edition>1563</edition>
+ </appendixinfo>
<!-- See also svn.preface.organization -->
<simplesect>
@@ -63,7 +66,7 @@
<!-- ================================================================= -->
<sect1 id="svn.forcvs.directories">
<title>Directory Versions</title>
-
+
<para>Subversion tracks tree structures, not just file contents.
It's one of the biggest reasons Subversion was written to
replace CVS.</para>
@@ -106,7 +109,7 @@
that would be a lie too; there may be other changes to
<filename>foo</filename> we haven't yet received, because we
haven't updated yet.</para>
-
+
<para>Subversion deals with this problem by quietly tracking
committed adds and deletes in the <filename>.svn</filename>
area. When you eventually run <command>svn update</command>,
@@ -116,7 +119,7 @@
say that you have a <quote>perfect</quote> revision of a
directory.</emphasis> Most of the time, your working copy will
contain <quote>imperfect</quote> directory revisions.</para>
-
+
<para>Similarly, a problem arises if you attempt to commit
property changes on a directory. Normally, the commit would
bump the working directory's local revision number. But again,
@@ -148,9 +151,9 @@
directory, except that it also stores read-only,
<quote>pristine</quote> copies of your files. This allows you
to do many things off-line:</para>
-
+
<variablelist>
-
+
<varlistentry>
<term><command>svn status</command></term>
<listitem>
@@ -231,7 +234,7 @@
out-of-dateness information.</para>
</listitem>
</varlistentry>
-
+
<varlistentry>
<term><option>-v</option></term>
<listitem>
@@ -363,7 +366,7 @@
directories. Properties are arbitrary name/value pairs
associated with files and directories in your working
copy.</para>
-
+
<para>To set or get a property name, use the <command>svn
propset</command> and <command>svn propget</command>
subcommands. To list all properties on an object, use
@@ -409,7 +412,7 @@
contain textual or binary data. That means that all files are
stored differentially (compressed) in the repository, and small
differences are always sent over the network.</para>
-
+
<para>CVS users have to mark binary files with
<option>-kb</option> flags, to prevent data from being garbled
(due to keyword expansion and line-ending translations). They
@@ -543,7 +546,7 @@
</appendix>
<!--
-local variables:
+local variables:
sgml-parent-document: ("book.xml" "appendix")
end:
vim: tw=78:ft=svnbook
Modified: trunk/src/ru/book/appb.xml
==============================================================================
--- trunk/src/ru/book/appb.xml (original)
+++ trunk/src/ru/book/appb.xml Sat Jul 23 08:39:53 2005
@@ -2,8 +2,11 @@
<appendix id="svn.webdav">
<!-- @ENGLISH {{{
<title>WebDAV and Autoversioning</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>WebDAV и автоматическое управление версиями</title>
+ <appendixinfo>
+ <edition>1563</edition>
+ </appendixinfo>
<!-- See also svn.preface.organization -->
<simplesect>
@@ -304,10 +307,11 @@
situations. It's fairly unrealistic to change Subversion's
design to match DeltaV, so there's probably no way the client
can ever learn to get everything it needs from a general DeltaV
- server. On the other hand, mod_dav_svn *could* be further
- developed to implement all of DeltaV, but it's hard to find
- motivation to do so—here are almost no DeltaV clients to
- interoperate with.</para>
+ server. On the other hand,
+ mod_dav_svn <emphasis>could</emphasis> be further developed to
+ implement all of DeltaV, but it's hard to find motivation to do
+ so—there are almost no DeltaV clients to interoperate
+ with.</para>
</sect1>
Modified: trunk/src/ru/book/appc.xml
==============================================================================
--- trunk/src/ru/book/appc.xml (original)
+++ trunk/src/ru/book/appc.xml Sat Jul 23 08:39:53 2005
@@ -2,8 +2,11 @@
<appendix id="svn.3rdparty">
<!-- @ENGLISH {{{
<title>Third Party Tools</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Инструменты от сторонних разработчиков</title>
+ <appendixinfo>
+ <edition>1563</edition>
+ </appendixinfo>
<!-- See also svn.preface.organization -->
<simplesect>
Modified: trunk/src/ru/book/ch00.xml
==============================================================================
--- trunk/src/ru/book/ch00.xml (original)
+++ trunk/src/ru/book/ch00.xml Sat Jul 23 08:39:53 2005
@@ -3,6 +3,9 @@
<!-- @ENGLISH {{{
<title>Preface</title>
@ENGLISH }}} -->
+ <prefaceinfo>
+ <edition>1563</edition>
+ </prefaceinfo>
<title>Об этой книге</title>
<simplesect>
Modified: trunk/src/ru/book/ch01.xml
==============================================================================
--- trunk/src/ru/book/ch01.xml (original)
+++ trunk/src/ru/book/ch01.xml Sat Jul 23 08:39:53 2005
@@ -3,11 +3,12 @@
<!-- @ENGLISH {{{
<title>Introduction</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Введение</title>
<chapterinfo>
- <othername id="svn.intro.architecure.dia-1.prepositional-case"
- role="title-variant">рисунке 1.1, «Архитектура
+ <edition>1563</edition>
+ <othername id="svn.intro.architecure.dia-1.prepositional-case"
+ role="title-variant">рисунке 1.1, «Архитектура
Subversion»</othername>
</chapterinfo>
<!-- See also svn.preface.organization -->
@@ -23,23 +24,23 @@
computers to manage information that changes often, there is
room for version control. And that's where Subversion comes
into play.</para>
- @ ENGLISH }}} -->
- <para>Управление версиями—это искусство работы с изменениями
- информации. Долгое время оно было жизненно важным инструментом
- программистов, которые обычно проводят время, внося небольшие
- изменения в программы, а в один прекрасный момент делают откат
- изменений, возвращаясь к предыдущей версии. Однако, полезность
- систем управления версиями выходит далеко за пределы мира
- разработчиков программного обеспечения. Управление версиями
- требуется повсюду, где можно встретить людей, использующих
- компьютер для работы с постоянно изменяющейся информацией. Именно
+ @ENGLISH }}} -->
+ <para>Управление версиями—это искусство работы с изменениями
+ информации. Долгое время оно было жизненно важным инструментом
+ программистов, которые обычно проводят время, внося небольшие
+ изменения в программы, а в один прекрасный момент делают откат
+ изменений, возвращаясь к предыдущей версии. Однако, полезность
+ систем управления версиями выходит далеко за пределы мира
+ разработчиков программного обеспечения. Управление версиями
+ требуется повсюду, где можно встретить людей, использующих
+ компьютер для работы с постоянно изменяющейся информацией. Именно
тогда на сцену выходит Subversion.</para>
<!-- @ENGLISH {{{
<para>This chapter contains a high-level introduction to
Subversion—what it is; what it does; how to get it.</para>
- @ ENGLISH }}} -->
- <para>В этой главе даётся общее введение в Subversion. Здесь
+ @ENGLISH }}} -->
+ <para>В этой главе даётся общее введение в Subversion. Здесь
поясняется, что это такое, что она делает и как её получить.</para>
</simplesect>
@@ -52,7 +53,7 @@
<!-- @ENGLISH {{{
<title>What is Subversion?</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Что такое Subversion?</title>
<!-- @ENGLISH {{{
@@ -66,15 +67,15 @@
how your data changed. In this regard, many people think of a
version control system as a sort of <quote>time
machine</quote>.</para>
- @ ENGLISH }}} -->
- <para>Subversion—это свободная система управления версиями с
- открытым исходным кодом. Subversion позволяет управлять файлами и
- каталогами во времени. Дерево файлов помещается в центральное
- <firstterm>хранилище</firstterm>, которое похоже на обычный сервер
- файлов с тем отличием, что оно запоминает каждое изменение,
- внесённое в файл или каталог. Это позволяет восстановить ранние
- версии данных, исследовать историю изменений данных. Благодаря
- этому, многие считают систему управления версиями своеобразной
+ @ENGLISH }}} -->
+ <para>Subversion—это свободная система управления версиями с
+ открытым исходным кодом. Subversion позволяет управлять файлами и
+ каталогами во времени. Дерево файлов помещается в центральное
+ <firstterm>хранилище</firstterm>, которое похоже на обычный сервер
+ файлов с тем отличием, что оно запоминает каждое изменение,
+ внесённое в файл или каталог. Это позволяет восстановить ранние
+ версии данных, исследовать историю изменений данных. Благодаря
+ этому, многие считают систему управления версиями своеобразной
<quote>машиной времени</quote>.</para>
<!-- @ENGLISH {{{
@@ -87,15 +88,15 @@
the work is versioned, you need not fear that quality is the
trade-off for losing that conduit—if some incorrect change
is made to the data, just undo that change.</para>
- @ ENGLISH }}} -->
- <para>Subversion обращается к хранилищу по сети, что позволяет
- использовать её на разных компьютерах. Возможность совместной
- работы с одним и тем же набором данных поощряет сотрудничество. В
- отсутствие единственного контролирующего звена, через которое
- должны проходить все изменения, работа становится более
- эффективной. При этом не нужно опасаться, что потеря такого звена
- происходит за счёт качества, ведь благодаря сохранению версий,
- даже если в данные будут внесены ошибочные изменения, всегда можно
+ @ENGLISH }}} -->
+ <para>Subversion обращается к хранилищу по сети, что позволяет
+ использовать её на разных компьютерах. Возможность совместной
+ работы с одним и тем же набором данных поощряет сотрудничество. В
+ отсутствие единственного контролирующего звена, через которое
+ должны проходить все изменения, работа становится более
+ эффективной. При этом не нужно опасаться, что потеря такого звена
+ происходит за счёт качества, ведь благодаря сохранению версий,
+ даже если в данные будут внесены ошибочные изменения, всегда можно
сделать откат изменений к прежнему состоянию.</para>
<!-- @ENGLISH {{{
@@ -110,20 +111,20 @@
files might be source code—for others, anything from
grocery shopping lists to digital video mixdowns and
beyond.</para>
- @ ENGLISH }}} -->
- <para>Некоторые системы управления версиями выступают также в
- качестве систем управления конфигурацией программного обеспечения
- (SCM<footnote><para>Software Configuration
- Management</para></footnote>). Такие системы специально
- созданы для управления деревьями исходного кода и обладают
- множеством особенностей, непосредственно относящихся к разработке
- программного обеспечения: они понимают языки программирования и
- предоставляют инструменты для сборки программ. Subversion не
- является такой системой, она представляет собой систему общего
- назначения, которую можно использовать для управления
- <emphasis>любым</emphasis> набором файлов. Ваши файлы могут быть
- исходным кодом, а для кого-то это будет что-то иное, например
- списки покупок в продовольственном магазине или сведённые цифровые
+ @ENGLISH }}} -->
+ <para>Некоторые системы управления версиями выступают также в
+ качестве систем управления конфигурацией программного обеспечения
+ (SCM<footnote><para>Software Configuration
+ Management</para></footnote>). Такие системы специально
+ созданы для управления деревьями исходного кода и обладают
+ множеством особенностей, непосредственно относящихся к разработке
+ программного обеспечения: они понимают языки программирования и
+ предоставляют инструменты для сборки программ. Subversion не
+ является такой системой, она представляет собой систему общего
+ назначения, которую можно использовать для управления
+ <emphasis>любым</emphasis> набором файлов. Ваши файлы могут быть
+ исходным кодом, а для кого-то это будет что-то иное, например
+ списки покупок в продовольственном магазине или сведённые цифровые
видеоролики.</para>
</sect1>
@@ -135,7 +136,7 @@
<!-- @ENGLISH {{{
<title>Subversion's History</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>История Subversion</title>
<!-- @ENGLISH {{{
@@ -153,23 +154,23 @@
a free license. So CollabNet determined to write a new version
control system from scratch, retaining the basic ideas of CVS,
but without the bugs and misfeatures.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В начале 2000 года компания CollabNet, Inc. (<systemitem
- class="url">http://www.collab.net</systemitem>) решила начать
- разработку программного обеспечения, призванного прийти на смену
- CVS, и стала искать людей, способных решить эту задачу. CollabNet
- предлагает комплекс программных средств для совместной работы,
- известный под названием SourceCast, одним из компонентов которого
- является средство для управления версиями. В качестве такого
- средства в SourceCast использовалась CVS, хотя её недостатки были
- очевидны с самого начала, и для CollabNet было ясно, что рано или
- поздно придётся искать замену. К сожалению, CVS стала стандартом
- <foreignphrase>де-факто</foreignphrase> в мире программного
- обеспечения с открытым исходным кодом, главным образом потому, что
- ничего лучшего в то время <emphasis>не существовало</emphasis>, по
- крайней мере среди программ со свободной лицензией. И тогда
- CollabNet решила написать новую систему управления версиями с
- нуля, сохранив основные идеи CVS, но без глюков и неудобств,
+ class="url">http://www.collab.net</systemitem>) решила начать
+ разработку программного обеспечения, призванного прийти на смену
+ CVS, и стала искать людей, способных решить эту задачу. CollabNet
+ предлагает комплекс программных средств для совместной работы,
+ известный под названием SourceCast, одним из компонентов которого
+ является средство для управления версиями. В качестве такого
+ средства в SourceCast использовалась CVS, хотя её недостатки были
+ очевидны с самого начала, и для CollabNet было ясно, что рано или
+ поздно придётся искать замену. К сожалению, CVS стала стандартом
+ <foreignphrase>де-факто</foreignphrase> в мире программного
+ обеспечения с открытым исходным кодом, главным образом потому, что
+ ничего лучшего в то время <emphasis>не существовало</emphasis>, по
+ крайней мере среди программ со свободной лицензией. И тогда
+ CollabNet решила написать новую систему управления версиями с
+ нуля, сохранив основные идеи CVS, но без глюков и неудобств,
свойственных CVS.</para>
<!-- @ENGLISH {{{
@@ -197,35 +198,35 @@
developers. It turned out that many people had had the same
frustrating experiences with CVS, and welcomed the chance to
finally do something about it.</para>
- @ ENGLISH }}} -->
- <para>В феврале 2000 года CollabNet связалась с автором книги
- <citetitle>Open Source Development with
- CVS</citetitle><footnote><para><quote>Разработка программного
- обеспечения с открытым исходным кодом с помощью
+ @ENGLISH }}} -->
+ <para>В феврале 2000 года CollabNet связалась с автором книги
+ <citetitle>Open Source Development with
+ CVS</citetitle><footnote><para><quote>Разработка программного
+ обеспечения с открытым исходным кодом с помощью
CVS</quote></para></footnote> Карлом Фогелем [Karl
- Fogel] и предложила ему принять участие в этом новом проекте.
- Интересно, что Карл тогда уже обсуждал проект новой системы
- управления версиями со своим другом Джимом Блэнди [Jim Blandy].
- Ещё в 1995 году они создали компанию Cyclic Software, которая
- занималась поддержкой пользователей CVS, и хотя позднее этот
- бизнес был продан, друзья продолжали использовать CVS в
- повседневной работе. Их разочарование в CVS сподвигло Джима
- серьёзно задуматься о том, как организовать управление версиями
- лучше, и он не только придумал название <quote>Subversion</quote>,
- но и разработал основные принципы устройства хранилища Subversion.
- Карл немедленно согласился на предложение CollabNet, а
- работодатель Джима, RedHat Software, пожертвовал своим сотрудником
- для этого проекта, предоставив ему возможность работать над
- Subversion в течение неограниченного времени. CollabNet взяла на
- работу Карла и Бена Коллинза-Сассмана [Ben Collins-Sussman], и в
- мае началась работа по проектированию системы. В результате
- нескольких удачных шагов, предпринятых Брайаном Белендорфом [Brian
- Behlendorf] и Джейсоном Роббинсом [Jason Robbins] из CollabNet и
+ Fogel] и предложила ему принять участие в этом новом проекте.
+ Интересно, что Карл тогда уже обсуждал проект новой системы
+ управления версиями со своим другом Джимом Блэнди [Jim Blandy].
+ Ещё в 1995 году они создали компанию Cyclic Software, которая
+ занималась поддержкой пользователей CVS, и хотя позднее этот
+ бизнес был продан, друзья продолжали использовать CVS в
+ повседневной работе. Их разочарование в CVS сподвигло Джима
+ серьёзно задуматься о том, как организовать управление версиями
+ лучше, и он не только придумал название <quote>Subversion</quote>,
+ но и разработал основные принципы устройства хранилища Subversion.
+ Карл немедленно согласился на предложение CollabNet, а
+ работодатель Джима, RedHat Software, пожертвовал своим сотрудником
+ для этого проекта, предоставив ему возможность работать над
+ Subversion в течение неограниченного времени. CollabNet взяла на
+ работу Карла и Бена Коллинза-Сассмана [Ben Collins-Sussman], и в
+ мае началась работа по проектированию системы. В результате
+ нескольких удачных шагов, предпринятых Брайаном Белендорфом [Brian
+ Behlendorf] и Джейсоном Роббинсом [Jason Robbins] из CollabNet и
Грегом Стайном, на тот момент независимым разработчиком, активно
- участвующим в создании спецификации WebDAV/DeltaV, вокруг
- Subversion быстро образовалось сообщество активных разработчиков.
- Оказалось, что многие люди испытывали похожее чувство
- разочарования от CVS, и они с радостью приветствовали появившуюся
+ участвующим в создании спецификации WebDAV/DeltaV, вокруг
+ Subversion быстро образовалось сообщество активных разработчиков.
+ Оказалось, что многие люди испытывали похожее чувство
+ разочарования от CVS, и они с радостью приветствовали появившуюся
наконец возможность изменить положение вещей.</para>
<!-- @ENGLISH {{{
@@ -237,16 +238,16 @@
not need to be a drop-in replacement for CVS, it should be
similar enough that any CVS user could make the switch with
little effort.</para>
- @ ENGLISH }}} -->
- <para>Команда первых инженеров решила остановиться на достижении
- ряда простых целей. Они не собирались открывать новые земли в
- подходах к управлению версиями, скорее им просто хотелось
- починить CVS. Эта команда решила, что Subversion должна
- соответствовать CVS по набору возможностей, сохранив ту же самую
- модель разработки, но без очевидных недостатков CVS. Хотя перед
- ними не стояла задача сделать систему, полностью идентичную CVS,
- было ясно, что они должны быть достаточно похожи друг на друга,
- чтобы любой пользователь CVS мог перейти на новую систему без
+ @ENGLISH }}} -->
+ <para>Команда первых инженеров решила остановиться на достижении
+ ряда простых целей. Они не собирались открывать новые земли в
+ подходах к управлению версиями, скорее им просто хотелось
+ починить CVS. Эта команда решила, что Subversion должна
+ соответствовать CVS по набору возможностей, сохранив ту же самую
+ модель разработки, но без очевидных недостатков CVS. Хотя перед
+ ними не стояла задача сделать систему, полностью идентичную CVS,
+ было ясно, что они должны быть достаточно похожи друг на друга,
+ чтобы любой пользователь CVS мог перейти на новую систему без
особых затруднений.</para>
<!-- @ENGLISH {{{
@@ -254,10 +255,10 @@
<quote>self-hosting</quote> on August 31, 2001. That is,
Subversion developers stopped using CVS to manage Subversion's
own source code, and started using Subversion instead.</para>
- @ ENGLISH }}} -->
- <para>И вот, 31 августа 2001 года, спустя четырнадцать месяцев
- работы, команда прекратила использовать CVS и перешла на
- Subversion для управления версиями собственного исходного
+ @ENGLISH }}} -->
+ <para>И вот, 31 августа 2001 года, спустя четырнадцать месяцев
+ работы, команда прекратила использовать CVS и перешла на
+ Subversion для управления версиями собственного исходного
кода—Subversion стала <quote>самодостаточной</quote>.</para>
<!-- @ENGLISH {{{
@@ -270,17 +271,17 @@
words, anyone is free to download, modify, and redistribute
Subversion as he pleases; no permission from CollabNet or anyone
else is required.</para>
- @ ENGLISH }}} -->
- <para>Хотя CollabNet стоит у истоков проекта и продолжает
- финансировать основную часть работы, оплачивая полный рабочий день
+ @ENGLISH }}} -->
+ <para>Хотя CollabNet стоит у истоков проекта и продолжает
+ финансировать основную часть работы, оплачивая полный рабочий день
нескольких ведущих разработчиков, Subversion развивается подобно
- большинству проектов разработки программного обеспечения с
- открытым исходным кодом, управляясь свободным и прозрачным набором
- правил, поощряющих меритократию. Лицензия CollabNet полностью
- соответствует принципам свободного программного обеспечения
- Debian—любой человек свободен устанавливать, изменять и
- распространять Subversion так, как ему заблагорассудится; для
- этого не требуется разрешение от CollabNet или кого-либо
+ большинству проектов разработки программного обеспечения с
+ открытым исходным кодом, управляясь свободным и прозрачным набором
+ правил, поощряющих меритократию. Лицензия CollabNet полностью
+ соответствует принципам свободного программного обеспечения
+ Debian—любой человек свободен устанавливать, изменять и
+ распространять Subversion так, как ему заблагорассудится; для
+ этого не требуется разрешение от CollabNet или кого-либо
ещё.</para>
</sect1>
@@ -292,7 +293,7 @@
<!-- @ENGLISH {{{
<title>Subversion's Features</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Возможности Subversion</title>
<!-- @ENGLISH {{{
@@ -304,19 +305,19 @@
eyes may glaze over unless you first read <xref
linkend="svn.basic"/>, in which we provide a gentle introduction
to version control in general.</para>
- @ ENGLISH }}} -->
- <para>Обсуждать возможности Subversion удобнее всего в разрезе
- её улучшений по сравнению с CVS. Суть некоторых рассматриваемых
+ @ENGLISH }}} -->
+ <para>Обсуждать возможности Subversion удобнее всего в разрезе
+ её улучшений по сравнению с CVS. Суть некоторых рассматриваемых
здесь возможностей может быть не совсем понятна читателям, которые
плохо знакомы с CVS. Если же вы совсем не имеете представления об
- управлении версиями, то вам лучше сначала прочитать <xref
- linkend="svn.basic" endterm="svn.basic.accusative-case"/>, где
+ управлении версиями, то вам лучше сначала прочитать <xref
+ linkend="svn.basic" endterm="svn.basic.accusative-case"/>, где
даётся доступное введение в управление версиями.
</para>
<!-- @ENGLISH {{{
<para>Subversion provides:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion предоставляет следущие возможности:</para>
<!-- @ENGLISH {{{
@@ -331,16 +332,16 @@
versioned.</para>
</listitem>
</varlistentry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<variablelist>
<varlistentry>
<term>Управление версиями каталогов</term>
<listitem>
- <para>CVS следит только за историей отдельных файлов, тогда
+ <para>CVS следит только за историей отдельных файлов, тогда
как Subversion использует <quote>виртуальную</quote>
- файловую систему с возможностями управления версиями,
- которая способна отслеживать изменения во времени целых
- деревьев каталогов. Под управление версиями попадают файлы
+ файловую систему с возможностями управления версиями,
+ которая способна отслеживать изменения во времени целых
+ деревьев каталогов. Под управление версиями попадают файлы
<emphasis>и</emphasis> каталоги.</para>
</listitem>
</varlistentry>
@@ -362,15 +363,15 @@
history all its own.</para>
</listitem>
</varlistentry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<varlistentry>
<term>Настоящая история версий</term>
<listitem>
- <para>CVS ограничивается управлением версиями файлов, поэтому
+ <para>CVS ограничивается управлением версиями файлов, поэтому
такие операции, как копирование и переименование, хотя и
- относящиеся к файлам, но по существу являющиеся изменениями
- содержащих эти файлы каталогов, в CVS не поддерживаются.
- Кроме того, в CVS вы не можете заменить файл, помещённый под
+ относящиеся к файлам, но по существу являющиеся изменениями
+ содержащих эти файлы каталогов, в CVS не поддерживаются.
+ Кроме того, в CVS вы не можете заменить файл, помещённый под
управление версиями, другим файлом с тем же именем, но
совершенно иным содержанием, возможно никак не связанным со
старым объектом, без наследования таким элементом всей
@@ -394,15 +395,15 @@
repository.</para>
</listitem>
</varlistentry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<varlistentry>
<term>Атомарные закрепления изменений</term>
<listitem>
- <para>Каждый набор изменений либо попадает в хранилище
- целиком, либо не попадает туда вовсе. Это позволяет
- разработчикам создавать и закреплять изменения логически
- оправданными кусками, предотвращая тем самым проблемы,
- которые могут возникать в тех случаях, когда только часть
+ <para>Каждый набор изменений либо попадает в хранилище
+ целиком, либо не попадает туда вовсе. Это позволяет
+ разработчикам создавать и закреплять изменения логически
+ оправданными кусками, предотвращая тем самым проблемы,
+ которые могут возникать в тех случаях, когда только часть
необходимых изменений помещается в хранилище успешно.</para>
</listitem>
</varlistentry>
@@ -418,15 +419,15 @@
like file contents.</para>
</listitem>
</varlistentry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<varlistentry>
<term>Метаданные с версиями</term>
<listitem>
- <para>Каждый файл и каталог имеет собственный набор свойств,
- представленных в виде названия и значения. Вы можете
- создавать и сохранять любые необходимые пары названий
- свойств и их значений. Свойства файлов точно так же
- находятся под управлением версиями, как и их
+ <para>Каждый файл и каталог имеет собственный набор свойств,
+ представленных в виде названия и значения. Вы можете
+ создавать и сохранять любые необходимые пары названий
+ свойств и их значений. Свойства файлов точно так же
+ находятся под управлением версиями, как и их
содержимое.</para>
</listitem>
</varlistentry>
@@ -448,21 +449,21 @@
SSH.</para>
</listitem>
</varlistentry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<varlistentry>
<term>Выбор средств доступа к хранилищу по сети</term>
<listitem>
- <para>В Subversion используется абстракция доступа к
- хранилищу, что позволяет реализовывать самые разные сетевые
- механизмы доступа. Subversion может быть подключена к
- серверу HTTP Apache в виде модуля, что даёт ей огромное
- преимущество с точки зрения устойчивости работы и способности
- к взаимодействию, а также предоставляет прямой доступ к
- существующим возможностям этого сервера, включая
- установление личности, проверку прав доступа и сжатие
- информации при передаче. Кроме того, имеется лёгкий
- самостоятельный сервер Subversion, который использует
- собственный протокол взаимодействия с клиентами и может
+ <para>В Subversion используется абстракция доступа к
+ хранилищу, что позволяет реализовывать самые разные сетевые
+ механизмы доступа. Subversion может быть подключена к
+ серверу HTTP Apache в виде модуля, что даёт ей огромное
+ преимущество с точки зрения устойчивости работы и способности
+ к взаимодействию, а также предоставляет прямой доступ к
+ существующим возможностям этого сервера, включая
+ установление личности, проверку прав доступа и сжатие
+ информации при передаче. Кроме того, имеется лёгкий
+ самостоятельный сервер Subversion, который использует
+ собственный протокол взаимодействия с клиентами и может
легко туннелировать данные через SSH.</para>
</listitem>
</varlistentry>
@@ -479,7 +480,7 @@
directions across the network.</para>
</listitem>
</varlistentry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<varlistentry>
<term>Единый способ работы с данными</term>
<listitem>
@@ -504,15 +505,15 @@
</para>
</listitem>
</varlistentry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<varlistentry>
<term>Эффективные ветки и метки</term>
<listitem>
- <para>Плата за использование веток и меток не должна быть
- пропорциональна размеру проекта. Subversion создаёт ветки и
- метки путём простого копирования проекта, используя
- механизм, похожий на жёсткие ссылки в файловых системах.
- Благодаря этому, операции по созданию веток и меток занимают
+ <para>Плата за использование веток и меток не должна быть
+ пропорциональна размеру проекта. Subversion создаёт ветки и
+ метки путём простого копирования проекта, используя
+ механизм, похожий на жёсткие ссылки в файловых системах.
+ Благодаря этому, операции по созданию веток и меток занимают
немного времени.
</para>
</listitem>
@@ -529,15 +530,15 @@
languages.</para>
</listitem>
</varlistentry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<varlistentry>
<term>Дружелюбность по отношению к разработчикам</term>
<listitem>
- <para>Subversion не имеет исторического багажа. Она
- реализована в виде набора динамических библиотек на языке C,
- API которых хорошо известен. Это делает Subversion
- чрезвычайно удобной для сопровождения системой, пригодной
- для взаимодействия с другими приложениями и языками
+ <para>Subversion не имеет исторического багажа. Она
+ реализована в виде набора динамических библиотек на языке C,
+ API которых хорошо известен. Это делает Subversion
+ чрезвычайно удобной для сопровождения системой, пригодной
+ для взаимодействия с другими приложениями и языками
программирования.</para>
</listitem>
</varlistentry>
@@ -553,22 +554,22 @@
<!-- @ENGLISH {{{
<title>Subversion's Architecture</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Архитектура Subversion</title>
<!-- @ENGLISH {{{
<para><xref linkend="svn.intro.architecure.dia-1"/> illustrates what one might
call a <quote>mile-high</quote> view of Subversion's
design.</para>
- @ ENGLISH }}} -->
- <para>Общий взгляд на устройство Subversion показан на <xref
- linkend="svn.intro.architecure.dia-1"
+ @ENGLISH }}} -->
+ <para>Общий взгляд на устройство Subversion показан на <xref
+ linkend="svn.intro.architecure.dia-1"
endterm="svn.intro.architecure.dia-1.prepositional-case"/>.</para>
-
+
<figure id="svn.intro.architecure.dia-1">
<!-- @ENGLISH {{{
<title>Subversion's Architecture</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Архитектура Subversion</title>
<graphic fileref="images/ch01dia1.png"/>
</figure>
@@ -583,17 +584,17 @@
networks and through network servers which then access the
repository. Others bypass the network altogether and access the
repository directly.</para>
- @ ENGLISH }}} -->
- <para>На одной стороне схемы изображено хранилище Subversion, в
- котором хранится информация с версиями. На противоположной стороне
- показана программа-клиент Subversion, которая управляет локальными
- отражениями различных фрагментов этих данных (также называемыми
- <quote>рабочими копиями</quote>). Между этими сторонами проложены
- различные маршруты, проходящие через разные слои доступа к
- хранилищу<footnote><para>Repository Access (RA)
- layers</para></footnote>. Некоторые из этих маршрутов
- используют компьютерные сети и сетевые сервера, чтобы достичь
- хранилища, в то время как другие маршруты в сети не нуждаются и
+ @ENGLISH }}} -->
+ <para>На одной стороне схемы изображено хранилище Subversion, в
+ котором хранится информация с версиями. На противоположной стороне
+ показана программа-клиент Subversion, которая управляет локальными
+ отражениями различных фрагментов этих данных (также называемыми
+ <quote>рабочими копиями</quote>). Между этими сторонами проложены
+ различные маршруты, проходящие через разные слои доступа к
+ хранилищу<footnote><para>Repository Access (RA)
+ layers</para></footnote>. Некоторые из этих маршрутов
+ используют компьютерные сети и сетевые сервера, чтобы достичь
+ хранилища, в то время как другие маршруты в сети не нуждаются и
ведут к хранилищу напрямую.</para>
</sect1>
@@ -605,7 +606,7 @@
<!-- @ENGLISH {{{
<title>Installing Subversion</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Установка Subversion</title>
<!-- @ENGLISH {{{
@@ -614,7 +615,7 @@
work on any operating system that the Apache httpd server runs
on: Windows, Linux, all flavors of BSD, Mac OS X, Netware, and
others.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion построена на портабельном слое под названием
APR (the Apache Portable Runtime library). Это означает, что
Subversion должна работать на любой операционной системе на которой
@@ -633,7 +634,7 @@
operating system, you can use your system's native package
distribution system (RPMs, DEBs, the ports tree, etc.) to get
Subversion.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Наиболее простой способ получить Subversion - скачать бинарный
пакет, собранный для вашей операционной системы. Как правило, эти
пакеты присланные волонтерами, доступны для загрузки с веб-сайта
@@ -661,7 +662,7 @@
client program to grab the latest, bleeding-edge source code.
This is documented in <xref
linkend="svn.developer.contrib.get-code"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В качестве альтернативного варианта вы можете построить Subversion
прямо из исходного кода. Закачайте с web-сайта Subversion последний
source-code релиз. После его распаковки для его сборки
@@ -686,7 +687,7 @@
<!-- @ENGLISH {{{
<title>Subversion's Components</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Компоненты Subversion</title>
<!-- @ENGLISH {{{
@@ -695,7 +696,7 @@
Don't be alarmed if the brief descriptions leave you scratching
your head—there are <emphasis>plenty</emphasis> more pages
in this book devoted to alleviating that confusion.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Установленная Subversion имеет определенное количество компонентов.
Ниже перечисленное - краткий обзор того, что вы получаете. Не тревожьтесь
если краткие описания заставляют вас чесать затылок, в этой книге есть
@@ -709,7 +710,7 @@
<listitem>
<!-- @ENGLISH {{{
<para>The command-line client program.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>CLI-клиент.</para>
</listitem>
</varlistentry>
@@ -720,7 +721,7 @@
<!-- @ENGLISH {{{
<para>A program for reporting the state (in terms of
revisions of the items present) of a working copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Программа показывающая состояние (в пределах ревизий
существующих элементов) рабочей копии.</para>
</listitem>
@@ -731,7 +732,7 @@
<listitem>
<!-- @ENGLISH {{{
<para>A tool for inspecting a Subversion repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Инстумент для контроля Subversion хранилища.</para>
</listitem>
</varlistentry>
@@ -742,7 +743,7 @@
<!-- @ENGLISH {{{
<para>A tool for creating, tweaking or repairing a Subversion
repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Инструмент для создания, настройки или востановления
Subversion хранилища.</para>
</listitem>
@@ -754,7 +755,7 @@
<!-- @ENGLISH {{{
<para>A program for filtering Subversion repository dump
streams.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Программа для фильтрации дамповых потоков
Subversion хранилища.</para>
</listitem>
@@ -767,7 +768,7 @@
<para>A plug-in module for the Apache HTTP Server, used to
make your repository available to others over a
network.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Подключаемый модуль для HTTP сервера Apache, использующийся
для предоставления сетевого доступа к вашему хранилищу.</para>
</listitem>
@@ -780,7 +781,7 @@
<para>A custom standalone server program, runnable as a
daemon process or invokable by SSH; another way to make
your repository available to others over a network.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Собственный отдельный сервер, запускается как
процесс-демон и доступен посредством SSH; еще один способ
для предоставления сетевого доступа к хранилищу.</para>
@@ -793,7 +794,7 @@
be ready to start. The next two chapters will walk you through
the use of <command>svn</command>, Subversion's command-line client
program.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>При условии корректно установленой Subversion вы готовы к старту.
Следующие две главы опысывают использование <command>svn</command>,
CLI-клиента Subversion.</para>
@@ -808,7 +809,7 @@
<!-- @ENGLISH {{{
<title>A Quick Start</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Быстрый старт</title>
<!-- @ENGLISH {{{
@@ -820,7 +821,7 @@
experimentation, the following demonstration will get you up and
running. Along the way, we give links to the relevant chapters
of this book.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Некоторые испытывают трудности поглощения новой технологии
читая приближение <quote>с верху вниз</quote>, предлагаемое этой
книгой. Этот раздел представляет собой очень короткое введение в
@@ -836,7 +837,7 @@
the <quote>copy-modify-merge</quote> model used by both CVS and
Subversion, then you should read <xref linkend="svn.basic"/>
before going any further.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вы не совсем знакомы с концепциями контроля версий или
моделью <quote>копирование-изменение-слияние</quote>, используемой
как CVS так и Subversion, перед тем как идти дальше, вам нужно
@@ -847,28 +848,21 @@
<para>The following example assumes that you have
<command>svn</command>, the Subversion command-line client,
and <command>svnadmin</command>, the administrative tool,
- ready to go. It also assumes that your <command>svn</command>
- client has been compiled against Berkeley DB. To verify this,
- run <command>svn -ﳢversion</command> and make sure the
- <literal>ra_local</literal> module is available. Without this
- module, the client cannot access <literal>file://</literal>
- URLs.</para>
- @ ENGLISH }}} -->
+ ready to go. It also assumes you are using Subversion 1.2 or
+ later (run <command>svn -ﳢ-version</command> to check.)</para>
+ @ENGLISH }}} -->
<para>Последующий пример предполагает наличие у вас работающих
- Subversion CLI-клиента <command>svn</command> и
+ Subversion клиента для командной строки <command>svn</command> и
инструмента администрирования <command>svnadmin</command>.
- Кроме этого он рассчитан на то, что ваш <command>svn</command>
- клиент собран с поддержкой Berkeley DB. Чтобы это проверить,
- выполните <command>svn --version</command> и убедитесь
- в доступности модуля <literal>ra_local</literal>.
- Без этого модуля клиент не может обращаться по URL вида
- <literal>file://</literal>.</para>
+ Кроме этого он рассчитан на то, что вы используете Subversion
+ версии 1.2 или или более поздней (для того, чтобы это проверить,
+ выполните <command>svn --version</command>).</para>
</note>
<!-- @ENGLISH {{{
<para>Subversion stores all versioned data in a central
repository. To begin, create a new repository:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion хранит всю версионированую информацию в
центральном хранилище. Для начала, создадим новое
хранилище:</para>
@@ -882,108 +876,158 @@
<!-- @ENGLISH {{{
<para>This command creates a new directory
<filename>/path/to/repos</filename> which contains a Subversion
- repository. Make sure that this directory lives on a local
- disk, <emphasis>not</emphasis> a network share. This new
- directory mainly contains a collection of Berkeley DB database
- files. You won't see your versioned files if you peek inside.
- For more information about repository creation and maintenance,
- see <xref linkend="svn.reposadmin"/>.</para>
- @ ENGLISH }}} -->
+ repository. This new directory contains (among other things) a
+ collection of database files. You won't see your versioned
+ files if you peek inside. For more information about repository
+ creation and maintenance, see
+ <xref linkend="svn.reposadmin"/>.</para>
+ @ENGLISH }}} -->
<para>Эта команда создает новую директорию
<filename>/path/to/repos</filename> содержащую Subversion
хранилище. Убедитесь, что эта директория находится на локальном
диске, <emphasis>не</emphasis> на сетевой шаре. Преимущественно в
- этой новой директории содержится набор файлов базы данных Berkeley DB.
- Если вы загляните внутрь, своих версионированых файлов вы не увидите.
+ эта новая директория (кроме прочего) содержит набор файлов базы данных.
+ Вы не увидите своих версионированых файлов если вы загляните внутрь.
Больше информации о создании и поддержке репозитория ищите в
<xref linkend="svn.reposadmin"/>.</para>
<!-- @ENGLISH {{{
- <para>Next, create a tree of files and directories to import into
- the repository. For reasons that will be clear later on (see
- <xref linkend="svn.branchmerge"/>), your structure should contain three
- top-level directories named <filename>branches</filename>,
+ <para>Subversion has no concept of a <quote>project</quote>. The
+ repository is just a virtual versioned filesystem, a large tree
+ that can hold anything you wish. Some administrators prefer to
+ store only one project in a repository, and others prefer to
+ store multiple projects in a repository by placing them into
+ separate directories. The merits of each approach are discussed
+ in <xref linkend="svn.reposadmin.projects.chooselayout"/>.
+ Either way, the repository only manages files and directories,
+ so it's up to humans to interpret particular directories
+ as <quote>projects</quote>.</para>
+ @ENGLISH }}} -->
+ <para>У Subversion нет понятия <quote>проект</quote>. Хранилище
+ является просто виртуальной версионированой файловой системой,
+ большое дерево файлов, которое может содержать все, что угодно.
+ Одни администраторы предпочитают держать в хранилище только
+ один проект, другие держать в хранилище множество проектов,
+ размещая их в отдельных директориях. Достоинства каждого из
+ подходов рассмотрены в <xref
+ linkend="svn.reposadmin.projects.chooselayout"/>. В любом случае,
+ хранилище управляет только файлами и директориями, оставляя
+ за человеком право интерпретировать отдельные директории
+ как <quote>проекты</quote>.</para>
+
+ <!-- @ENGLISH {{{
+ <para>In this example, we assume that you already have some sort
+ of project (a collection of files and directories) that you wish
+ to import into your newly created Subversion repository. Begin
+ by organizing them into a single directory
+ called <filename>myproject</filename> (or whatever you wish).
+ For reasons that will be clear later on (see
+ <xref linkend="svn.branchmerge"/>), your project's tree
+ structure should contain three top-level directories
+ named <filename>branches</filename>,
<filename>tags</filename>, and
- <filename>trunk</filename>:</para>
- @ ENGLISH }}} -->
- <para>Затем, создаем дерево файлов и директорий для импортирования
- в хранилище. По причинам, которые будут ясны позже (см.
- <xref linkend="svn.branchmerge"/>), ваша конструкция должна содержать
+ <filename>trunk</filename>. The <filename>trunk</filename>
+ directory should contain all of your data,
+ while <filename>branches</filename>
+ and <filename>tags</filename> directories are empty:</para>
+ @ENGLISH }}} -->
+ <para>В этом примере мы подразумеваем наличие у вас какого то проекта
+ (набора файлов или директорий), который вы хотите импортировать в
+ только что созданое Subversion хранилище. Начните с объединения их
+ в отдельной директории названой <filename>myproject</filename>
+ (или как то иначе). По причинам, которые будут ясны позже (см.
+ <xref linkend="svn.branchmerge"/>), ваше дерево проекта должно содержать
три директории верхнего уровня с названиями
<filename>branches</filename>, <filename>tags</filename> и
- <filename>trunk</filename>:</para>
+ <filename>trunk</filename>. Вся ваша информация должна находиться в
+ в директории <filename>trunk</filename>, а директории
+ <filename>branches</filename> и <filename>tags</filename> должны быть
+ пустыми:</para>
<screen>
-/tmp/project/branches/
-/tmp/project/tags/
-/tmp/project/trunk/
- foo.c
- bar.c
- Makefile
- …
+/tmp/myproject/branches/
+/tmp/myproject/tags/
+/tmp/myproject/trunk/
+ foo.c
+ bar.c
+ Makefile
+ …
</screen>
<!-- @ENGLISH {{{
- <para>Once you have a tree of data ready to go, import the data
- into the repository with the <command>svn import</command>
- command (see <xref linkend="svn.tour.other.import"/>):</para>
- @ ENGLISH }}} -->
- <para>Как только вы получите готовое дерево данных, при помощи
- команды <command>svn import</command> импортируйте информацию в
- хранилище (см. <xref linkend="svn.tour.other.import"/>):</para>
+ <para>Once you have your tree of data ready to go, import it into
+ the repository with the <command>svn import</command> command
+ (see <xref linkend="svn.tour.other.import"/>):</para>
+ @ENGLISH }}} -->
+ <para>Как только вы получите готовое дерево данных, импортируйте его
+ в хранилище при помощи команды <command>svn import</command>
+ (см. <xref linkend="svn.tour.other.import"/>):</para>
<screen>
-$ svn import /tmp/project file:///path/to/repos -m "initial import"
-Adding /tmp/project/branches
-Adding /tmp/project/tags
-Adding /tmp/project/trunk
-Adding /tmp/project/trunk/foo.c
-Adding /tmp/project/trunk/bar.c
-Adding /tmp/project/trunk/Makefile
+$ svn import /tmp/myproject file:///path/to/repos/myproject -m "initial import"
+Adding /tmp/myproject/branches
+Adding /tmp/myproject/tags
+Adding /tmp/myproject/trunk
+Adding /tmp/myproject/trunk/foo.c
+Adding /tmp/myproject/trunk/bar.c
+Adding /tmp/myproject/trunk/Makefile
…
Committed revision 1.
$
</screen>
<!-- @ENGLISH {{{
- <para>Now the repository contains this tree of data. Note that
- the original <filename>/tmp/project</filename> directory is
- unchanged; Subversion is unaware of it. (In fact, you can even
- delete that directory if you wish.) In order to start
- manipulating repository data, you need to create a new
+ <para>Now the repository contains this tree of data. As mentioned
+ earlier, you won't see your files by directly peeking into the
+ repository; they're all stored within a database. But the
+ repository's imaginary filesystem now contains a top-level
+ directory named <filename>myproject</filename>, which in turn
+ contains your data.</para>
+ @ENGLISH }}} -->
+ <para>Теперь в хранилище находится это дерево данных. Как было
+ отмечено ранее, вы не увидите своих файлов если загляните в
+ хранилище напрямую; все хранится в базе данных. Однако сейчас
+ воображаемая файловая системы хранилища имеет директорию верхнего
+ уровня с названием <filename>myproject</filename> которая
+ содержит вашу информацию.</para>
+
+ <!-- @ENGLISH {{{
+ <para>Note that the original <filename>/tmp/myproject</filename>
+ directory is unchanged; Subversion is unaware of it. (In fact,
+ you can even delete that directory if you wish.) In order to
+ start manipulating repository data, you need to create a new
<quote>working copy</quote> of the data, a sort of private
workspace. Ask Subversion to <quote>check out</quote> a working
- copy of the repository's <filename>trunk</filename>
- directory:</para>
- @ ENGLISH }}} -->
- <para>Теперь хранилище содержит это дерево информации. Обратите
- внимание на то, что первоначальная директория
+ copy of the <filename>myproject/trunk</filename> directory in
+ the repository:</para>
+ @ENGLISH }}} -->
+ <para>Обратите внимание на то, что первоначальная директория
<filename>/tmp/project</filename> остается без изменений;
Subversion о ней не знает. (Фактически, при желании, вы можете даже
удалить этот каталог.) Чтобы начать работать с информацией хранилища
вам нужно создать новую <quote>рабочую копию</quote> информации,
своего рода частное рабочее пространство. Попросите Subversion
- создать рабочую копию директории <filename>
- trunk</filename> репозитория:</para>
+ создать рабочую копию директории <filename>myproject/trunk</filename>
+ хранилища:</para>
<screen>
-$ svn checkout file:///path/to/repos/trunk project
-A project/foo.c
-A project/bar.c
-A project/Makefile
+$ svn checkout file:///path/to/repos/myproject/trunk myproject
+A myproject/foo.c
+A myproject/bar.c
+A myproject/Makefile
…
Checked out revision 1.
</screen>
<!-- @ENGLISH {{{
<para>Now you have a personal copy of part of the repository in a
- new directory named <filename>project</filename>. You can edit
+ new directory named <filename>myproject</filename>. You can edit
the files in your working copy and then commit those changes
back into the repository.</para>
- @ ENGLISH }}} -->
- <para>Сейчас у вас в новой директории <filename>project</filename>
+ @ENGLISH }}} -->
+ <para>Сейчас у вас в новой директории <filename>myproject</filename>
есть личная копия части хранилища. В рабочей копии вы можете
- редактировать файлы, а затем отправить внесенные изменения обратно
+ редактировать файлы, а затем зафиксировать внесенные изменения
в хранилище.</para>
<itemizedlist>
@@ -991,7 +1035,7 @@
<!-- @ENGLISH {{{
<para>Enter your working copy and edit a file's
contents.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Откройте свою рабочую копию и отредактируйте
содержимое файлов.</para>
</listitem>
@@ -999,7 +1043,7 @@
<!-- @ENGLISH {{{
<para>Run <command>svn diff</command> to see unified diff
output of your changes.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Выполните <command>svn diff</command> чтобы увидеть
объединенный diff внесенных изменений.</para>
</listitem>
@@ -1007,7 +1051,7 @@
<!-- @ENGLISH {{{
<para>Run <command>svn commit</command> to commit the new
version of your file to the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Выполните <command>svn commit</command> для фиксации
новой версии ваших файлов в хранилище.</para>
</listitem>
@@ -1015,7 +1059,7 @@
<!-- @ENGLISH {{{
<para>Run <command>svn update</command> to bring your working
copy <quote>up-to-date</quote> with the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Выполните <command>svn update</command> для приведения
рабочей копии в <quote>актуальное</quote> состояние по
отношению к хранилищу.</para>
@@ -1025,7 +1069,7 @@
<!-- @ENGLISH {{{
<para>For a full tour of all the things you can do with your
working copy, read <xref linkend="svn.tour"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для получения полного списка возможных действий с рабочей копией
прочтите <xref linkend="svn.tour"/>.</para>
@@ -1034,7 +1078,7 @@
available to others over a network. See <xref
linkend="svn.serverconfig"/> to learn about the different sorts of
server processes available and how to configure them.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>После этого вы можете сделать ваше хранилище доступным
для других через сеть. См. <xref linkend="svn.serverconfig"/> для
знакомства с различными типами доступных серверных процессов
Modified: trunk/src/ru/book/ch02.xml
==============================================================================
--- trunk/src/ru/book/ch02.xml (original)
+++ trunk/src/ru/book/ch02.xml Sat Jul 23 08:39:53 2005
@@ -3,11 +3,12 @@
<!-- @ENGLISH {{{
<title>Basic Concepts</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Основные понятия</title>
<chapterinfo>
<!-- See also svn.preface.organization -->
- <othername id="svn.basic.accusative-case" role="title-variant">главу
+ <edition>1530</edition>
+ <othername id="svn.basic.accusative-case" role="title-variant">главу
2, «Основные понятия»</othername>
</chapterinfo>
@@ -19,7 +20,7 @@
concepts, work our way into the specific ideas behind
Subversion, and show some simple examples of Subversion in
use.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Эта глава представляет собой краткое, промежуточное введение
в Subversion. Если контроль версий для вас в новинку, то эта глава
специально для вас. Мы начнем с обсуждения основных понятий
@@ -31,7 +32,7 @@
collections of program source code, keep in mind that Subversion
can manage any sort of file collection—it's not limited to
helping computer programmers.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Несмотря на то, что примеры в этой главе показывают людей
делящих между собой набор исходников программы, помните, что
Subversion может управлять набором файлов любого типа — она не
@@ -48,7 +49,7 @@
<sect1 id="svn.basic.repository">
<!-- @ENGLISH {{{
<title>The Repository</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Хранилище</title>
<!-- @ENGLISH {{{
@@ -62,7 +63,7 @@
makes the information available to others; by reading data, the
client receives information from others. <xref
linkend="svn.basic.repository.dia-1"/> illustrates this.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion является централизованной системой для разделения
информации. В ее основе хранилище, являющееся центром хранения
данных. Хранилище хранит информацию в форме
@@ -77,7 +78,7 @@
<figure id="svn.basic.repository.dia-1">
<!-- @ENGLISH {{{
<title>A typical client/server system</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Типичная клиент/серверная система</title>
<graphic fileref="images/ch02dia1.png"/>
</figure>
@@ -91,7 +92,7 @@
to it: every change to every file, and even changes to the
directory tree itself, such as the addition, deletion, and
rearrangement of files and directories.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Почему мы заостряем на этом внимание? Пока это звучит как
определение типичного файл-сервера. И действительно, хранилище
<emphasis>является</emphasis> разновидностью файл-сервера, однако не
@@ -114,7 +115,7 @@
systems that are designed to record and track changes to data
over time.
</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>При чтении данных из хранилища клиент обычно видит только
последнюю версию дерева файлов. Но клиент также имеет возможность
просмотреть <emphasis>предыдущие</emphasis> состояния файловой системы.
@@ -133,14 +134,14 @@
<sect1 id="svn.basic.vsn-models">
<!-- @ENGLISH {{{
<title>Versioning Models</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Модели версионирования</title>
<!-- @ENGLISH {{{
<para>The core mission of a version control system is to enable
collaborative editing and sharing of data. But different
systems use different strategies to achieve this.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Основной задачей системы управления версиями является
обеспечение совместного редактирования и распределения информации.
Однако разные системы используют разные способы для
@@ -151,7 +152,7 @@
<sect2 id="svn.basic.vsn-models.problem-sharing">
<!-- @ENGLISH {{{
<title>The Problem of File-Sharing</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Проблема разделения файлов</title>
<!-- @ENGLISH {{{
@@ -161,7 +162,7 @@
each other's feet? It's all too easy for users to
accidentally overwrite each other's changes in the
repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Всем системам контроля версий приходится решать одну и ту же
основную проблему: как предоставить пользователям возможность
совместного использования информации, при этом, не позволяя им
@@ -184,7 +185,7 @@
still effectively lost—or at least missing from the
latest version of the file—and probably by accident.
This is definitely a situation we want to avoid!</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Рассматриваемую ситуацию иллюстрирует <xref
linkend="svn.basic.vsn-models.problem-sharing.dia-1"/>.
Допустим у нас есть два
@@ -213,7 +214,7 @@
<sect2 id="svn.basic.vsn-models.lock-unlock">
<!-- @ENGLISH {{{
<title>The Lock-Modify-Unlock Solution</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Модель Блокирование-Изменений-Разблокирование</title>
<!-- @ENGLISH {{{
@@ -231,7 +232,7 @@
now Sally can take her turn by locking and editing. <xref
linkend="svn.basic.vsn-models.lock-unlock.dia-1"/> demonstrates this simple
solution.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Многие системы управления версиями применяют в отношении
этой проблемы модель
<firstterm>блокирование-изменение-разблокирование</firstterm>.
@@ -251,7 +252,7 @@
<figure id="svn.basic.vsn-models.lock-unlock.dia-1">
<!-- @ENGLISH {{{
<title>The lock-modify-unlock solution</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Модель блокирование-изменение-разблокирование</title>
<graphic fileref="images/ch02dia3.png"/>
</figure>
@@ -260,7 +261,7 @@
<para>The problem with the lock-modify-unlock model is that it's
a bit restrictive, and often becomes a roadblock for
users:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Проблемой модели блокирование-изменение-разблокирование
является то, что она немного ограниченная и часто доставляет
неудобства пользователям:</para>
@@ -277,7 +278,7 @@
Sally has to get an administrator to release Harry's lock.
The situation ends up causing a lot of unnecessary delay
and wasted time.
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><emphasis>Блокирование может вызвать проблемы
администрирования.</emphasis>
@@ -301,7 +302,7 @@
come, assuming the changes were properly merged together.
There's no need for them to take turns in this
situation.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><emphasis>Блокирование может вызвать излишнюю
пошаговость.</emphasis>
@@ -329,7 +330,7 @@
safe, insulated task, and thus not bother
discussing their incompatible changes early
on.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><emphasis>Блокирование может вызвать ложное чувство
безопасности.</emphasis>
@@ -352,7 +353,7 @@
<sect2 id="svn.basic.vsn-models.copy-merge">
<!-- @ENGLISH {{{
<title>The Copy-Modify-Merge Solution</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Модель Копирование-Изменение-Слияние</title>
<!-- @ENGLISH {{{
@@ -367,7 +368,7 @@
The version control system often assists with the merging, but
ultimately a human being is responsible for making it happen
correctly.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion, CVS и другие системы управления версиями
пользуются моделью
<firstterm>копирование-изменение-слияние</firstterm> в качестве
@@ -396,7 +397,7 @@
saves his working copy back to the repository. <xref
linkend="svn.basic.vsn-models.copy-merge.dia-1"/> and <xref linkend="svn.basic.vsn-models.copy-merge.dia-2"/>
show this process.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вот пример. Скажем и Гарри и Салли создали копированием из
хранилища рабочие копии одного и того же проекта. Они работают
одновременно и в своих рабочих копиях вносят изменения в один и
@@ -418,7 +419,7 @@
<figure id="svn.basic.vsn-models.copy-merge.dia-1">
<!-- @ENGLISH {{{
<title>The copy-modify-merge solution</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Модель копирование-изменение-слияние</title>
<graphic fileref="images/ch02dia4.png"/>
</figure>
@@ -426,7 +427,7 @@
<figure id="svn.basic.vsn-models.copy-merge.dia-2">
<!-- @ENGLISH {{{
<title>The copy-modify-merge solution (continued)</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Модель копирование-изменение-слияние (продолжение)</title>
<graphic fileref="images/ch02dia5.png"/>
</figure>
@@ -445,7 +446,7 @@
manually resolved the overlapping changes—perhaps after
a discussion with Sally—he can safely save the
merged file back to the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>А что если изменения Салли перекрываются с
<emphasis>изменениями</emphasis> Гарри? Что тогда? Эта ситуация
называется <firstterm>конфликтом</firstterm> и, как правило, это не
@@ -467,7 +468,7 @@
changes don't overlap at all; conflicts are infrequent. And
the amount of time it takes to resolve conflicts is far less
than the time lost by a locking system.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Модель копирование-изменение-слияние может выглядеть немного
хаотично, однако, на практике она отлично работает. Пользователи могут
работать параллельно, не тратя время на ожидание друг друга. При
@@ -486,7 +487,7 @@
promise that a locking system will somehow prevent conflicts;
in practice, locking seems to inhibit productivity more than
anything else.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Наконец, все сходится к такому критическому фактору, как
взаимодействие пользователей. При плохом взаимопонимании увеличивается
количество как синтаксических, так и семантических конфликтов.
@@ -499,14 +500,14 @@
<sidebar id="svn.basic.vsn-models.copy-merge.sb-1">
<!-- @ENGLISH {{{
<title>When Locking is Necessary</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Когда блокирование необходимо</title>
<!-- @ENGLISH {{{
<para>While the lock-modify-unlock model is considered
generally harmful to collaboration, there are still times
when locking is appropriate.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Несмотря на то, что модель
блокирование-изменение-разблокирование названа, вцелом, губительной
для командной работы, все-таки есть моменты когда блокирование
@@ -523,7 +524,7 @@
turns when changing the file. Without serialized access,
somebody ends up wasting time on changes that are ultimately
discarded.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Модель копирование-изменение-слияние основывается на
предположении о том, что файлы контекстно объединяемы: это так
если большинство файлов в хранилище — основаные на строках
@@ -540,7 +541,7 @@
copy-modify-merge systems, they both recognize the need to
lock an occasional file and provide mechanisms for this.
See <xref linkend="svn.advanced.locking"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Так как CVS и Subversion в первую очередь системы типа
копирование-изменение-слияние в них обоих признается необходимость
блокирования определенных файлов и предлагаются механизмы для
@@ -560,14 +561,14 @@
<sect1 id="svn.basic.in-action">
<!-- @ENGLISH {{{
<title>Subversion in Action</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Subversion в действии</title>
<!-- @ENGLISH {{{
<para>It's time to move from the abstract to the concrete. In
this section, we'll show real examples of Subversion being
used.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Время перейти от абстракций к конкретике. В этом разделе мы покажем
реальные примеры использования Subversion.</para>
@@ -575,14 +576,14 @@
<sect2 id="svn.basic.in-action.wc">
<!-- @ENGLISH {{{
<title>Working Copies</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Рабочие копии</title>
<!-- @ENGLISH {{{
<para>You've already read about working copies; now we'll
demonstrate how the Subversion client creates and uses
them.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вы уже читали о рабочих копиях; теперь мы покажем как
Subversion-клиент создает и использует их.</para>
@@ -595,7 +596,7 @@
Subversion will never incorporate other people's changes, nor
make your own changes available to others, until you
explicitly tell it to do so.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Рабочая копия Subversion представляет собой обычное дерево
директорий на вашем компьютере, содержащее набор файлов. Вы можете
по-своему усмотрению редактировать эти файлы и, если это исходные коды,
@@ -614,7 +615,7 @@
own changes, Subversion provides you with commands to merge
those changes into your working directory (by reading from the
repository).</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>После того, как вы внесли изменения в файлы вашей рабочей копии и
убедились в том, что они корректно работают, Subversion предлагает вам
команды <quote>публикации</quote> (записи в хранилище) ваших
@@ -634,7 +635,7 @@
directory help Subversion recognize which files contain
unpublished changes, and which files are out-of-date with
respect to others' work.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Рабочая копия содержит несколько дополнительных файлов, созданных
и обслуживаемых Subversion, которые помогают ей при выполнении этих
команд. В частности, каждая директория в вашей рабочей копии содержит
@@ -650,7 +651,7 @@
subdirectory in the repository's filesystem tree. In this
arrangement, a user's working copy will usually correspond to
a particular subtree of the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Как правило, хранилище Subversion содержит файлы (или исходный
код) нескольких проектов; обычно каждый проект представляется в виде
поддиректории файловой системы хранилища. При таком подходе,
@@ -663,7 +664,7 @@
<literal>calc</literal>. Each project lives in its own
top-level subdirectory, as shown in <xref
linkend="svn.basic.in-action.wc.dia-1"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Например, предположим, что у вас есть хранилище, содержащий два
программных проекта <literal>paint</literal> и
<literal>calc</literal>. Каждый проект располагается в своей
@@ -673,7 +674,7 @@
<figure id="svn.basic.in-action.wc.dia-1">
<!-- @ENGLISH {{{
<title>The repository's filesystem</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Файловая система хранилища</title>
<graphic fileref="images/ch02dia6.png"/>
</figure>
@@ -686,7 +687,7 @@
creates a private copy of the project for you.) For example,
if you check out <filename>/calc</filename>, you will get a
working copy like this:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для того чтобы сделать рабочую копию, вам нужно
<firstterm>заполучить</firstterm> какую-либо из поддиректорий
хранилища. (Возможно, термин <firstterm>заполучить</firstterm>
@@ -715,7 +716,7 @@
entry—<filename>.svn</filename>—which holds the
extra information needed by Subversion, as mentioned
earlier.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Буквы А говорят о том, что Subversion добавляет этот элемент в
вашу рабочую копию. Теперь у вас есть личная копия директории
<filename>/calc</filename> хранилища, с одним небольшим добавлением
@@ -725,7 +726,7 @@
<sidebar id="svn.basic.in-action.wc.sb-1">
<!-- @ENGLISH {{{
<title>Repository URLs</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>URL хранилища</title>
<!-- @ENGLISH {{{
@@ -734,7 +735,7 @@
network protocols. A repository location, however, is
always a URL. <xref linkend="svn.basic.in-action.wc.tbl-1"/> describes how
different URL schemas map to the available access methods.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Получить доступ к хранилищу Subversion можно различными
способами — на локальном диске или через ряд сетевых протоколов.
Местоположение хранилища всегда определяется при помощи URL.
@@ -745,7 +746,7 @@
<table id="svn.basic.in-action.wc.tbl-1">
<!-- @ENGLISH {{{
<title>Repository Access URLs</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>URL для доступа к хранилищу.</title>
<tgroup cols="2">
<thead>
@@ -753,7 +754,7 @@
<!-- @ENGLISH {{{
<entry>Schema</entry>
<entry>Access Method</entry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<entry>Схема</entry>
<entry>Метод доступа</entry>
</row>
@@ -763,7 +764,7 @@
<entry><literal>file:///</literal></entry>
<!-- @ENGLISH {{{
<entry>direct repository access (on local disk)</entry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<entry>прямой доступ к хранилищу
(на локальном диске)</entry>
</row>
@@ -772,7 +773,7 @@
<!-- @ENGLISH {{{
<entry>access via WebDAV protocol to Subversion-aware
Apache server</entry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<entry>доступ к серверу Apache через протокол WebDAV</entry>
</row>
<row>
@@ -780,7 +781,7 @@
<!-- @ENGLISH {{{
<entry>same as <literal>http://</literal>, but with
SSL encryption.</entry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<entry>тоже что и <literal>http://</literal> но с
SSL-шифрованием</entry>
</row>
@@ -789,7 +790,7 @@
<!-- @ENGLISH {{{
<entry>access via custom protocol to an
<literal>svnserve</literal> server</entry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<entry>доступ через собственный протокол к серверу
<literal>svnserve</literal></entry>
</row>
@@ -798,7 +799,7 @@
<!-- @ENGLISH {{{
<entry>same as <literal>svn://</literal>, but through
an SSH tunnel.</entry>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<entry>тоже что и <literal>svn://</literal>, но через
SSH-соединение</entry>
</row>
@@ -809,7 +810,7 @@
<!-- @ENGLISH {{{
<para>For more information on how Subversion parses URLs, see
<xref linkend="svn.advanced.reposurls"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Подробнее о том, как Subversion обрабатывает URL, см. в
<xref linkend="svn.advanced.reposurls"/>.</para>
@@ -824,7 +825,7 @@
The act of publishing your changes is more commonly known as
<firstterm>committing</firstterm> (or <firstterm>checking
in</firstterm>) changes to the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Предположим вы внесли изменения в <filename>button.c</filename>.
Так как директория <filename>.svn</filename> помнит дату изменения
файла и его оригинальное содержимое, Subversion может сказать о том,
@@ -836,7 +837,7 @@
<!-- @ENGLISH {{{
<para>To publish your changes to others, you can use
Subversion's <command>commit</command> command:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для того, что бы опубликовать ваши изменения вы можете
воспользоваться командой <command>commit</command>:</para>
@@ -852,7 +853,7 @@
been committed to the repository; if another user checks out a
working copy of <filename>/calc</filename>, they will see
your changes in the latest version of the file.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Теперь ваши изменения в <filename>button.c</filename>
зафиксированы в хранилище; если другой пользователь
создаст рабочую копию <filename>/calc</filename> он увидит
@@ -865,7 +866,7 @@
<filename>button.c</filename>, Sally's working copy is left
unchanged; Subversion only modifies working copies at the
user's request.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Предположим у вас есть со-разработчик, Салли, которая
создала рабочую копию <filename>/calc</filename> одновременно
с вами. Когда вы зафиксировали изменения в
@@ -880,7 +881,7 @@
This will incorporate your changes into her working copy, as
well as any others that have been committed since she checked
it out.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для приведения рабочей копии в актуальное состояние, Салли
может попросить Subversion <firstterm>обновить</firstterm> ее
рабочую копию, используя команду Subversion
@@ -907,7 +908,7 @@
in the <filename>.svn</filename> directory, and further
information in the repository, to decide which files need to
be brought up to date.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вывод команды <command>svn update</command> говорит, что
Subversion обновила содержимое <filename>button.c</filename>.
Обратите внимание, что Салли не нужно указывать какой файл обновить;
@@ -924,7 +925,7 @@
<sect2 id="svn.basic.in-action.revs">
<!-- @ENGLISH {{{
<title>Revisions</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Правки</title>
<!-- @ENGLISH {{{
@@ -934,7 +935,7 @@
files' contents, create, delete, rename and copy files and
directories, and then commit the complete set of changes as a
unit.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Операция <command>svn commit</command> может опубликовать
изменения любого количества файлов и директорий за одну
атомарную транзакцию. В своей рабочей копии вы можете менять
@@ -948,7 +949,7 @@
none of them take place. Subversion tries to retain this
atomicity in the face of program crashes, system crashes,
network problems, and other users' actions.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В хранилище каждая фиксация отражается как атомарная
транзакция: либо изменения вносятся полностью, либо не вносятся
вовсе. Subversion ведет себя так, принимая в расчет возможные
@@ -963,7 +964,7 @@
previous revision. The initial revision of a freshly created
repository is numbered zero, and consists of nothing but an
empty root directory.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Каждый раз когда хранилище получает фиксацию, создается
новое состояние файловой системы, называемое
<firstterm>правка</firstterm>. Каждая правка получает
@@ -979,7 +980,7 @@
revision number has a filesystem tree hanging below it, and
each tree is a <quote>snapshot</quote> of the way the
repository looked after a commit.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><xref linkend="svn.basic.in-action.revs.dia-1"/> отлично
иллюстрирует хранилище. Представьте массив номеров правок,
начинающийся с 0, распространяясь слева на право. Каждый номер
@@ -990,7 +991,7 @@
<figure id="svn.basic.in-action.revs.dia-1">
<!-- @ENGLISH {{{
<title>The repository</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Хранилище</title>
<graphic fileref="images/ch02dia7.png"/>
</figure>
@@ -998,7 +999,7 @@
<sidebar>
<!-- @ENGLISH {{{
<title>Global Revision Numbers</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Сквозные номера правок</title>
<!-- @ENGLISH {{{
@@ -1016,7 +1017,7 @@
<emphasis>not</emphasis> necessarily differ! Because CVS
uses per-file revisions numbers, CVS users might want to see
<xref linkend="svn.forcvs"/> for more details.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В отличие от многих других систем контроля версий номера правок
в Subversion относятся <emphasis>ко всем</emphasis>, а не только к
отдельно взятым файлам. Каждый номер правки соответствует целому
@@ -1038,7 +1039,7 @@
contain files from several different revisions. For example,
suppose you check out a working copy from a repository whose
most recent revision is 4:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Важно помнить то, что рабочие копии не всегда соответствуют
какой-то одной правке в хранилище; они могут содержать файлы из
различных правок. Например, вы получили рабочую копию из хранилища,
@@ -1057,7 +1058,7 @@
change. Assuming no other commits have taken place, your
commit will create revision 5 of the repository, and your
working copy will now look like this:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>На данный момент рабочая директория полностью соответствует
правке 4 в хранилище. Допустим, что вы внесли изменения в
<filename>button.c</filename>, и зафиксировали эти изменения.
@@ -1076,7 +1077,7 @@
<filename>integer.c</filename>, creating revision 6. If you
use <command>svn update</command> to bring your working copy
up to date, then it will look like this:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Предположим, что после этого Салли фиксирует изменения <filename>
integer.c</filename>, создавая правку 6. Если вы воспользуетесь
<command>svn update</command> для приведения своей рабочей копии
@@ -1098,7 +1099,7 @@
indicate that it is still current. So, after you do a clean
update at the top of your working copy, it will generally
correspond to exactly one revision in the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Изменения, внесенные Сэлли в <filename>integer.c</filename> будут
отражены в вашей рабочей копии, и ваши изменения в
<filename>button.c</filename> также будут присутствовать. В этом
@@ -1117,14 +1118,14 @@
<sect2 id="svn.basic.in-action.track-repos">
<!-- @ENGLISH {{{
<title>How Working Copies Track the Repository</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Как рабочие копии отслеживают хранилище</title>
<!-- @ENGLISH {{{
<para>For each file in a working directory, Subversion records
two essential pieces of information in the
<filename>.svn/</filename> administrative area:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для каждого файла рабочей директории, в административной области
<filename>.svn/</filename>, Subversion записывает информацию о двух
важнейших свойствах:</para>
@@ -1136,7 +1137,7 @@
<para>what revision your working file is based on (this is
called the file's <firstterm>working
revision</firstterm>), and</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>на какой правке основан ваш рабочий файл (это
называется <firstterm>рабочая правка</firstterm> файла),
и</para>
@@ -1146,7 +1147,7 @@
<!-- @ENGLISH {{{
<para>a timestamp recording when the local copy was last
updated by the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>временной метке, определяющей, когда рабочая копия последний
раз обновлялась из хранилища.</para>
</listitem>
@@ -1156,7 +1157,7 @@
<para>Given this information, by talking to the repository,
Subversion can tell which of the following four states a
working file is in:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Получая эту информацию при соединении с хранилищем Subversion
может сказать в каком из следующих четырех состояний находится рабочий
файл:</para>
@@ -1165,7 +1166,7 @@
<varlistentry>
<!-- @ENGLISH {{{
<term>Unchanged, and current</term>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<term>Не изменялся и не устарел</term>
<listitem>
@@ -1176,7 +1177,7 @@
commit</command> of the file will do nothing, and an
<command>svn update</command> of the file will do
nothing.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл не изменялся в рабочей директории и в хранилище не
фиксировались изменения этого файла со времени создания его
рабочей правки. Команда <command>svn commit</command> не
@@ -1188,7 +1189,7 @@
<varlistentry>
<!-- @ENGLISH {{{
<term>Locally changed, and current</term>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<term>Изменялся локально и не устарел</term>
<listitem>
@@ -1200,7 +1201,7 @@
thus an <command>svn commit</command> of the file will
succeed in publishing your changes, and an <command>svn
update</command> of the file will do nothing.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл был изменен в рабочей директории а в хранилище не
фиксировались изменения этого файла после правки, на которой он
основан. Есть локальные изменения, которые не были зафиксированы
@@ -1213,7 +1214,7 @@
<varlistentry>
<!-- @ENGLISH {{{
<term>Unchanged, and out-of-date</term>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<term>Не изменялся и устарел</term>
<listitem>
@@ -1225,7 +1226,7 @@
commit</command> of the file will do nothing, and an
<command>svn update</command> of the file will fold the
latest changes into your working copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В рабочей директории файл не изменялся но был изменен в
хранилище. Необходимо выполнить обновление файла для того,
чтобы он соответствовал опубликованной правке. Команда <command>
@@ -1238,7 +1239,7 @@
<varlistentry>
<!-- @ENGLISH {{{
<term>Locally changed, and out-of-date</term>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<term>Изменялся локально и устарел</term>
<listitem>
@@ -1252,7 +1253,7 @@
changes. If Subversion can't complete the merge in a
plausible way automatically, it leaves it to the user to
resolve the conflict.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл был изменен как в рабочей директории, так и в
хранилище. <command>svn update</command> потерпит неудачу с
ошибкой <quote>out-of-date</quote>. Файл необходимо сначала
@@ -1270,7 +1271,7 @@
<command>svn status</command> command will show you the state
of any item in your working copy. For more information on
that command, see <xref linkend="svn.tour.cycle.examine.status" />.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Совсем не обязательно заниматься подобным гаданием, для того, что
бы узнать состояние любого элемента в рабочей в вашей рабочей копии
воспользуйтесь командой <command>svn status</command>. За более
@@ -1284,7 +1285,7 @@
<sect2 id="svn.basic.in-action.mixedrevs">
<!-- @ENGLISH {{{
<title>The Limitations of Mixed Revisions</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Ограничения смешанных правок</title>
<!-- @ENGLISH {{{
@@ -1292,7 +1293,7 @@
as possible. One special kind of flexibility is the ability
to have a working copy containing mixed revision
numbers.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion пытается быть гибкой настолько, насколько это возможно.
В частности, существует возможность иметь рабочую копию, содержащую
правки смешанных номеров.</para>
@@ -1308,7 +1309,7 @@
<command>svn update</command>. Why would someone
<emphasis>deliberately</emphasis> want a mixture of working
revisions?</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>По началу может быть непонятным, почему это является
дополнительной возможностью, а не правилом. После выполнения фиксации
только что зафиксированные файлы и директории будут иметь более новую
@@ -1327,7 +1328,7 @@
contained in a subdirectory, or perhaps you'd like to examine
a number of previous versions of a file in the context of the
latest tree.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Допустим, что вы имеете комплексный проект, вы можете обнаружить,
что иногда выгодно принудительно <quote>возвращать</quote> части
вашей рабочей копии к более ранним правкам; вы научитесь этому в
@@ -1339,7 +1340,7 @@
<!-- @ENGLISH {{{
<para>However you make use of mixed-revisions in your working
copy, there are limitations to this flexibility.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Какими бы небыли причины использования смешанных правок в рабочей
копии, у этой возможности существуют ограничения.</para>
@@ -1349,7 +1350,7 @@
the item exists in the repository, your attempt to delete will
be rejected, to prevent you from accidentally
destroying changes you've not yet seen.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Во-первых, вы не можете отправить в хранилище изменения файла
или директории, которые не соответствуют текущему состоянию
хранилища и приведут к потере информации. Если хранилище содержит
@@ -1364,7 +1365,7 @@
and properties, and thus committing a property change to an
out-of-date directory may destroy properties you've not yet
seen.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Во-вторых, вы не можете отправить в хранилище измененные
метаданные директории, если она не находится полностью в актуальном
состоянии. С присоединением <quote>свойств</quote> к элементам вы
@@ -1383,13 +1384,13 @@
<sect1 id="svn.basic.summary">
<!-- @ENGLISH {{{
<title>Summary</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Подводя итоги</title>
<!-- @ENGLISH {{{
<para>We've covered a number of fundamental Subversion concepts in
this chapter:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В этой главе мы рассмотрели ряд фундаментальных вещей о
Subversion:</para>
@@ -1399,7 +1400,7 @@
<para>We've introduced the notions of the central repository,
the client working copy, and the array of repository
revision trees.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Мы ввели такие понятия, как центральное хранилище, рабочая
копия клиента и массив правок хранилища.</para>
</listitem>
@@ -1410,7 +1411,7 @@
can use Subversion to publish and receive changes from one
another, using the <quote>copy-modify-merge</quote>
model.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Мы рассмотрели на нескольких простых примерах, как при помощи
Subversion два со-разработчика могут публиковать и получать
изменения друг друга, используя модель
@@ -1421,7 +1422,7 @@
<!-- @ENGLISH {{{
<para>We've talked a bit about the way Subversion tracks and
manages information in a working copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Мы немного поговорили о том, как Subversion отслеживает и
управляет информацией в рабочей копии.</para>
</listitem>
@@ -1433,7 +1434,7 @@
works in the most general sense. Armed with this knowledge, you
should now be ready to jump into the next chapter, which is a
detailed tour of Subversion's commands and features.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>На данный момент у вас должно быть хорошее представление о том, как
вообще работает Subversion. Теперь, вооруженные этими знаниями, вы
готовы перейти к следующей главе, которая представляет собой подробный
Modified: trunk/src/ru/book/ch03.xml
==============================================================================
--- trunk/src/ru/book/ch03.xml (original)
+++ trunk/src/ru/book/ch03.xml Sat Jul 23 08:39:53 2005
@@ -3,8 +3,11 @@
<!-- @ENGLISH {{{
<title>Guided Tour</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Экскурсия по Subversion</title>
+ <chapterinfo>
+ <edition>1530</edition>
+ </chapterinfo>
<!-- See also svn.preface.organization -->
<simplesect>
@@ -18,7 +21,7 @@
changes. You'll also see how to bring changes made by others
into your working copy, examine them, and work through any
conflicts that might arise.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Теперь перейдем к более тесному использованию Subversion.
Ко времени когда вы достигнете конца этой главы, вы сможете
выполнить практически все задачи, возникающие при использовании
@@ -36,7 +39,7 @@
<xref linkend="svn.basic"/> and are familiar with the general
model of Subversion. For a complete reference of all commands,
see <xref linkend="svn.ref"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Обратите внимание на то, что эта глава не ставит цели быть
всеобъемлющим списком всех команд Subversion — скорее это
описательное введение в наиболее вероятные задачи с которыми вы можете
@@ -53,7 +56,7 @@
<sect1 id="svn.tour.help">
<!-- @ENGLISH {{{
<title>Help!</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Читайте справку!</title>
<!-- @ENGLISH {{{
@@ -63,7 +66,7 @@
self-documenting—at any time, a quick <command>svn help
<subcommand></command> will describe the syntax, switches,
and behavior of the <command>subcommand</command>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Перед тем как продолжить, приведем самую главную из всех команду
при использовании Subversion: <command>svn help</command>.
Клиент для командной строки в Subversion является самодокуметируемым -
@@ -79,7 +82,7 @@
<sect1 id="svn.tour.import">
<!-- @ENGLISH {{{
<title>Import</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Импорт</title>
<!-- @ENGLISH {{{
@@ -89,7 +92,7 @@
server, it's not something that happens very often. For a
detailed description of import, see <xref
linkend="svn.tour.other.import"/> later in this chapter.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для импортированния нового проекта в Subversion-хранилище
вы используете <command>svn import</command>. В то время как
вероятно, это первое, что вы делаете при настройке Subversion-сервера
@@ -104,7 +107,7 @@
<sect1 id="svn.tour.revs">
<!-- @ENGLISH {{{
<title>Revisions: Numbers, Keywords, and Dates, Oh My!</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Правки: Номера, Ключевые слова и Даты, Oh My!</title>
<!-- @ENGLISH {{{
@@ -114,7 +117,7 @@
<quote>snapshot</quote> of the repository at a particular moment
in time. As you continue to commit and grow your repository,
you need a mechanism for identifying these snapshots.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Перед тем как продолжить, вам нужно немного узнать о том, как
идентифицировать отдельную правку в хранилище. Как вы узнали в
<xref linkend="svn.basic.in-action.revs"/> правка представляет собой
@@ -130,7 +133,7 @@
(<command>svn –-revision REV1:REV2</command>). And Subversion
lets you refer to these revisions by number, keyword, or
date.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для указания этих правок используется ключ
<option>--revision</option> (<option>-r</option>) плюс нужная
правка либо можно указать диапазон разделяя две правки двоеточием
@@ -143,7 +146,7 @@
<sect2 id="svn.tour.revs.numbers">
<!-- @ENGLISH {{{
<title>Revision Numbers</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Номера правок</title>
<!-- @ENGLISH {{{
@@ -152,7 +155,7 @@
revision number by one. After your commit completes, the
Subversion client informs you of the new revision
number:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Когда вы создаете новое хранилище Subversion, свою жизнь оно
начинает с правки ноль и каждая последующая фиксация увеличивает
номер правки на единицу. После завершения фиксации, Subversion
@@ -170,7 +173,7 @@
revision (we'll see how and why we might want to do that later
in this chapter), you can refer to it as
<quote>3</quote>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В будущем, в любой момент если вам нужно будет сослаться
на эту правку (как и почему может возникнуть такая необходимость
будет видна дальше по тексту) вы можете сослаться на нее как на
@@ -183,7 +186,7 @@
<sect2 id="svn.tour.revs.keywords">
<!-- @ENGLISH {{{
<title>Revision Keywords</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Ключевые слова правок</title>
<!-- @ENGLISH {{{
@@ -192,7 +195,7 @@
can be used instead of integer arguments to the
<option>–-revision</option> switch, and are resolved into
specific revision numbers by Subversion:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion клиент понимает определенное количество
<firstterm>ключевых слов правок</firstterm>. Эти ключевые слова
моогут буть использованы в место цифровых аргументов в параметре
@@ -213,7 +216,7 @@
copy</firstterm> or <firstterm>text-base</firstterm> version
of your file, and it's always an exact byte-for-byte copy of
the file as it exists in the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Каждая директория рабочей копии содержит административную
поддиректорию <filename>.svn</filename>. Для каждого файла в
директории, Subversion сохраняет копию этого файла в
@@ -235,7 +238,7 @@
<listitem>
<!-- @ENGLISH {{{
<para>The latest revision in the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Последняя правка хранилища</para>
</listitem>
</varlistentry>
@@ -246,7 +249,7 @@
<!-- @ENGLISH {{{
<para>The <quote>pristine</quote> revision of an item in a
working copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><quote>Исходная</quote> правка элемента в рабочей
копии.</para>
</listitem>
@@ -258,7 +261,7 @@
<!-- @ENGLISH {{{
<para>The last revision in which an item changed before (or
at) <literal>BASE</literal>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Последняя правка в которой элемент изменялся в диапазоне до
(или включая) <literal>BASE</literal>.</para>
</listitem>
@@ -271,7 +274,7 @@
<para>The revision just <emphasis>before</emphasis> the last
revision in which an item changed. (Technically,
<literal>COMMITTED</literal> - 1.)</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Ревизия, <emphasis>предшествующая</emphasis> последней
ревизии, в которой элемент менялся. (Технически, <literal>
COMMITTED</literal> - 1.)</para>
@@ -285,7 +288,7 @@
<para><literal>PREV</literal>, <literal>BASE</literal>, and
<literal>COMMITTED</literal> can be used to refer to local
paths, but not to URLs.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><literal>PREV</literal>, <literal>BASE</literal> и
<literal>COMMITTED</literal> могут использоваться при обращении по
локальным путям, но не по URL.</para>
@@ -295,7 +298,7 @@
<para>Here are some examples of revision keywords in action.
Don't worry if the commands don't make sense yet; we'll be
explaining these commands as we go through the chapter:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вот несколько примеров использования ключевых слов правок.
Не волнуйтесь, если смысл команд пока не понятен; по мере дальнейшего
продвижения мы объясним эти команды:</para>
@@ -304,20 +307,20 @@
$ svn diff --revision PREV:COMMITTED foo.c
<!-- @ENGLISH {{{
# shows the last change committed to foo.c
-@ ENGLISH }}} -->
+ at ENGLISH }}} -->
# показать последнее изменение зафиксированное для foo.c
$ svn log --revision HEAD
<!-- @ENGLISH {{{
# shows log message for the latest repository commit
-@ ENGLISH }}} -->
+ at ENGLISH }}} -->
# показать лог для последней фиксации хранилища
$ svn diff --revision HEAD
<!-- @ENGLISH {{{
# compares your working file (with local mods) to the latest version
# in the repository.
-@ ENGLISH }}} -->
+ at ENGLISH }}} -->
# сравнение вашего рабочего файла (с учетом локальных изменений)
# с последней правкой в хранилище
@@ -325,21 +328,21 @@
<!-- @ENGLISH {{{
# compares your <quote>pristine</quote> foo.c (no local mods) with the
# latest version in the repository
-@ ENGLISH }}} -->
+ at ENGLISH }}} -->
# сравнение вашего <quote>исходного</quote> foo.c (без учета локальных
# изменений) с последней версией в хранилище
$ svn log --revision BASE:HEAD
<!-- @ENGLISH {{{
# shows all commit logs since you last updated
-@ ENGLISH }}} -->
+ at ENGLISH }}} -->
# показ всех логов фиксаций со времени вашего последнего обновления
$ svn update --revision PREV foo.c
<!-- @ENGLISH {{{
# rewinds the last change on foo.c.
# (foo.c's working revision is decreased.)
-@ ENGLISH }}} -->
+ at ENGLISH }}} -->
# откат последних изменений в foo.c.
# (рабочая ревизия foo.c понижается.)
</screen>
@@ -349,7 +352,7 @@
helpful) operations without having to look up specific
revision numbers or remember the exact revision of your
working copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Эти ключевые слова позволят вам выполнять многие часто
используемые (и полезные) операции без необходимости обращаться к
конкретным номерам ревизий или точно помнить ревизию своей рабочей
@@ -362,7 +365,7 @@
<sect2 id="svn.tour.revs.dates">
<!-- @ENGLISH {{{
<title>Revision Dates</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Даты правок</title>
<!-- @ENGLISH {{{
@@ -371,7 +374,7 @@
inside curly braces <quote>{}</quote>. You can even access
a range of changes in the repository using both dates and
revisions together!</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Везде, где вы указываете номер правки или ключевое слово,
вы так же можете использать и дату, указав ее в фигурных скобках
<quote>{}</quote>. Вы даже можете получить доступ к диапазону
@@ -382,7 +385,7 @@
<para>Here are examples of the date formats that Subversion
accepts. Remember to use quotes around any date that contains
spaces.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вот примеры форматов, используемых для указания даты,
которые принимает Subversion. Не забывайте использовать кавычки
при написании даты содержащей пробелы.</para>
@@ -406,7 +409,7 @@
<para>When you specify a date as a revision, Subversion finds
the most recent revision of the repository as of that
date:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Когда вы указываете в качестве правки дату, Subversion
найдет правку наиболее соответствующую запрошенной дате:</para>
@@ -420,7 +423,7 @@
<sidebar>
<!-- @ENGLISH {{{
<title>Is Subversion a Day Early?</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Is Subversion a Day Early?</title>
<!-- @ENGLISH {{{
@@ -436,7 +439,7 @@
<literal>2002-11-27</literal>, Subversion assumes a time of
00:00:00, so looking for the most recent revision won't
return anything on the day of the 27th.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Указав при обращении к правке только дату, без указания
времени (например, <literal>2002-11-27</literal>), наверное,
вы подумаете, что Subversion выдаст вам последнюю правку за 27
@@ -453,7 +456,7 @@
either specify the 27th with the time (<literal>{"2002-11-27
23:59"}</literal>), or just specify the next day
(<literal>{2002-11-28}</literal>).</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вам необходимо учесть при поиске 27 число вы можете либо
указать 27 число с временной меткой (<literal>{"2002-11-27
23:59"}</literal>) либо просто использовать в запросе следующий
@@ -464,7 +467,7 @@
<!-- @ENGLISH {{{
<para>You can also use a range of dates. Subversion will find
all revisions between both dates, inclusive:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Кроме того, вы можете использовать диапазоны дат. Subversion
найдет все правки между обеими датами включительно:</para>
@@ -475,7 +478,7 @@
<!-- @ENGLISH {{{
<para>As we pointed out, you can also mix dates and revisions:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Как мы уже говорили, вы можете использовать даты и номера
ревизий одновременно:</para>
@@ -492,7 +495,7 @@
complete falsifications of true chronology, or even removed
altogether. This will wreak havoc on the internal
date-to-revision conversion that Subversion performs.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Пользователи должны осознавать тонкость, которая может стать
камнем преткновения при работе с Subversion. Так как временная метка
правки сохраняется как свойство правки — как не отслеживаемое,
@@ -511,7 +514,7 @@
<sect1 id="svn.tour.initial">
<!-- @ENGLISH {{{
<title>Initial Checkout</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Создание рабочей копии</title>
<!-- @ENGLISH {{{
@@ -521,7 +524,7 @@
local machine. This copy contains the <literal>HEAD</literal>
(latest revision) of the Subversion repository that you specify
on the command line:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Как правило использование хранилища Subversion начинается с
<firstterm>создания рабочей копии</firstterm> вашего проекта.
При создании рабочей копии на вашей локальной машине создается копия
@@ -543,7 +546,7 @@
<sidebar>
<!-- @ENGLISH {{{
<title>Repository Layout</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Структура хранилища</title>
<!-- @ENGLISH {{{
@@ -551,7 +554,7 @@
about in the above URL, it's part of the way we recommend
you lay out your Subversion repository which we'll talk a lot
more about in <xref linkend="svn.branchmerge"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вас удивляет почему в приведенном выше URL встречается
<literal>trunk</literal> — это часть рекомендуемой нами
структуры хранилища Subversion, о ней мы поговорим более подробно в
@@ -564,7 +567,7 @@
you can just as easily check out any deep subdirectory of a
repository by specifying the subdirectory in the checkout
URL:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Хотя в приведенном примере рабочая копия создается на
основе корневой директории вы можете легко создать рабочую копию на
основе поддиректории любой степени вложенности, указав в URL при
@@ -590,7 +593,7 @@
directories on your system. You can edit and change them, move
them around, you can even delete the entire working copy and
forget about it.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Так как Subversion использует модель
<quote>копирование-изменение-слияние</quote> вместо модели
<quote>блокирование-изменение-разблокирование</quote> (см.
@@ -611,7 +614,7 @@
move</command> instead of the copy and move commands
provided by your operating system. We'll talk more about
them later in this chapter.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Не смотря на то что рабочая копия выглядит <quote>как и любой
другой набор файлов на вашей системе</quote> вы должны поставить в
известность Subversion если вы будете что либо реорганизовывать в
@@ -626,7 +629,7 @@
<para>Unless you're ready to commit a new file or directory, or
changes to existing ones, there's no need to further notify the
Subversion server that you've done anything.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Исключение составляют случаи когда вы готовы зафиксировать новый
файл или директорию, или внести изменения в один из существующих, для
этого не нужно дополнительно извещать Subversion-сервер о своих
@@ -635,7 +638,7 @@
<sidebar>
<!-- @ENGLISH {{{
<title>What's with the <filename>.svn</filename> directory?</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>А что на счет директории <filename>.svn</filename>?</title>
<!-- @ENGLISH {{{
@@ -646,7 +649,7 @@
an important directory. Whatever you do, don't delete or
change anything in the administrative area! Subversion
depends on it to manage your working copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Каждая директория в рабочей копии содержит административную
область, поддиректорию с названием <filename>.svn</filename>.
Обычно, команды используемые для вывода листинга директории не
@@ -662,7 +665,7 @@
URL of the repository as the only argument, you can also specify
a directory after your repository URL. This places your working
copy in the new directory that you name. For example:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Не смотря на то, что вы конечно можете создать рабочую копию
указав только один аргумент в виде URL хранилища, вы можете
после URL хранилища указать директорию. Тогда ваша рабочая копия
@@ -684,7 +687,7 @@
<para>That will place your working copy in a directory named
<literal>subv</literal> instead of a directory named
<literal>trunk</literal> as we did previously.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Эта команда поместит рабочую копию в директорию с именем
<literal>subv</literal>, вместо директории <literal>trunk</literal>
как мы сделали раньше.</para>
@@ -697,7 +700,7 @@
<sect1 id="svn.tour.cycle">
<!-- @ENGLISH {{{
<title>Basic Work Cycle</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Простейший рабочий цикл</title>
<!-- @ENGLISH {{{
@@ -705,7 +708,7 @@
a day-to-day basis, odds are that you will only use a few of them. In
this section we'll run through the most common things that you might
find yourself doing with Subversion in the course of a day's work.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion имеет множество возможностей, опций и украшательств, но
на постоянной основе используются только некоторые из них. В этом
разделе мы пройдемся по наиболее часто выполняемым в течении рабочего
@@ -713,14 +716,14 @@
<!-- @ENGLISH {{{
<para>The typical work cycle looks like this:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Типичный рабочий цикл выглядит примерно так:</para>
<itemizedlist>
<listitem>
<!-- @ENGLISH {{{
<para>Update your working copy</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Обновление рабочей копии</para>
<itemizedlist>
<listitem>
@@ -733,7 +736,7 @@
<listitem>
<!-- @ENGLISH {{{
<para>Make changes</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Внесение изменений</para>
<itemizedlist>
<listitem>
@@ -754,7 +757,7 @@
<listitem>
<!-- @ENGLISH {{{
<para>Examine your changes</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Анализ изменений</para>
<itemizedlist>
<listitem>
@@ -772,7 +775,7 @@
<listitem>
<!-- @ENGLISH {{{
<para>Merge others' changes into your working copy</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Объединение изменений выполненных другими с вашей рабочей
копией</para>
<itemizedlist>
@@ -788,7 +791,7 @@
<listitem>
<!-- @ENGLISH {{{
<para>Commit your changes</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Фиксация изменений</para>
<itemizedlist>
<listitem>
@@ -802,7 +805,7 @@
<sect2 id="svn.tour.cycle.update">
<!-- @ENGLISH {{{
<title>Update Your Working Copy</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Обновление рабочей копии</title>
<!-- @ENGLISH {{{
@@ -811,7 +814,7 @@
your last update by other developers on the project. Use
<command>svn update</command> to bring your working copy into
sync with the latest revision in the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>При командной работе над проектом обновление рабочей копии
необходимо для получения любых изменений внесенных с момента
вашего последнего обновления другими разработчиками проекта.
@@ -830,7 +833,7 @@
both <filename>foo.c</filename> and <filename>bar.c</filename>
since the last time you updated, and Subversion has updated
your working copy to include those changes.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В данном случае, кто-то другой зафиксировал изменения в файлах
<filename>foo.c</filename> и <filename>bar.c</filename> после
вашего последнего обновления, и Subversion обновила вашу рабочую копию
@@ -842,7 +845,7 @@
copy, a letter code is displayed next to each item to let you
know what actions Subversion performed to bring your working
copy up-to-date:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Рассмотрим выводимую <command>svn update</command> информацию
чуть подробнее. Когда сервер отправляет изменения в вашу рабочую копию
для каждого элемента выводится буквенный код, определяющий, какое
@@ -858,7 +861,7 @@
<para>File <filename>foo</filename> was
<computeroutput>U</computeroutput>pdated (received changes
from the server).</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл <filename>foo</filename> был
<computeroutput>U</computeroutput>pdated — обновлен
(получил изменения с сервера).</para>
@@ -872,7 +875,7 @@
<para>File or directory <filename>foo</filename> was
<computeroutput>A</computeroutput>dded to your working
copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл или директория <filename>foo</filename> были
<computeroutput>A</computeroutput>dded — добавлены в
рабочую копию.</para>
@@ -886,7 +889,7 @@
<para>File or directory <filename>foo</filename> was
<computeroutput>D</computeroutput>eleted from your working
copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл или директория <filename>foo</filename> были
<computeroutput>D</computeroutput>eleted — удалены
из рабочей копии.</para>
@@ -903,7 +906,7 @@
new item with the same name was added. While they may have
the same name, the repository considers them to be distinct
objects with distinct histories.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл или директория <filename>foo</filename> была
<computeroutput>R</computeroutput>eplaced — заменена
в рабочей копии; это значит, что <filename>foo</filename>
@@ -925,7 +928,7 @@
modifications, so Subversion has successfully
mer<computeroutput>G</computeroutput>ed the repository's
changes into the file without a problem.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл <filename>foo</filename> получил новые изменения
из хранилища, однако ваша локальная копия содержит ваши
изменения. Либо изменения не пересекаются либо они точно такие
@@ -945,7 +948,7 @@
your own changes to the file. No need to panic, though.
This overlap needs to be resolved by a human (you); we
discuss this situation later in this chapter.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл <filename>foo</filename> получил от сервера
<computeroutput>C</computeroutput>onflicting —
конфликтующие изменения. Изменения с сервера пересекаются с
@@ -963,7 +966,7 @@
<sect2 id="svn.tour.cycle.edit">
<!-- @ENGLISH {{{
<title>Make Changes to Your Working Copy</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Внесение изменений в рабочую копию</title>
<!-- @ENGLISH {{{
@@ -977,7 +980,7 @@
editing files that are already in Subversion, you may not need
to use any of these commands until you commit. Changes you can
make to your working copy:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Теперю вы можете вносить изменения в рабочую копию. Самый
подходящий момент внести нужные изменения (или набор изменений),
например, добавление новой возможности, исправление ошибки и т. д.
@@ -993,7 +996,7 @@
<varlistentry>
<!-- @ENGLISH {{{
<term>File changes</term>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<term>Изменения файлов</term>
<listitem>
<!-- @ENGLISH {{{
@@ -1002,7 +1005,7 @@
just make your changes. Subversion will be able to
automatically detect which files have been
changed.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Это самый простой вид изменений. Вам не нужно сообщать
Subversion о своем намерении изменить файл; просто берите
и вносите изменения. Subversion сможет автоматически
@@ -1013,7 +1016,7 @@
<varlistentry>
<!-- @ENGLISH {{{
<term>Tree changes</term>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<term>Изменения в структуре</term>
<listitem>
<!-- @ENGLISH {{{
@@ -1023,7 +1026,7 @@
immediately in your working copy, no additions or
removals will happen in the repository until you commit
them.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вы можете попросить Subversion <quote>отметить</quote>
файлы и директории для удаления, добавления, копирования или
перемещения. Не смотря на то, что эти изменения сразу же
@@ -1040,7 +1043,7 @@
normally use. Subversion handles binary files just as easily
as it handles text files—and just as efficiently
too.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для внесения изменений в файлы используете свой текстовый
редактор, текстовый процессор, графическую программу или любой
другой инструмент который вы обычно используете. Subversion
@@ -1052,7 +1055,7 @@
that you'll use most often to make tree changes (we'll cover
<command>svn import</command> and <command>svn mkdir</command>
later).</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вот обзор четырех подкоманд Subversion которые вы будете
использовать наиболее часто при внесении изменений в структуру
(команды <command>svn import</command> и <command>svn
@@ -1068,7 +1071,7 @@
to change the structure of your working copy, and use the
<command>svn add</command> command to place new files and
directories under version control.</para> </warning>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<warning>
<para>Не смотря на то, что файлы вы можете редактировать
как угодно, не следует менять структуру рабочей копии
@@ -1096,7 +1099,7 @@
<filename>foo</filename> itself, pass the
<option>–-non-recursive</option> (<option>-N</option>)
switch.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Запланировать файл, директорию или символьную ссылку
<filename>foo</filename> для добавления в хранилище.
При следующей фиксации, <filename>foo</filename> станет
@@ -1129,7 +1132,7 @@
back anything you delete by checking out (or updating
your working copy) a revision earlier than the one in
which you deleted it.</para></footnote></para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Запланировать удаление из хранилища файла, директории
или символьной ссылки <filename>foo</filename>. Если
<filename>foo</filename> является файлом или ссылкой,
@@ -1158,7 +1161,7 @@
recorded (as having originally come from
<filename>foo</filename>). <command>svn copy</command>
does not create intermediate directories.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Создать новый элемент <filename>bar</filename> как
копию <filename>foo</filename>. <filename>bar</filename>
будет автоматически запланирован для добавления.
@@ -1181,7 +1184,7 @@
<filename>foo</filename> is scheduled for removal.
<command>svn move</command> does not create intermediate
directories.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Эта команда полностью аналогична выполнению
<command>svn copy foo bar; svn delete foo</command>.
По-этому, <filename>bar</filename> будет запланирован для
@@ -1197,7 +1200,7 @@
<sidebar>
<!-- @ENGLISH {{{
<title>Changing the Repository Without a Working Copy</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Изменение хранилища без участия рабочей копии</title>
<!-- ### pll - Fri 07 Feb 2003 12:55:07 -->
@@ -1220,7 +1223,7 @@
of <command>svn mkdir</command>, <command>svn
copy</command>, <command>svn move</command>, and
<command>svn delete</command> can work with URLs.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Ранее в этой главе мы сказали, что вам необходимо
зафиксировать любые изменения для того, что бы они отразились в
хранилище. Это не совсем так — <emphasis>существуют</emphasis>
@@ -1239,7 +1242,7 @@
operate on URLs don't have this luxury, so when you operate
directly on a URL, any of the above actions represent an
immediate commit.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>URL операции ведут себя подобным образом из-за того, что
команды использующие рабочую копию могут использовать ее
как своего рода <quote>сартовую площадку</quote> для
@@ -1257,7 +1260,7 @@
<sect2 id="svn.tour.cycle.examine">
<!-- @ENGLISH {{{
<title>Examine Your Changes</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Анализ изменений</title>
<!-- @ENGLISH {{{
@@ -1276,7 +1279,7 @@
two commands to find out what files have changed in your
working copy, and then perhaps the third to revert some (or
all) of those changes.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>После внесения изменений вам необходимо зафиксировать их в
хранилище, но перед тем, как вы это сделаете, не плохо бы посмотреть,
что, собственно, вы изменили. Проанализировав перед фиксацией свои
@@ -1307,7 +1310,7 @@
Because of this, Subversion can quickly show you how your
working files have changed, or even allow you to undo your
changes without contacting the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion была оптимизирована для решения такой задачи
и способна выполнять множество действий без обращения к
хранилищу. В частности, в <filename>.svn</filename>-области
@@ -1323,7 +1326,7 @@
<!-- @ENGLISH {{{
<para>You'll probably use the <command>svn status</command>
command more than any other Subversion command.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Наверное, команду <command>svn status</command>
вы будете использовать чаще чем любую другую команду
Subversion.</para>
@@ -1331,7 +1334,7 @@
<sidebar>
<!-- @ENGLISH {{{
<title>CVS Users: Hold That Update!</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>CVS Users: Hold That Update!</title>
<!-- @ENGLISH {{{
@@ -1342,7 +1345,7 @@
your working copy—without accessing the repository
or potentially incorporating new changes published by
other users.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вероятно, для того что бы увидеть какие изменения вы сделали
в рабочей копии, вы использовали <command>cvs update</command>.
<command>svn status</command> даст вам всю нужную информацию
@@ -1357,7 +1360,7 @@
updated your working copy. You'll have to break the habit
of using the <command>update</command> command to see what
local modifications you've made.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><command>Обновление</command> в Subversion делает именно
это — обновляет вашу рабочую копию беря все изменения
зафиксированные в хранилище с момента последнего обновления рабочей
@@ -1375,7 +1378,7 @@
status</command> can return. (Note that the text following
<literal>#</literal> is not
actually printed by <command>svn status</command>.)</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>При запуске <command>svn status</command> без параметров в
корневой директории рабочей копии, будут найдены все сделанные вами
файловые и структурные изменения. Ниже приведены примеры различных
@@ -1408,7 +1411,7 @@
T fish.jpg # file is locked locally, but lock has been stolen
</screen>
-@ ENGLISH }}} -->
+ at ENGLISH }}} -->
<screen>
L some_dir # svn оставила блокировку в .svn-области для some_dir
M bar.c # содержимое bar.c имеет локальные изменения
@@ -1439,7 +1442,7 @@
whitespace characters, followed by a file or directory name.
The first column tells the status of a file or directory
and/or its contents. The codes printed here are:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><command>svn status</command>
печатает пять колонок букв, затем несколько пробелов,
затем имя файла или директории. Первая колонка показывает
@@ -1456,7 +1459,7 @@
<para>The file, directory, or symbolic link
<filename>item</filename> has been scheduled for
addition into the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл, директория или символьная ссылка
<filename>item</filename> была запланирована для
добавления в хранилище.</para>
@@ -1473,7 +1476,7 @@
that you have in your working copy. You must resolve
this conflict before committing your changes to the
repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл <filename>item</filename> находится в
состоянии конфликта. Это значит, что изменения,
полученные от сервера при обновлении пересекаются
@@ -1490,7 +1493,7 @@
<para>The file, directory, or symbolic link
<filename>item</filename> has been scheduled for
deletion from the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл, директория или символьная ссылка
<filename>item</filename> запланированы
для удаления из хранилища.</para>
@@ -1503,7 +1506,7 @@
<!-- @ENGLISH {{{
<para>The contents of the file <filename>item</filename>
have been modified.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Содержимое файла <filename>item</filename> было
изменено.</para>
</listitem>
@@ -1519,7 +1522,7 @@
This means that the object is first deleted, then
another object of the same name is added, all within a
single revision.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл, директория или символьная ссылка запланированы
для замены <filename>item</filename> в хранилище.
Это значит, что сначала объект был удален, а затем
@@ -1537,7 +1540,7 @@
definition. To find out more about externals
definitions, see <xref
linkend="svn.advanced.externals"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Директория <filename>item</filename> не версионирована,
но относится к внешним зависимостям Subversion. Более подробно
о внешних зависимостях см. в <xref
@@ -1558,7 +1561,7 @@
<literal>svn:ignore</literal> property on the parent
directory. For more information on ignored files, see
<xref linkend="svn.advanced.props.special.ignore" />.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл, директория или символьная ссылка не находится под
контролем версий. Вы можете убрать знаки вопроса либо
воспользовавшись параметром <option>--quiet</option>
@@ -1585,7 +1588,7 @@
refetch the file or directory from the repository, or
<command>svn revert file</command> will restore a
missing file.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл, директория или символьная ссылка
<filename>item</filename> находится под контролем версий
но отсутствует или повреждена как то по другому. Элемент
@@ -1611,7 +1614,7 @@
the file and created a directory in its place, without
using the <command>svn delete</command> or
<command>svn add</command> command.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл, директория или символьная ссылка
<filename>item</filename> в хранилище является объектом
одного типа, а то, что на самом деле находится в рабочей
@@ -1638,7 +1641,7 @@
<option>–-no-ignore</option> option to <command>svn
status</command>—otherwise the file would be
ignored and not listed at all!</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Файл, директория или символьная ссылка
<filename>item</filename> находится под контролем
версий и Subversion настроена на его игнорирование
@@ -1662,7 +1665,7 @@
properties). If an <computeroutput>M</computeroutput>
appears in the second column, then the properties have been
modified, otherwise a whitespace will be printed.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вторая колонка показывает статус свойств файлов и
директорий (больше о свойствах см. в <xref
linkend="svn.advanced.props"/>). Если во второй колонке
@@ -1681,7 +1684,7 @@
presumably Subversion was interrupted and the lock needs to
be cleaned up by running <command>svn cleanup</command>
(more about that later in this chapter).</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Третья колонка может содержать только пробел или
<computeroutput>L</computeroutput>, это значит, что у директории
заблокирована рабочая область <filename>.svn</filename>.
@@ -1711,7 +1714,7 @@
which means this file will automatically exist in the copy.
Then the local modifications will be uploaded into the
copy.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Четвертая колонка может содержать только пробел или
<computeroutput>+</computeroutput>, это означает, что
элемент был запланирован для <quote>добавления с историей</quote>.
@@ -1734,7 +1737,7 @@
file or directory has been switched from the path of the
rest of the working copy (using <command>svn
switch</command>) to a branch.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Пятая колонка может содержать только пробел или
<computeroutput>S</computeroutput>. Это символизирует
то, что файл или директория были переключены с пути остальной
@@ -1745,7 +1748,7 @@
<para>The sixth column shows information about locks, which is
further explained in <xref
linkend="svn.advanced.locking"/>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Шестая колонка показывает информацию о блокировке,
которая подробно объяснена в <xref
linkend="svn.advanced.locking"/>.</para>
@@ -1754,7 +1757,7 @@
<para>If you pass a specific path to <command>svn
status</command>, it gives you information about that item
alone:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вы укажите конкретный путь для <command>svn
status</command>, вы получите информацию только об этом
элементе:</para>
@@ -1770,7 +1773,7 @@
which will show you the status of <emphasis>every</emphasis>
item in your working copy, even if it has not been
changed:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Кроме того, <command>svn status</command> имеет
параметр <option>--verbose</option> (<option>-v</option>),
который покажет вам статус <emphasis>каждого</emphasis>
@@ -1795,7 +1798,7 @@
the same, but the second column shows the working-revision of
the item. The third and fourth columns show the revision in
which the item last changed, and who changed it.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Это <quote>длинная форма</quote> представления вывода
<command>svn status</command>. Первая колонка та-же самая,
а вот вторая колонка показывает рабочую правку элемента.
@@ -1811,7 +1814,7 @@
(<option>-u</option>) switch, which contacts the repository
and adds information about things that are
out-of-date:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Ни один из указаных выше вызовов <command>svn
status</command> не обращается к хранилищу, они работают
только локально, сравнивая метаданные директории
@@ -1839,7 +1842,7 @@
server changes on <filename>README</filename> before you
commit, or the repository will reject your commit for being
out-of-date. (More on this subject later.)</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Обратите внимание на две звездочки: если сейчас вы
запустите <command>svn update</command> вы получите изменения
для <filename>README</filename> и <filename>trout.c</filename>.
@@ -1871,7 +1874,7 @@
might run <command>svn diff –-diff-cmd /usr/bin/diff
–-extensions '-bc' foo.c</command>.</para>
</footnote></para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Еще один механизм для анализа изменений, это команда
<command>svn diff</command>. Увидеть <emphasis>как
именно</emphasis> вы изменили элементы можно запустив
@@ -1938,7 +1941,7 @@
addition are displayed as all added-text, and files
scheduled for deletion are displayed as all deleted
text.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Команда <command>svn diff</command> формирует
свой вывод сравнивая ваши рабочие файлы с кешированными
<quote>нетронутыми</quote> копиями из <filename>.svn</filename>
@@ -1955,7 +1958,7 @@
<command>patch</command> program, so you can generate
<quote>patches</quote> by redirecting the diff output to a
file:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вывод происходит в <firstterm>объединенном формате представления
различий</firstterm>. При этом удаленные строки предваряются
<literal>-</literal>, а добавленные строки предваряются
@@ -1972,7 +1975,7 @@
<!-- @ENGLISH {{{
<para>You could, for example, email the patch file to another
developer for review or testing prior to commit.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вы можете, например, отправить по электронной почте
патч-файл другому разработчику для ознакомления или
тестирования перед фиксацией.</para>
@@ -1987,7 +1990,7 @@
that your changes to <filename>README</filename> are a
mistake; perhaps you accidentally typed that text into the
wrong file in your editor.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Теперь предположим, просмотрев вывод команды diff
вы обнаружили, что изменения в <filename>README</filename>
являются ошибочными; возможно, в своем редакторе, вы случайно
@@ -1996,7 +1999,7 @@
<!-- @ENGLISH {{{
<para>This is a perfect opportunity to use <command>svn
revert</command>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Это как раз возможность воспользоваться
<command>svn revert</command>.</para>
@@ -2013,7 +2016,7 @@
<emphasis>any</emphasis> scheduled operations—for
example, you might decide that you don't want to add a new
file after all:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion возвращает файл в состояние, предществующее
модификации, путем замены файла его кешированной
<quote>первоначальной</quote> копией из
@@ -2048,7 +2051,7 @@
has one very noticeable difference—it doesn't have
to communicate with the repository to restore your
file.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><command>svn revert</command>
<replaceable>ITEM</replaceable> будет иметь точно такой же эффект,
как и удаление <replaceable>ITEM</replaceable> из вашей рабочей
@@ -2062,7 +2065,7 @@
<!-- @ENGLISH {{{
<para>Or perhaps you mistakenly removed a file from version
control:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Или, допустим, вы ошибочно удалили файл из-под контроля
версий:</para>
@@ -2085,7 +2088,7 @@
<sidebar>
<!-- @ENGLISH {{{
<title>Look Ma! No Network!</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Look Ma! No Network!</title>
<!-- @ENGLISH {{{
@@ -2096,7 +2099,7 @@
changes-in-progress when you are somewhere without a network
connection, such as traveling on an airplane, riding a
commuter train or hacking on the beach.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Все эти три команды (<command>svn
status</command>, <command>svn diff</command> и
<command>svn revert</command>) могут использоваться
@@ -2124,7 +2127,7 @@
imagine the repercussions if you try to commit a one line
change to a 400MB file and have to send the whole file to
the server!</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для этого Subversion использует отдельную для каждого
версионированого файла кешированую в административной области
<filename>.svn</filename> первоначальную версию. Это позволяет
@@ -2150,14 +2153,14 @@
<sect2 id="svn.tour.cycle.resolve">
<!-- @ENGLISH {{{
<title>Resolve Conflicts (Merging Others' Changes)</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Решение конфликтов (при сливании чужих изменений)</title>
<!-- @ENGLISH {{{
<para>We've already seen how <command>svn status -u</command>
can predict conflicts. Suppose you run <command>svn
update</command> and some interesting things occur:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Мы уже видели как <command>svn status -u</command>
может предсказать конфликты. Предположим вы запустили
<command>svn update</command> и произошло кое-что
@@ -2183,7 +2186,7 @@
means that the file had local changes to begin with, but the
changes coming from the repository didn't overlap with the local
changes.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Коды <computeroutput>U</computeroutput> и
<computeroutput>G</computeroutput> интереса не представляют;
эти файлы без проблем поглотили изменения из хранилища.
@@ -2200,7 +2203,7 @@
conflict. This means that the changes from the server overlapped
with your own, and now you have to manually choose between
them.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>А вот отмеченые <computeroutput>C</computeroutput> имеют конфликт.
Это значит, что изменения с сервера пересеклись с вашими личными и
теперь вам вам нужно вручную сделать между ними выбор.</para>
@@ -2208,7 +2211,7 @@
<!-- @ENGLISH {{{
<para>Whenever a conflict occurs, three things typically occur
to assist you in noticing and resolving that conflict:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Всякий раз когда возникает конфликт, для того, чтобы помочь
вам заметить и решить этот конфликт, возникают как правило три
вещи:</para>
@@ -2220,7 +2223,7 @@
<para>Subversion prints a <computeroutput>C</computeroutput>
during the update, and remembers that the file is in a
state of conflict.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Subversion печатает <computeroutput>C</computeroutput>
во время обновления и запоминает, что файл в состоянии
конфликта.</para>
@@ -2237,7 +2240,7 @@
<literal>svn:mime-type</literal> property to decide if a
file is capable of contextual, line-based merging. See
<xref linkend="svn.advanced.props.special.mime-type"/> to learn more.)</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если Subversion считает, что файл объединяемого типа
она помещает <firstterm>маркеры конфликта</firstterm> —
специальные текстовые строки которые отделяют
@@ -2253,7 +2256,7 @@
<!-- @ENGLISH {{{
<para>For every conflicted file, Subversion places up to
three extra unversioned files in your working copy:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для каждого конфликтного файла Subversion добавляет в
рабочую копию до трех неверсионированных дополнительных
файлов:</para>
@@ -2272,7 +2275,7 @@
then the <filename>.mine</filename> file isn't
created, since it would be identical to the working
file.)</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Это ваш файл в том виде в каком он был в
рабочей копии до обновления — без маркеров
конфликта. Этот файл сотержит в себе только ваши изменения
@@ -2292,7 +2295,7 @@
your working copy. That is, the file that you
checked out before you made your latest
edits.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Это файл правки <literal>BASE</literal>, где
<literal>BASE</literal> - правка которая была до обновления
рабочей копии. То есть это файл который у вас был до
@@ -2309,7 +2312,7 @@
working copy. This file corresponds to the
<literal>HEAD</literal> revision of the
repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Это файл, который ваш Subversion-клиент
только что получил с сервера, когда вы обновили
рабочую копию. Этот файл соответствует правке
@@ -2324,7 +2327,7 @@
of the file in your <filename>.svn</filename> directory
and <literal>NEWREV</literal> is the revision number of
the repository <literal>HEAD</literal>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Здесь <literal>OLDREV</literal> - это номер правки файла
в директории <filename>.svn</filename>, а
<literal>NEWREV</literal> - это номер правки
@@ -2339,7 +2342,7 @@
just changed the file in his working copy and checked it in.
Sally updates her working copy before checking in and she gets
a conflict:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Например, Салли внесла изменения в файл
<filename>sandwich.txt</filename> из хранилища. Гарри
одновременно изменил файл в своей рабочей копии и зафиксировал
@@ -2361,7 +2364,7 @@
<para>At this point, Subversion will <emphasis>not</emphasis>
allow you to commit the file <filename>sandwich.txt</filename>
until the three temporary files are removed.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Теперь Subversion <emphasis>не</emphasis> позволит зафиксировать
файл <filename>sandwich.txt</filename> пока не будут удалены три
временных файла.</para>
@@ -2376,7 +2379,7 @@
<!-- @ENGLISH {{{
<para>If you get a conflict, you need to do one of three
things:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вы получили конфликт, у вас есть три варианта:</para>
<itemizedlist>
@@ -2386,7 +2389,7 @@
<para>Merge the conflicted text <quote>by hand</quote> (by
examining and editing the conflict markers within the
file).</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Объединить конфликтующий текст <quote>вручную</quote>
(путем анализа и редактирования маркеров конфликта в
файле).</para>
@@ -2396,7 +2399,7 @@
<!-- @ENGLISH {{{
<para>Copy one of the temporary files on top of your
working file.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Скопровать один из временных файлов поверх
своего рабочего файла.</para>
</listitem>
@@ -2405,7 +2408,7 @@
<!-- @ENGLISH {{{
<para>Run <command>svn revert <filename></command>
to throw away all of your local changes.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Выполнить <command>svn revert <filename></command>
для того, чтобы убрать все ваши локальные измения.</para>
</listitem>
@@ -2421,7 +2424,7 @@
files yourself, but would you really want to do that when
Subversion can do it for you? We didn't think so.</para>
</footnote></para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>После того, как вы решили конфликт, вам нужно поставить в
извесность Subversion, выполнив <command>svn resolved</command>.
Это удаляет три временных файла и Subversion больше не считает,
@@ -2438,14 +2441,14 @@
<sect3 id="svn.tour.cycle.resolve.byhand">
<!-- @ENGLISH {{{
<title>Merging Conflicts by Hand</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Объединение конфликтов вручную</title>
<!-- @ENGLISH {{{
<para>Merging conflicts by hand can be quite intimidating the
first time you attempt it, but with a little practice, it
can become as easy as falling off a bike.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Объединение конфликтов вручную может показаться пугающим,
когда вы делаете это в первый раз, но немного попрактиковавшись
это может стать таким же простым, как езда на велосипеде.</para>
@@ -2458,7 +2461,7 @@
copy, you get a conflict and we're going to have to edit
<filename>sandwich.txt</filename> to resolve the conflicts.
First, let's take a look at the file:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вот пример. По недоразумению, вы и ваш соразработчик Салли,
оба одновременно редактируете файл
<filename>sandwich.txt</filename>. Салли зафиксировала свои
@@ -2494,7 +2497,7 @@
commit. The text between the first two sets of markers is
composed of the changes you made in the conflicting
area:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Строки знаков меньше чем, знаков равенства и заков
больше чем являются маркерами конфликта. Перед следующей
фиксацией, вам необходимо будет убедиться, что они удалены из
@@ -2512,7 +2515,7 @@
<!-- @ENGLISH {{{
<para>The text between the second and third sets of conflict
markers is the text from Sally's commit:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Текст между вторым и третьим маркером конфликта —
это текст из фиксации Салли:</para>
@@ -2534,7 +2537,7 @@
a rail.</para></footnote> Once you've agreed on the changes
you will check in, edit your file and remove the conflict
markers.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Скорее всего вы не захотите просто удалить маркеры конфликта
и изменения Салли — она ужастно удивится, когда дойдет до
сандвича и не увидит того, что ей нужнно. Так, что это тот случай
@@ -2561,7 +2564,7 @@
<!-- @ENGLISH {{{
<para>Now run <command>svn resolved</command>, and you're
ready to commit your changes:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Теперь выполните <command>svn resolved</command> и вы
готовы к фиксации изменений:</para>
@@ -2577,7 +2580,7 @@
copy—including your file as it was before you updated.
You can even use a third-party interactive merging tool to
examine those three files.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Помните, если вы станете в тупик при редактировании
конфликтующего файла, вы всегда можете обратиться к трем
файлам, которые Subversion создает в рабочей копии —
@@ -2590,7 +2593,7 @@
<sect3 id="svn.tour.cycle.resolve.copyover">
<!-- @ENGLISH {{{
<title>Copying a File Onto Your Working File</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Копирование файла поверх вашего рабочего файла</title>
<!-- @ENGLISH {{{
@@ -2598,7 +2601,7 @@
out your changes, you can merely copy one of the temporary
files created by Subversion over the file in your working
copy:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вы получили конфликт и решили отказаться от своих
изменений, вы можете просто скопировать один из временных файлов
созданых Subversion поверх файла в рабочей копии:</para>
@@ -2618,14 +2621,14 @@
<sect3 id="svn.tour.cycle.resolve.revert">
<!-- @ENGLISH {{{
<title>Punting: Using <command>svn revert</command></title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Использование <command>svn revert</command></title>
<!-- @ENGLISH {{{
<para>If you get a conflict, and upon examination decide that
you want to throw out your changes and start your edits
again, just revert your changes:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вы получили конфликт и вместо анализирования решаете
отбросить изменения и начать сначала, просто отмените ваши
изменения:</para>
@@ -2640,7 +2643,7 @@
<!-- @ENGLISH {{{
<para>Note that when you revert a conflicted file, you don't
have to run <command>svn resolved</command>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Обратите внимание, что когда вы возвращаете файл к предыдущему
состоянию, вам не нужно выполнять <command>svn
resolved</command>.</para>
@@ -2656,7 +2659,7 @@
fixed the conflict in your file—once the temporary files
are removed, Subversion will let you commit the file even if
it still contains conflict markers.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Теперь вы готовы к фиксации изменений. Обратите внимание на
то, что <command>svn resolved</command>, в отличие от большинства
команд с которыми мы имели дело в этой главе, требует аргумент.
@@ -2673,14 +2676,14 @@
<sect2 id="svn.tour.cycle.commit">
<!-- @ENGLISH {{{
<title>Commit Your Changes</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Фиксация изменений</title>
<!-- @ENGLISH {{{
<para>Finally! Your edits are finished, you've merged all
changes from the server, and you're ready to commit your
changes to the repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Наконец то! Ваши редактирования закончены, вы слили
все изменения с сервера и вы готовы к тому, чтобы зафиксировать
их в хранилище.</para>
@@ -2694,7 +2697,7 @@
you may wish to supply it on the command line using the
<option>-ﳢ-message</option> (or <option>-m</option>)
option:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Команда <command>svn commit</command> отправляет все ваши
изменения в хранилище. При фиксации изменений необходимо указать
описывающие ваши изменения <firstterm>лог сообщение</firstterm>.
@@ -2715,7 +2718,7 @@
work, you may want to tell Subversion to get the message from
a file by passing the filename with the
<option>-ﳢ-file</option> switch:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Однако, если вы составляли лог сообщение во время работы,
можно указать Subversion взять лог сообщение из файла, передавая
имя файла в параметре <option>--file</option>:</para>
@@ -2734,7 +2737,7 @@
(see the <literal>editor-cmd</literal> section in
<xref linkend="svn.advanced.confarea.opts.config"/>) for composing a log
message.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вы не укажите ни опции <option>--message</option> ни
опции <option>--file</option>, для составления лог сообщения
Subversion автоматически запустит ваш любимый редактор (см.
@@ -2749,7 +2752,7 @@
quit your editor without saving changes. If you've already
saved your commit message, simply delete the text and save
again.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если в редактире набирая сообщение решите отменить фиксацию,
вы можете просто выйти из редактора без сохранения изменений.
Если вы уже сохранили сообщение, просто удалите текст и
@@ -2773,7 +2776,7 @@
weren't looking. If somebody <emphasis>has</emphasis> done
that, the entire commit will fail with a message informing you
that one or more of your files is out-of-date:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Хранилище, в целом, не знает и не заботится о смысле ваших
изменений; оно только контролирует, что бы никто не изменил
те же файлы что и вы. Если это все таки
@@ -2792,7 +2795,7 @@
<para>At this point, you need to run <command>svn
update</command>, deal with any merges or conflicts that
result, and attempt your commit again.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Тепереь вам нужно выполнить <command>svn update</command>
разобраться со всеми объединениями и конфликтами и попытаться
выполнить фиксацию снова.</para>
@@ -2803,7 +2806,7 @@
to manage your repository and working copy, but you can get by
quite easily using only the commands that we've discussed so
far in this chapter.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Мы рассмотрели простейший рабочий цикл при использовании
Subversion. В Subversion существует много других возможностей
которые вы можете применять для управления рабочей копией и
@@ -2820,7 +2823,7 @@
<sect1 id="svn.tour.history">
<!-- @ENGLISH {{{
<title>Examining History</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Анализ истории</title>
<!-- @ENGLISH {{{
@@ -2834,7 +2837,7 @@
However, sometimes you just want to <emphasis>peer
into</emphasis> the past instead of <emphasis>going
into</emphasis> the past.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Как мы уже говорили, хранилище похоже на машину времени.
Оно хранит запись о любом когда либо зафиксированом изменении
и позваляет вам просмотреть его хронологию путем анализа
@@ -2849,7 +2852,7 @@
<!-- @ENGLISH {{{
<para>There are several commands that can provide you with
historical data from the repository:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Существует несколько команд которые могут обеспечить вас
хронологической информацией из хранилища:</para>
@@ -2862,7 +2865,7 @@
<para>Shows you broad information: log messages attached
to revisions, and which paths changed in each
revision.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Показывает вам развернутую информацию: лог сообщения
присоединены к правкам и и изменениям в каждой правке.</para>
</listitem>
@@ -2874,7 +2877,7 @@
<!-- @ENGLISH {{{
<para>Shows you the specific details of how a file changed
over time.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Показывает конкретные детеали того, как файл изменился
с течением времени.</para>
</listitem>
@@ -2887,7 +2890,7 @@
<para>This is used to retrieve any file as it existed in a
particular revision number and display it on your
screen.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Эта команда используется для получения отдельного файла
в том виде, в каком он был в конкретной ревизии и вывода его
на экран.</para>
@@ -2900,7 +2903,7 @@
<!-- @ENGLISH {{{
<para>Displays the files in a directory for any given
revision.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Показывает файлы в директории для любой указаной
правки.</para>
</listitem>
@@ -2921,7 +2924,7 @@
revision it changed, the time and date of that revision, and,
if it was provided, the log message that accompanied the
commit.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Для того, чтобы найти информацию о хронологии файла
или директории воспользуйтесь командой <command>svn log</command>.
<command>svn log</command> показывает информацию о том, кто изменял
@@ -2952,7 +2955,7 @@
particular order, or just a single revision, pass the
<option>-ﳢ-revision</option> (<option>-r</option>)
switch:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Обратите внимание на то, что по умолчанию лог сообщения
выводятся в <emphasis>обратном хронологическом порядке</emphasis>.
Если вам нужно увидеть другой диапазон правок в заранее определенном
@@ -2970,7 +2973,7 @@
<!-- @ENGLISH {{{
<para>You can also examine the log history of a single file or
directory. For example:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Кроме того, можно проанализировать историю лог сообщений
отдельного файла или директории. Например:</para>
@@ -2994,7 +2997,7 @@
in the filesystem, so in verbose mode, <command>svn
log</command> will include a list of changed paths in a
revision in its output:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В результате, будут показаны лог сообщения
<emphasis>только</emphasis> для тех правок, в которых рабочий
файл (или URL) изменялись.</para>
@@ -3029,7 +3032,7 @@
<para>After working with Subversion for a bit, most users will
come across something like this:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Почему <command>svn log</command> ничего не выводит?</title>
<para>Поработав немного с Subversion, многие пользователи
@@ -3054,7 +3057,7 @@
revision, try pointing <command>svn log</command> directly at
the top-most URL of your repository, as in <command>svn log -r 2
http://svn.collab.net/repos/svn</command>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>На первый взгляд это похоже на ошибку. Однако учтите, что
так как правки привязаны к хранилищу, <command>svn log</command>
использует путь из хранилища. Если путь просто не указан,
@@ -3086,7 +3089,7 @@
<para>In fact, it turns out that there are
<emphasis>three</emphasis> distinct uses of <command>svn
diff</command>:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Ранее, мы уже познакомились с <command>svn diff</command>
— эта команда показывает различия файла в объединенном формате
представления различий; она использовалась, для того, что бы показать
@@ -3110,7 +3113,7 @@
<listitem>
<para>Compare repository to repository</para>
</listitem>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<listitem>
<para>Анализ локальных изменений</para>
</listitem>
@@ -3133,7 +3136,7 @@
no switches will compare your working files to the cached
<quote>pristine</quote> copies in
the <filename>.svn</filename> area:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Анализ локальных изменений</title>
<para>Как мы уже знаем, запуск <command>svn diff</command> без
@@ -3167,7 +3170,7 @@
(<option>-r</option>) number is passed, then your
working copy is compared to the specified revision in the
repository.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Сравнение рабочей копии с хранилищем</title>
<para>Если в <option>--revision</option> (<option>-r</option>)
@@ -3200,7 +3203,7 @@
passed via <option>-ﳢ-revision</option>
(<option>-r</option>), then the two revisions are directly
compared.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Сравнение хранилища с хранилищем</title>
<para>Если через <option>--revision</option> (<option>-r</option>)
@@ -3230,7 +3233,7 @@
working copy. This is especially useful if you wish to
inspect changes in a file when you don't have a working copy
on your local machine:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para><command>svn diff</command> можно использовать не только
для сравнения файлов в рабочей копии, если вы укажите
в качестве аргумента URL, то сможете анализировать различия между
@@ -3256,7 +3259,7 @@
<para>If you want to examine an earlier version of a file and
not necessarily the differences between two files, you can use
<command>svn cat</command>:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вы хотите проанализировать ранние версии файла, а не
различия между двумя файлами, можно воспользоваться
<command>svn cat</command>:</para>
@@ -3273,7 +3276,7 @@
<!-- @ENGLISH {{{
<para>You can also redirect the output directly into a
file:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Или вы можете перенаправить вывод прямо в файл:</para>
<screen>
@@ -3298,7 +3301,7 @@
<para>Sometimes it's easier to look at an older version of a
file in its entirety as opposed to just the differences
between it and another revision.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Вероятно, вам интересно почему мы не воспользовались
<command>svn update --revision</command>, что бы обновить
файл старой правкой. Есть несколько причин, почему нам
@@ -3327,7 +3330,7 @@
<para>The <command>svn list</command> command shows you what
files are in a repository directory without actually
downloading the files to your local machine:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Комманда <command>svn list</command> показывает содержимое
директории в хранилише, при этом не закачивая его на локальную
машину:</para>
@@ -3345,7 +3348,7 @@
<para>If you want a more detailed listing, pass the
<option>-ﳢ-verbose</option> (<option>-v</option>) flag to get
output like this:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Если вам нужен более детальный листинг, тогда воспользуйтесь
флагом <option>--verbose</option> (<option>-v</option>) чтобы увидеть
нечто, подобное этому:</para>
@@ -3364,7 +3367,7 @@
directory was last modified, the user who modified it, the size
if it is a file, the date it was last modified, and the item's
name.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Колонки показывают правку, в которой файл или директория последний
раз менялись, имя пользователя делавшего изменения, размер если это
файл, дату последнего изменения и имя елемента.</para>
@@ -3382,7 +3385,7 @@
to take an entire working copy <quote>back in time</quote>
<footnote><para>See? We told you that Subversion was a time
machine.</para></footnote>:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Заключительное слово о истории</title>
<para>Дополнительно ко всем упомянутым выше командам, можно
@@ -3414,7 +3417,7 @@
<para>While not as frequently used as the commands previously
discussed in this chapter, you will occasionally need these
commands.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Другие полезные команды</title>
<para>При том, что эти команды используются не так часто как те
@@ -3446,7 +3449,7 @@
<quote>locked</quote>, then this is the command that you
should run. Also, <command>svn status</command> will display
an <literal>L</literal> next to locked items:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Когда Subversion изменяет рабочую копию (или любую информацию
в области <filename>.svn</filename>) она пытается делать это
безопастно настолько, насколко это возмоно. Перед изменением рабочей
@@ -3489,7 +3492,7 @@
<para>The <command>svn import</command> command is a quick way
to copy an unversioned tree of files into a repository,
creating intermediate directories as necessary.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Команда <command>svn import</command> это быстрый способ
скопировать неверсионированое дерево файлов в хранилище,
Создавая при необходимости промежуточные директории.</para>
@@ -3510,7 +3513,7 @@
<para>The previous example copied the contents of directory
<filename>mytree</filename> under the directory
<filename>some/project</filename> in the repository:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В предыдещем примере выполняется копирование содержимого
директории <filename>mytree</filename> в директорию
<filename>some/project</filename> хранилища:</para>
@@ -3527,7 +3530,7 @@
is <emphasis>not</emphasis> converted into a working copy. To
start working, you still need to <command>svn
checkout</command> a fresh working copy of the tree.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Обратите внимание на то, что после завершения импорта,
оригинальное дерево файлов <emphasis>не</emphasis>
конвертируется в рабочую копию. Для того, чтобы начать работать вам
@@ -3553,7 +3556,7 @@
get an idea of all the many different commands that Subversion
has—and how you can use them to make your work
easier.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Подводя итоги</title>
<para>На настоящий момент мы рассмотрели большинство команд Subversion
Modified: trunk/src/ru/book/ch04.xml
==============================================================================
--- trunk/src/ru/book/ch04.xml (original)
+++ trunk/src/ru/book/ch04.xml Sat Jul 23 08:39:53 2005
@@ -2,8 +2,11 @@
<chapter id="svn.branchmerge">
<!-- @ENGLISH {{{
<title>Branching and Merging</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Ветвление и слияние</title>
+ <chapterinfo>
+ <edition>1530</edition>
+ </chapterinfo>
<!-- See also svn.preface.organization -->
<simplesect>
@@ -20,7 +23,7 @@
is a feature you'll eventually come to depend on. This chapter
assumes that you're already familiar with Subversion's basic
concepts (<xref linkend="svn.basic"/>).</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Ветвление, назначение меток и слияние понятия свойственые
практически всем системам управления версиями. Если вы плохо
знакомы с этими понятиями, то в этой гллаве мы предллагаем хорошее
@@ -53,7 +56,7 @@
the two copies separately. As each department asks you to make
small changes, you incorporate them into one copy or the
other.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Что такое ветка?</title>
@@ -84,7 +87,7 @@
branch always begins life as a copy of something, and moves on
from there, generating its own history (see <xref
linkend="svn.branchmerge.whatis.dia-1"/>).</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Как правило, вам будет нужно вносить изменения в обе копии.
Например, если вы обнаружили опечатку в одной копии, скорее
всего, эта же опечатка присутствует и во второй копии.
@@ -113,7 +116,7 @@
your working copy reflect different branches, so that you can
<quote>mix and match</quote> different lines of development in
your daily work.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<figure id="svn.branchmerge.whatis.dia-1">
<title>Ветки разработки</title>
<graphic fileref="images/ch04dia1.png"/>
@@ -150,7 +153,7 @@
project directory now contains subdirectories named
<filename>trunk</filename> and <filename>branches</filename>.
The reason for this will soon become clear.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Использование веток</title>
<para>К этому моменту вы должны понимать как в хранилище, при каждой
@@ -170,7 +173,7 @@
<figure id="svn.branchmerge.using.dia-1">
<!-- @ENGLISH {{{
<title>Starting repository layout</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Начальная структура хранилища</title>
<graphic fileref="images/ch04dia2.png"/>
</figure>
@@ -194,7 +197,7 @@
<filename>/calc/trunk</filename>) is always usable. If you
start committing your changes bit-by-bit, you'll surely break
things for Sally.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Как и раньше, будем считать что Салли и вы, оба, имеете
рабочие копии проекта <quote>calc</quote>. А конкретно, каждый
из вас имеет рабочую копию <filename>/calc/trunk</filename>.
@@ -235,7 +238,7 @@
that are difficult to incorporate into your working
copy—especially if you run <command>svn update</command>
after weeks of isolation.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Одиним из вариантов является ограничение свободы действий:
вы и Салли перестаете делиться информацией на неделю или две.
В это время начинайте переворачивать и реорганизовывать файлы
@@ -269,7 +272,7 @@
you can still selectively share information with your
collaborators. You'll see exactly how this works later
on.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Лучшим решением является создание вашей собственной ветки, или
направления разработки, в хранилище. Это позволит вам часто сохранять
наполовину поломаную работу не пересекаясь с другими, и кроме того,
@@ -301,7 +304,7 @@
demonstrate the messy way first, just to make the concept
clear. To begin, check out a working copy of the project's
root directory, <filename>/calc</filename>:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Создание ветки</title>
<para>Создать ветку очень просто — при помощи команды
@@ -337,7 +340,7 @@
<para>Making a copy is now simply a matter of passing two
working-copy paths to the <command>svn copy</command>
command:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Теперь создание копии заключается в простой предаче
двух путей в пределах рабочей копии команде
<command>svn copy</command>:</para>
@@ -364,7 +367,7 @@
repository by copying <filename>/calc/trunk</filename>, rather
than resending all of the working copy data over the
network:</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>В этом случае, команда <command>svn copy</command>
рекурсивно копирует рабочую директорию <filename>trunk</filename>
в новую рабочую директорию
@@ -390,7 +393,7 @@
<para>And now the easier method of creating a branch, which we
should have told you about in the first place: <command>svn
copy</command> is able to operate directly on two URLs.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>А теперь, простой способ создания ветки, о котором мы говорили
раньше: команда <command>svn copy</command> может оперировать
с двумя URL напрямую.</para>
@@ -420,7 +423,7 @@
check out a large mirror of the repository. In fact, this
technique doesn't even require you to have a working copy at
all.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Всущности, между этими двумя методами нет разници. Оба варианта
создают в правке 341 новую директорию и эта новая директория является
копией <filename>/calc/trunk</filename>. Это показывает <xref
Modified: trunk/src/ru/book/ch05.xml
==============================================================================
--- trunk/src/ru/book/ch05.xml (original)
+++ trunk/src/ru/book/ch05.xml Sat Jul 23 08:39:53 2005
@@ -2,8 +2,11 @@
<chapter id="svn.reposadmin">
<!-- @ENGLISH {{{
<title>Repository Administration</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Администрирование хранилища</title>
+ <chapterinfo>
+ <edition>1563</edition>
+ </chapterinfo>
<!-- See also svn.preface.organization -->
<simplesect>
Modified: trunk/src/ru/book/ch06.xml
==============================================================================
--- trunk/src/ru/book/ch06.xml (original)
+++ trunk/src/ru/book/ch06.xml Sat Jul 23 08:39:53 2005
@@ -3,12 +3,15 @@
<!-- @ENGLISH {{{
<title>Server Configuration</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Настройка сервера</title>
+ <chapterinfo>
+ <edition>1563</edition>
+ </chapterinfo>
<!-- See also svn.preface.organization -->
-
+
<simplesect>
-
+
<para>A Subversion repository can be accessed simultaneously by
clients running on the same machine on which the repository
resides using the <literal>file:///</literal> method. But the
@@ -16,7 +19,7 @@
accessed from clients on computers all over the office—or,
perhaps, all over the world.</para>
-
+
<para>This section describes how to get your Subversion repository
exposed outside its host machine for use by remote clients. We
will cover Subversion's currently available server mechanisms,
@@ -24,16 +27,16 @@
this section, you should be able to decide which networking
setup is right for your needs, and understand how to enable such
a setup on your host computer.</para>
-
+
</simplesect>
-
+
<!-- ================================================================= -->
<!-- ================================================================= -->
<!-- ================================================================= -->
<sect1 id="svn.serverconfig.overview">
-
+
<title>Overview</title>
-
+
<para>Subversion was designed with an abstract network layer.
This means that a repository can be programmatically accessed by
any sort of server process, and the client <quote>repository
@@ -41,7 +44,7 @@
speak relevant network protocols. In theory, Subversion can use
an infinite number of network implementations. In practice,
there are only two servers at the time of writing.</para>
-
+
<para>Apache is an extremely popular webserver; using the
<command>mod_dav_svn</command> module, Apache can access a
repository and make it available to clients via the WebDAV/DeltaV
@@ -61,7 +64,7 @@
comparison of the two available Subversion servers—as an
administrator, it's up to you to choose whatever works best for
you and your users.</para>
-
+
<table id="svn.serverconfig.overview.tbl-1">
<title>Network Server Comparison</title>
@@ -76,35 +79,35 @@
<tbody>
<row>
<entry>Authentication options</entry>
-
+
<entry>HTTP(S) basic auth, X.509 certificates, LDAP, NTLM, or
any other mechanism available to Apache httpd</entry>
-
+
<entry>CRAM-MD5 or SSH</entry>
</row>
-
+
<row>
<entry>User account options</entry>
-
+
<entry>private 'users' file</entry>
-
+
<entry>private 'users' file, or existing system (SSH)
accounts</entry>
</row>
-
+
<row>
<entry>Authorization options</entry>
-
+
<entry>blanket read/write access, or per-directory
read/write control</entry>
-
+
<entry>blanket read/write access, or per-directory write
(but not read) control using a pre-commit hook</entry>
</row>
-
+
<row>
<entry>Encryption</entry>
-
+
<entry>via optional SSL</entry>
<entry>via optional SSH tunnel</entry>
@@ -112,7 +115,7 @@
<row>
<entry>Interoperability</entry>
-
+
<entry>partially usable by other WebDAV clients</entry>
<entry>not interoperable</entry>
@@ -120,7 +123,7 @@
<row>
<entry>Web viewing</entry>
-
+
<entry>limited built-in support, or via 3rd-party tools
such as ViewCVS</entry>
@@ -129,7 +132,7 @@
<row>
<entry>Speed</entry>
-
+
<entry>somewhat slower</entry>
<entry>somewhat faster</entry>
@@ -137,16 +140,16 @@
<row>
<entry>Initial setup</entry>
-
+
<entry>somewhat complex</entry>
<entry>fairly simple</entry>
</row>
</tbody>
- </tgroup>
+ </tgroup>
</table>
-
+
</sect1>
<!-- ================================================================= -->
@@ -229,7 +232,7 @@
(The runtime area is covered in more detail in <xref
linkend="svn.advanced.confarea"/>.) Successful credentials are
cached on disk, keyed on a combination of hostname, port, and
- authentication realm.</para>
+ authentication realm.</para>
<para>When the client receives an authentication challenge, it
first looks for the appropriate credentials in the disk cache;
@@ -318,7 +321,7 @@
<screen>
$ ls ~/.subversion/auth/svn.simple/
-5671adf2865e267db74f09ba6f872c28
+5671adf2865e267db74f09ba6f872c28
3893ed123b39500bca8a0b382839198e
5c3c22968347b390f349ff340196ed39
@@ -362,7 +365,7 @@
they're surprised to see that they're never used, i.e. new
revisions still appear to have been committed
anonymously!</para></footnote>
-
+
Typically, these options are used when:</para>
<itemizedlist>
@@ -375,7 +378,7 @@
credentials.</para>
</listitem>
</itemizedlist>
-
+
<para>Here is a final summary that describes how a Subversion
client behaves when it receives an authentication
@@ -415,7 +418,7 @@
<!-- ================================================================= -->
<!-- ================================================================= -->
<sect1 id="svn.serverconfig.svnserve">
-
+
<title>svnserve, a custom server</title>
<para>The <command>svnserve</command> program is a lightweight
@@ -511,7 +514,7 @@
<literal>file:///</literal> URLs.</para>
<sidebar id="svn.serverconfig.svnserve.invoking.sb-1">
- <title>Servers and Permissions: A Word of Warning</title>
+ <title>Servers and Permissions: A Word of Warning</title>
<para>First, remember that a Subversion repository is a
collection of database files; any process which accesses the
@@ -548,7 +551,7 @@
<option>-r</option> option to <command>svnserve</command>,
which restricts it to exporting only repositories below that
path:</para>
-
+
<screen>
$ svnserve -d -r /usr/local/repositories
…
@@ -559,12 +562,12 @@
the remote filesystem space. Clients then use URLs that
have that path portion removed from them, leaving much
shorter (and much less revealing) URLs:</para>
-
+
<screen>
$ svn checkout svn://host.example.com/project1
…
</screen>
-
+
</sect2>
<!-- =============================================================== -->
@@ -825,7 +828,7 @@
still be used to block access, by simply setting
<literal>auth-access = read</literal> or <literal>auth-access
= none</literal>.</para>
-
+
<para>You'd think that the story of SSH tunneling would end
here, but it doesn't. Subversion allows you to create custom
tunnel behaviors in your run-time <filename>config</filename>
@@ -893,10 +896,10 @@
exact <command>svnserve</command> command executed
by <command>sshd</command>, as well as how to have multiple
users share a single system account.</para>
-
+
<sect3 id="svn.serverconfig.svnserve.sshtricks.setup">
<title>Initial setup</title>
-
+
<para>To begin, locate the home directory of the account
you'll be using to launch <command>svnserve</command>. Make
sure the account has an SSH public/private keypair
@@ -915,7 +918,7 @@
<screen>
ssh-dsa AAAABtce9euch.... user at example.com
</screen>
-
+
<para>The first field describes the type of key, the second
field is the uuencoded key itself, and the third field is a
comment. However, it's a lesser known fact that the entire
@@ -938,14 +941,14 @@
</screen>
</sect3>
-
+
<sect3 id="svn.serverconfig.svnserve.sshtricks.fixedcmd">
<title>Controlling the invoked command</title>
<para>Because we can specify the executed server-side command,
it's easy to name a specific <command>svnserve</command>
binary to run and to pass it extra arguments:</para>
-
+
<screen>
command="/path/to/svnserve -t -r /virtual/root" TYPE KEY COMMENT
</screen>
@@ -961,7 +964,7 @@
system, or simply to relieve the user of having to type an
absolute path in the <literal>svn+ssh://</literal>
URL.</para>
-
+
<para>It's also possible to have multiple users share a single
account. Instead of creating a separate system account for
each user, generate a public/private keypair for each
@@ -978,7 +981,7 @@
<para>This example allows both Harry and Sally to connect to
the same account via public-key authentication. Each of
them has a custom command that will be executed;
- the <option>--tunnel-user</option> option
+ the <option>--tunnel-user</option> option
tells <command>svnserve -t</command> to assume that the named
argument is the authenticated user. Without
<option>--tunnel-user</option>, it would appear as though
@@ -1005,7 +1008,7 @@
</sect3>
</sect2>
-
+
</sect1>
@@ -1013,7 +1016,7 @@
<!-- ================================================================= -->
<!-- ================================================================= -->
<sect1 id="svn.serverconfig.httpd">
-
+
<title>httpd, the Apache HTTP server</title>
<para>The Apache HTTP Server is a <quote>heavy duty</quote>
@@ -1046,7 +1049,7 @@
For example, a general reference for the configuration
directives is located at <systemitem class="url">
http://httpd.apache.org/docs-2.0/mod/directives.html</systemitem>.</para>
-
+
<para>Also, as you make changes to your Apache setup, it is likely
that somewhere along the way a mistake will be made. If you are
not already familiar with Apache's logging subsystem, you should
@@ -1059,7 +1062,7 @@
the contents of those files for information that might reveal
the source of a problem that is not clearly noticeable
otherwise.</para>
-
+
<sidebar>
<title>Why Apache 2?</title>
@@ -1092,7 +1095,7 @@
<!-- =============================================================== -->
<sect2 id="svn.serverconfig.httpd.prereqs">
<title>Prerequisites</title>
-
+
<para>To network your repository over HTTP, you basically need
four components, available in two packages. You'll need
Apache <command>httpd</command> 2.0, the
@@ -1101,7 +1104,7 @@
filesystem provider module distributed with Subversion.
Once you have all of those components, the process of
networking your repository is as simple as:</para>
-
+
<itemizedlist>
<listitem>
<para>getting httpd 2.0 up and running with the mod_dav
@@ -1117,7 +1120,7 @@
file to export (or expose) the repository.</para>
</listitem>
</itemizedlist>
-
+
<para>You can accomplish the first two items either by
compiling <command>httpd</command> and Subversion from
source code, or by installing pre-built binary packages of
@@ -1126,13 +1129,13 @@
as well as how to compile and configure Apache itself for
this purpose, see the <filename>INSTALL</filename> file in
the top level of the Subversion source code tree.</para>
-
+
</sect2>
<!-- =============================================================== -->
<sect2 id="svn.serverconfig.httpd.basic">
<title>Basic Apache Configuration</title>
-
+
<para>Once you have all the necessary components installed on
your system, all that remains is the configuration of Apache
via its <filename>httpd.conf</filename> file. Instruct Apache
@@ -1147,7 +1150,7 @@
<literal>LoadModule</literal> directive has a simple syntax,
mapping a named module to the location of a shared library on
disk:</para>
-
+
<screen>
LoadModule dav_svn_module modules/mod_dav_svn.so
</screen>
@@ -1163,7 +1166,7 @@
LoadModule dav_svn_module modules/mod_dav_svn.so
</screen>
-
+
<para>At a later location in your configuration file, you now
need to tell Apache where you keep your Subversion repository
(or repositories). The <literal>Location</literal> directive
@@ -1182,14 +1185,14 @@
repository is located at
<filename>/absolute/path/to/repository</filename> using the
following <filename>httpd.conf</filename> syntax:</para>
-
+
<screen>
<Location /repos>
DAV svn
SVNPath /absolute/path/to/repository
</Location>
</screen>
-
+
<para>If you plan to support multiple Subversion repositories
that will reside in the same parent directory on your local
disk, you can use an alternative directive, the
@@ -1203,7 +1206,7 @@
class="url">http://my.server.com/svn/repos2</systemitem>, and
so on, you could use the <filename>httpd.conf</filename>
configuration syntax in the following example:</para>
-
+
<screen>
<Location /svn>
DAV svn
@@ -1212,7 +1215,7 @@
SVNParentPath /usr/local/svn
</Location>
</screen>
-
+
<para>Using the previous syntax, Apache will delegate the
handling of all URLs whose path portions begin with
<filename>/svn/</filename> to the Subversion DAV provider,
@@ -1222,7 +1225,7 @@
convenient syntax in that, unlike the use of the
<literal>SVNPath</literal> directive, you don't have to
restart Apache in order to create and network new
- repositories.</para>
+ repositories.</para>
<para>Be sure that when you define your new
<literal>Location</literal>, it doesn't overlap with other
@@ -1239,7 +1242,7 @@
<sidebar>
<title>Server Names and the COPY Request</title>
-
+
<para>Subversion makes use of the <literal>COPY</literal>
request type to perform server-side copies of files and
directories. As part of the sanity checking done by the
@@ -1249,11 +1252,11 @@
the name you use as the hostname of your server. Generally,
you can use the <literal>ServerName</literal> directive in
<filename>httpd.conf</filename> to accomplish this.</para>
-
+
<screen>
ServerName svn.example.com
</screen>
-
+
<para>If you are using Apache's virtual hosting support via
the <literal>NameVirtualHost</literal> directive, you may
need to use the <literal>ServerAlias</literal> directive to
@@ -1272,7 +1275,7 @@
Apache, when used as a Subversion server, will also need the
correct permissions to read and write to your Subversion
repository. (See <xref linkend="svn.serverconfig.svnserve.invoking.sb-1"/>.)</para>
-
+
<para>You will need to determine a permission system setup that
satisfies Subversion's requirements without messing up any
previously existing web page or script installations. This
@@ -1311,7 +1314,7 @@
repositories you make available via the
<literal>Location</literal> directive will be generally
accessible to everyone. In other words,</para>
-
+
<itemizedlist>
<listitem>
<para>anyone can use their Subversion client to checkout a
@@ -1330,7 +1333,7 @@
<sect3 id="svn.serverconfig.httpd.authn.basic">
<title>Basic HTTP Authentication</title>
-
+
<para>The easiest way to authenticate a client is via the
HTTP Basic authentication mechanism, which simply uses a
username and password to verify that a user is who she says
@@ -1340,12 +1343,12 @@
your Subversion repository. Let's grant commit access to
Sally and Harry. First, we need to add them to the password
file.</para>
-
+
<screen>
$ ### First time: use -c to create the file
$ ### Use -m to use MD5 encryption of the password, which is more secure
$ htpasswd -cm /etc/svn-auth-file harry
-New password: *****
+New password: *****
Re-type new password: *****
Adding password for user harry
$ htpasswd -m /etc/svn-auth-file sally
@@ -1369,11 +1372,11 @@
use the <literal>AuthUserFile</literal> directive to specify
the location of the password file you created using
<command>htpasswd</command>.</para>
-
+
<para>After adding these three directives, your
<literal><Location></literal> block should look
something like this:</para>
-
+
<screen>
<Location /svn>
DAV svn
@@ -1436,7 +1439,7 @@
<sect3 id="svn.serverconfig.httpd.authn.sslcerts">
<title>SSL Certificate Management</title>
-
+
<para>Businesses that need to expose their repositories for access
outside the company firewall should be conscious of the
possibility that unauthorized parties could be
@@ -1518,7 +1521,7 @@
[global]
ssl-authority-files = /path/to/CAcert1.pem;/path/to/CAcert2.pem
</screen>
-
+
<para>Many OpenSSL installations also have a pre-defined set
of <quote>default</quote> CAs that are nearly universally
trusted. To make the Subversion client automatically trust
@@ -1583,7 +1586,7 @@
</sect3>
</sect2>
-
+
<!-- =============================================================== -->
<sect2 id="svn.serverconfig.httpd.authz">
<title>Authorization Options</title>
@@ -1610,7 +1613,7 @@
<literal>sally</literal>, and provided the correct
password for their respective username, would be allowed to
do anything with the Subversion repository:</para>
-
+
<screen>
<Location /svn>
DAV svn
@@ -1620,7 +1623,7 @@
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /path/to/users/file
-
+
# only authenticated users may access the repository
Require valid-user
</Location>
@@ -1640,7 +1643,7 @@
<literal>Location</literal> directive, these blocks have
starting and ending tags, and you would nest them inside
your <literal><Location></literal> block.</para>
-
+
<para>The parameters present on the <literal>Limit</literal>
and <literal>LimitExcept</literal> directives are HTTP
request types that are affected by that block. For example,
@@ -1654,7 +1657,7 @@
directive would be placed inside the
<literal><LimitExcept></literal> block instead of just
inside the <literal><Location></literal> block.</para>
-
+
<screen>
<Location /svn>
DAV svn
@@ -1678,7 +1681,7 @@
<literal>Security</literal> section of the Apache
documentation's tutorials collection at <systemitem
class="url">http://httpd.apache.org/docs-2.0/misc/tutorials.html</systemitem>.</para>
-
+
</sect3>
@@ -1735,7 +1738,7 @@
SVNParentPath /usr/local/svn
# our access control policy
- AuthzSVNAccessFile /path/to/access/file
+ AuthzSVNAccessFile /path/to/access/file
</Location>
</programlisting>
</example>
@@ -1753,17 +1756,17 @@
<Location /repos>
DAV svn
SVNParentPath /usr/local/svn
-
+
# our access control policy
- AuthzSVNAccessFile /path/to/access/file
-
+ AuthzSVNAccessFile /path/to/access/file
+
# only authenticated users may access the repository
Require valid-user
-
+
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
- AuthUserFile /path/to/users/file
+ AuthUserFile /path/to/users/file
</Location>
</programlisting>
</example>
@@ -1787,23 +1790,23 @@
<Location /repos>
DAV svn
SVNParentPath /usr/local/svn
-
+
# our access control policy
- AuthzSVNAccessFile /path/to/access/file
-
- # try anonymous access first, resort to real
+ AuthzSVNAccessFile /path/to/access/file
+
+ # try anonymous access first, resort to real
# authentication if necessary.
Satisfy Any
Require valid-user
-
+
# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"
- AuthUserFile /path/to/users/file
+ AuthUserFile /path/to/users/file
</Location>
</programlisting>
</example>
-
+
<para>Once your basic <literal>Location</literal> block is
configured, you can create an access file and define some
authorization rules in it.</para>
@@ -1832,7 +1835,7 @@
directive, however, then it's fine to only define paths in
your sections—after all, there's only one
repository.</para>
-
+
<screen>
[calc:/branches/calc/bug-142]
harry = rw
@@ -1878,7 +1881,7 @@
[calc:/branches/calc/bug-142/secret]
harry =
</screen>
-
+
<para>In this example, Harry has read-write access to the
entire <filename>bug-142</filename> tree, but has absolutely no
access at all to the <filename>secret</filename>
@@ -1945,7 +1948,7 @@
[paint:/projects/paint]
@paint-developers = rw
-jane = r
+jane = r
</screen>
<para>Groups can also be defined to contain other
@@ -2014,9 +2017,9 @@
<Location /repos>
DAV svn
SVNParentPath /usr/local/svn
-
+
SVNPathAuthz off
-</Location>
+</Location>
</programlisting>
</example>
@@ -2040,7 +2043,7 @@
<sect3 id="svn.serverconfig.httpd.extra.browsing">
<title>Repository Browsing</title>
-
+
<para>One of the most useful benefits of an Apache/WebDAV
configuration for your Subversion repository is that the
youngest revisions of your versioned files and directories
@@ -2075,7 +2078,7 @@
<filename>httpd.conf</filename> will instruct mod_dav_svn to
generate XML output when displaying a directory listing, and
to reference the XSLT stylesheet of your choice:</para>
-
+
<screen>
<Location /svn>
DAV svn
@@ -2133,7 +2136,7 @@
<sect3 id="svn.serverconfig.httpd.extra.other">
<title>Other Features</title>
-
+
<para>Several of the features already provided by Apache in
its role as a robust Web server can be leveraged for
increased functionality or security in Subversion as well.
@@ -2146,7 +2149,7 @@
of data). You need only to compile support for the features
you desire into Subversion and Apache, and properly
configure the programs to use those features.</para>
-
+
<para>Deflate compression places a small burden on the client
and server to compress and decompress network transmissions
as a way to minimize the size of the actual transmission.
@@ -2156,7 +2159,7 @@
extreme cases, this minimized network transmission could be
the difference between an operation timing out or completing
successfully.</para>
-
+
<para>Less interesting, but equally useful, are other features
of the Apache and Subversion relationship, such as the
ability to specify a custom port (instead of the default
@@ -2175,7 +2178,7 @@
complicated topic; for details, read <xref
linkend="svn.webdav"/>.</para>
-
+
</sect3>
</sect2>
@@ -2187,17 +2190,17 @@
<!-- ================================================================= -->
<!-- ================================================================= -->
<sect1 id="svn.serverconfig.multimethod">
-
+
<title>Supporting Multiple Repository Access Methods</title>
<para>You've seen how a repository can be accessed in many
different ways. But is it possible—or safe—for your
repository to be accessed by multiple methods simultaneously?
The answer is yes, provided you use a bit of foresight.</para>
-
+
<para>At any given time, these processes may require read and
write access to your repository:</para>
-
+
<itemizedlist>
<listitem>
<para>regular system users using a Subversion client (as
@@ -2220,7 +2223,7 @@
particular fixed user.</para>
</listitem>
</itemizedlist>
-
+
<para>The most common problem administrators run into is repository
ownership and permissions. Does every process (or user) in the
previous list have the rights to read and write the Berkeley DB
@@ -2231,7 +2234,7 @@
not enough, because a process may write to the database files
using an unfriendly umask—one that prevents access by
other users.</para>
-
+
<para>So the next step beyond setting up a common group for
repository users is to force every repository-accessing process
to use a sane umask. For users accessing the repository
@@ -2269,7 +2272,7 @@
seem a bit messy and complicated, but the problems of having
multiple users sharing write-access to common files are classic
ones that are not often elegantly solved.</para>
-
+
<para>Fortunately, most repository administrators will never
<emphasis>need</emphasis> to have such a complex configuration.
Users who wish to access repositories that live on the same
@@ -2325,7 +2328,7 @@
</chapter>
<!--
-local variables:
+local variables:
sgml-parent-document: ("book.xml" "chapter")
end:
vim: tw=78:ft=svnbook
Modified: trunk/src/ru/book/ch07.xml
==============================================================================
--- trunk/src/ru/book/ch07.xml (original)
+++ trunk/src/ru/book/ch07.xml Sat Jul 23 08:39:53 2005
@@ -3,8 +3,11 @@
<!-- @ENGLISH {{{
<title>Advanced Topics</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Профессиональное использование Subversion</title>
+ <chapterinfo>
+ <edition>1563</edition>
+ </chapterinfo>
<!-- See also svn.preface.organization -->
<simplesect>
@@ -47,7 +50,7 @@
<sect1 id="svn.advanced.confarea">
<title>Runtime Configuration Area</title>
-
+
<para>Subversion provides many optional behaviors that can be
controlled by the user. Many of these options are of the kind
that a user would wish to apply to all Subversion operations.
@@ -111,7 +114,7 @@
<para>The configuration area currently contains three
files—two configuration files (<filename>config</filename> and
- <filename>servers</filename>), and a <filename>README.txt</filename>
+ <filename>servers</filename>), and a <filename>README.txt</filename>
file which describes the INI format. At the time of their
creation, the files contain default values for each of the
supported Subversion options, mostly commented out and grouped
@@ -165,7 +168,7 @@
so are overridden by values found in the configuration
files. In other words, configuration priority is granted in
the following order on a Windows system:</para>
-
+
<orderedlist>
<listitem>
<para>Command-line options</para>
@@ -261,7 +264,7 @@
<!-- =============================================================== -->
<sect2 id="svn.advanced.confarea.opts">
<title>Configuration Options</title>
-
+
<para>In this section, we will discuss the specific
run-time configuration options that are currently supported
by Subversion.</para>
@@ -545,7 +548,7 @@
<para>The <literal>miscellany</literal> section is where
everything that doesn't belong elsewhere winds up.
<footnote>
- <para>Anyone for potluck dinner?</para>
+ <para>Anyone for potluck dinner?</para>
</footnote>
In this section, you can find:</para>
@@ -579,7 +582,7 @@
/>.</para>
</listitem>
</varlistentry>
-
+
<varlistentry>
<term><literal>enable-auto-props</literal></term>
<listitem>
@@ -589,12 +592,12 @@
<literal>yes</literal> to enable Auto-props.
The <literal>auto-props</literal> section of this file
specifies which properties are to be set on which files.</para>
- </listitem>
+ </listitem>
</varlistentry>
<varlistentry>
<term><literal>log-encoding</literal></term>
- <listitem>
+ <listitem>
<para>This variable sets the default character set
encoding for commit log messages. It's a permanent
form of the <option>--encoding</option> option (see
@@ -609,7 +612,7 @@
<varlistentry>
<term><literal>use-commit-times</literal></term>
- <listitem>
+ <listitem>
<para>Normally your working copy files have timestamps
that reflect the last time they were touched by any
process, whether that be your own editor or by some
@@ -632,8 +635,8 @@
timestamps on files that they touch.</para>
</listitem>
</varlistentry>
-
- <!-- ###TODO add description of other options shown in example
+
+ <!-- ###TODO add description of other options shown in example
registry file, e.g., template-root -->
</variablelist>
@@ -781,7 +784,7 @@
property 'copyright' set on 'calc/button.c'
$
</screen>
-
+
<para>But we've been touting the flexibility that Subversion
offers for your property values. And if you are planning to
have a multi-line textual, or even binary, property value, you
@@ -869,7 +872,7 @@
Copyright (c) 2003 Red-Bean Software. All rights reserved.
Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
+modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
@@ -891,7 +894,7 @@
$ svn proplist --verbose calc/button.c
Properties on 'calc/button.c':
copyright : (c) 2003 Red-Bean Software
- license :
+ license :
$
</screen>
@@ -993,15 +996,15 @@
changes on a versioned resource that clash with your own,
Subversion will report that the resource is in a conflicted
state.</para>
-
+
<screen>
% svn update calc
M calc/Makefile.in
C calc/button.c
Updated to revision 143.
-$
+$
</screen>
-
+
<para>Subversion will also create, in the same directory as
the conflicted resource, a file with a
<filename>.prej</filename> extension which contains the
@@ -1016,11 +1019,11 @@
$ svn status calc
C calc/button.c
? calc/button.c.prej
-$ cat calc/button.c.prej
+$ cat calc/button.c.prej
prop 'linecount': user set to '1256', but update set to '1301'.
$
</screen>
-
+
<para>To resolve property conflicts, simply ensure that the
conflicting properties contain the values that they should,
and then use the <command>svn resolved</command> command to
@@ -1053,7 +1056,7 @@
<!-- =============================================================== -->
<sect2 id="svn.advanced.props.special">
-
+
<title>Special Properties</title>
<para>Subversion has no particular policy regarding
@@ -1065,10 +1068,10 @@
directories to which they are attached. In this section,
we'll untangle the mystery, and describe how these special
properties make your life just a little easier.</para>
-
+
<sect3 id="svn.advanced.props.special.executable">
<title><literal>svn:executable</literal></title>
-
+
<para>The <literal>svn:executable</literal> property is used
to control a versioned file's filesystem-level execute
permission bit in a semi-automated way. This property has
@@ -1108,7 +1111,7 @@
<sect3 id="svn.advanced.props.special.mime-type">
<title><literal>svn:mime-type</literal></title>
-
+
<para>The <literal>svn:mime-type</literal> property serves
many purposes in Subversion. Besides being a
general-purpose storage location for a file's Multipurpose
@@ -1199,7 +1202,7 @@
<sidebar>
<title>Ignore Patterns for CVS Users</title>
-
+
<para>The Subversion <literal>svn:ignore</literal> property
is very similar in syntax and function to the CVS
<filename>.cvsignore</filename> file. In fact, if you are
@@ -1207,12 +1210,12 @@
directly migrate the ignore patterns by using the
<filename>.cvsignore</filename> file as input file to the
<command>svn propset</command> command:</para>
-
+
<screen>
$ svn propset svn:ignore -F .cvsignore .
property 'svn:ignore' set on '.'
$
-</screen>
+</screen>
<para>There are, however, some differences in the ways that
CVS and Subversion handle ignore patterns. The two systems
@@ -1295,7 +1298,7 @@
items—such as that source code file that you probably
forgot to add to version control.</para>
- <para>If you want to see the ignored files, you can pass the
+ <para>If you want to see the ignored files, you can pass the
<option>--no-ignore</option> option to Subversion:</para>
<screen>
@@ -1318,7 +1321,7 @@
Subversion uses the ignore patterns to determine which files
should not be swept into the version control system as part
of a larger recursive addition or import operation.</para>
-
+
</sect3>
<sect3 id="svn.advanced.props.special.keywords">
@@ -1358,7 +1361,7 @@
regardless of case, but this behaviour is deprecated.</para>
<para>Subversion defines the list of keywords available for
- substitution. That list contains the following five keywords,
+ substitution. That list contains the following five keywords,
some of which have aliases that you can also use:</para>
<variablelist>
@@ -1378,7 +1381,7 @@
<listitem>
<para>This keyword describes the last known revision in
which this file changed in the repository, and looks
- something like <literal>$Revision: 144 $</literal>.
+ something like <literal>$Revision: 144 $</literal>.
It may also be specified as
<literal>LastChangedRevision</literal> or
<literal>Rev</literal>.</para>
@@ -1389,8 +1392,8 @@
<listitem>
<para>This keyword describes the last known user to
change this file in the repository, and looks
- something like <literal>$Author: harry $</literal>.
- It may also be specified as
+ something like <literal>$Author: harry $</literal>.
+ It may also be specified as
<literal>LastChangedBy</literal>.</para>
</listitem>
</varlistentry>
@@ -1426,7 +1429,7 @@
a document
<footnote>
<para>… or maybe even a section of a book …</para>
- </footnote>
+ </footnote>
about how to use keywords, and you don't want Subversion to
substitute your beautiful examples of un-substituted keyword
anchors!</para>
@@ -1449,7 +1452,7 @@
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.
</programlisting>
-
+
<para>With no <literal>svn:keywords</literal> property set on
that file, Subversion will do nothing special. Now, let's
enable substitution of the
@@ -1459,7 +1462,7 @@
$ svn propset svn:keywords "Date Author" weather.txt
property 'svn:keywords' set on 'weather.txt'
$
-</screen>
+</screen>
<para>Now you have made a local property modification on the
<filename>weather.txt</filename> file. You will see no
@@ -1512,7 +1515,7 @@
$Rev$
Cumulus clouds are appearing more frequently as summer approaches.
</screen>
-
+
<para>If someone else now commits a change to
<filename>weather.txt</filename>, your copy of that file
will continue to display the same substituted keyword value
@@ -1532,7 +1535,7 @@
speaking, Subversion only uses this knowledge to determine
if contextual difference reports for that file are
possible. Otherwise, to Subversion, bytes are bytes.</para>
-
+
<para>This means that by default, Subversion doesn't pay any
attention to the type of <firstterm>end-of-line (EOL)
markers</firstterm> used in your files. Unfortunately,
@@ -1649,7 +1652,7 @@
</listitem>
</varlistentry>
</variablelist>
-
+
</sect3>
<sect3 id="svn.advanced.props.special.externals">
@@ -1760,7 +1763,7 @@
See <xref linkend="svn.advanced.confarea.opts.config"/> for more about
configuring that support.</para>
- </sect2>
+ </sect2>
</sect1>
<!-- ================================================================= -->
@@ -1807,7 +1810,7 @@
<!-- =============================================================== -->
<sect2 id="svn.advanced.locking.creation">
<title>Creating locks</title>
-
+
<para>In the Subversion repository, a
<firstterm>lock</firstterm> is a piece of metadata which
grants exclusive access to one user to change a file. This
@@ -1819,7 +1822,7 @@
commit transaction attempts to modify or delete the file (or
delete a parent of the file), the repository will demand two
pieces of information:</para>
-
+
<orderedlist>
<listitem><para><emphasis role="bold">User
authentication</emphasis>. The client performing the commit
@@ -1831,7 +1834,7 @@
exactly which lock it's using.</para>
</listitem>
</orderedlist>
-
+
<para>An example is in order, to demonstrate. Let's say that
Harry has decided to change a JPEG image. To prevent other
people from committing changes to the file, he locks the file
@@ -2097,7 +2100,7 @@
UUID Token: opaquelocktoken:c32b4d88-e8fb-2310-abb3-153ff1236923
Owner: frank
Created: 2005-06-15 13:29:18 -0500 (Wed, 15 Jun 2005)
-Expires:
+Expires:
Comment (1 line):
Still improving the yellow color.
@@ -2105,7 +2108,7 @@
UUID Token: opaquelocktoken:fc2b4dee-98f9-0310-abf3-653ff3226e6b
Owner: harry
Created: 2005-02-16 13:29:18 -0500 (Wed, 16 Feb 2005)
-Expires:
+Expires:
Comment (1 line):
Need to make a quick tweak to this image.
@@ -2151,7 +2154,7 @@
passes <option>--force</option>, the authentication and
authorization requirements are ignored, and the remote lock is
broken.</para>
-
+
<para>Of course, simply breaking a lock may not be enough. In
the running example, Sally may not only want to break Harry's
long-forgotten lock, but re-lock the file for her own use.
@@ -2210,7 +2213,7 @@
<sidebar>
<title>Locking Policies</title>
-
+
<para>Different systems have different notions of how strict
a lock should be. Some folks argue that locks must be
strictly enforced at all costs, releasable only by the
@@ -2263,7 +2266,7 @@
Regardless, her changes aren't mergeable with Harry's. One of
these two people has to throw away their work, and a lot of
time has been wasted.</para>
-
+
<para>Subversion's solution to this problem is provide a
mechanism to remind users that a file ought to be locked
<emphasis>before</emphasis> the editing begins.</para>
@@ -2276,7 +2279,7 @@
the lock is released—either explicitly unlocked, or
released via commit—the file returns to read-only
again.</para>
-
+
<para>The theory, then, is that if the image file has this
property attached, then Sally would immediately notice
something is strange when she opens the file for editing. Her
@@ -2392,7 +2395,7 @@
Frabnaggilywort releases a 1.0 version, and is downloaded and
used daily by hordes of people aiming to improve their
lives.</para>
-
+
<para>It's a nice story, really, but it doesn't end there.
Entrepreneur that you are, you've already got another think in
the tank. So you make a new directory,
@@ -2452,23 +2455,45 @@
sorts, and we know <emphasis>exactly</emphasis> where to
go.</para>
- <para>Subversion performs a fairly straightforward algorithm when
- using peg and operative revisions to find real stuff to work on.
- First, the path associated with the peg revision is located in
- that revision in the repository. From there, Subversion begins
- stepping backwards through historical predecessors of the object
- located at that path and peg revision. Each of these
- predecessors represents an earlier version of the object, and
- each stores a record of which revision it was created in, and at
- what path. So, while traversing the set of predecessors,
- Subversion notices whenever one of them is the youngest version
- of the object to exist as of one of the operative revisions, and
- if so, maps that operative revision to the created path/created
- revision pair of the predecessor. The algorithm terminates
- either when all the operative revisions have been mapped to real
- object locations, or once there are no more predecessors to
- traverse, in which case any unmapped operative revisions are
- marked as invalid for the object being operated on.</para>
+ <sidebar>
+ <title>The "peg-revision" algorithm</title>
+
+ <para>When the commandline client sees a command of the
+ form:</para>
+
+ <screen>
+$ svn <replaceable>command</replaceable> -r <replaceable>OPERATIVE-REV</replaceable> item@<replaceable>PEG-REV</replaceable>
+</screen>
+
+ <para>...it performs the following algorithm:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Go to revision <replaceable>PEG-REV</replaceable>, and
+ find <replaceable>item</replaceable>. This locates a unique
+ object in the repository.</para>
+ </listitem>
+
+ <listitem>
+ <para>Trace the object's history backwards (through any
+ possible renames) to its ancestor in
+ revision <replaceable>OPERATIVE-REV</replaceable>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Perform the requested action on that ancestor,
+ wherever it is located, or whatever its name might
+ be.</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>Remember that even when you don't explicitly supply a
+ peg-revision, it's still present. It defaults to BASE for
+ working copy items, and to HEAD for URLs.</para>
+
+ </sidebar>
<para>Say that long ago we created our repository, and in revision 1
added our first <filename>concept</filename> directory, plus an
@@ -2493,7 +2518,7 @@
revision, you run:</para>
<screen>
-$ svn cat -r 1 concept/IDEA
+$ svn cat -r 1 concept/IDEA
subversion/libsvn_client/ra.c:775: (apr_err=20014)
svn: Unable to find repository location for 'concept/IDEA' in revision 1
</screen>
@@ -2565,8 +2590,8 @@
$ svn diff -r 4:10 http://svn.red-bean.com/projects/frabnaggilywort/IDEA@20
Index: frabnaggilywort/IDEA
===================================================================
---- frabnaggilywort/IDEA (revision 4)
-+++ frabnaggilywort/IDEA (revision 10)
+--- frabnaggilywort/IDEA (revision 4)
++++ frabnaggilywort/IDEA (revision 10)
@@ -1,5 +1,5 @@
-The idea behind this project is to come up with a piece of software
-that can frab a naggily wort. Frabbing naggily worts is tricky
@@ -2591,7 +2616,7 @@
<!-- ================================================================= -->
<sect1 id="svn.advanced.externals">
<title>Externals Definitions</title>
-
+
<para>Sometimes it is useful to construct a working copy that is
made out of a number of different checkouts. For example, you
may want different subdirectories to come from different
@@ -2611,7 +2636,7 @@
definitions in groups using the <literal>svn:externals</literal>
property. You can create or modify this property using
<command>svn propset</command> or <command>svn
- propedit</command> (see <xref linkend="svn.advanced.props.why"/>).
+ propedit</command> (see <xref linkend="svn.advanced.props.why"/>).
It can be set on any versioned directory,
and its value is a multi-line table of subdirectories (relative
to the versioned directory on which the property is set) and
@@ -2749,7 +2774,7 @@
This scenario plays itself out all the time—anywhere that
the information generated by one group of people has a direct
effect on that which is generated by another group.</para>
-
+
<para>For example, software developers might be working on an
application which makes use of a third-party library.
Subversion has just such a relationship with the Apache Portable
@@ -2799,7 +2824,7 @@
your own version control system that contains information
provided by a third-party entity, or vendor. Each version of
the vendor's data that you decide to absorb into your project is
- called a <firstterm>vendor drop</firstterm>.</para>
+ called a <firstterm>vendor drop</firstterm>.</para>
<para>Vendor branches provide two key benefits. First, by storing
the currently supported vendor drop in your own version control
@@ -2848,7 +2873,7 @@
-m 'importing initial 1.0 vendor drop'
…
</screen>
-
+
<para>We now have the current version of the libcomplex source
code in <filename>/vendor/libcomplex/current</filename>. Now,
we tag that version (see <xref linkend="svn.branchmerge.tags" />)
@@ -2858,7 +2883,7 @@
<filename>calc</filename> project directory. It is in this
copied version of the vendor data that we will make our
customizations.</para>
-
+
<screen>
$ svn copy http://svn.example.com/repos/vendor/libcomplex/current \
http://svn.example.com/repos/vendor/libcomplex/1.0 \
@@ -2892,7 +2917,7 @@
approach the problem from the other direction, applying the
changes made to libcomplex between versions 1.0 and 1.1 to our
modified copy of it.</para>
-
+
<para>To perform this upgrade, we checkout a copy of our vendor
branch, and replace the code in the
<filename>current</filename> directory with the new libcomplex
@@ -3110,7 +3135,7 @@
<!-- =============================================================== -->
<sect2 id="svn.advanced.l10n.understanding">
<title>Understanding locales</title>
-
+
<para>Most modern operating systems have a notion of the
<quote>current locale</quote>—that is, the region or
country whose localization conventions are honored. These
@@ -3244,7 +3269,7 @@
svn: Can't convert string from 'UTF-8' to native encoding:
…
</screen>
-
+
<para>Errors like this typically occur when the Subversion
client has received a UTF-8 string from the repository, but
not all of the characters in that string can be represented
@@ -3385,7 +3410,7 @@
# Configure your favorite diff program here.
DIFF="/usr/local/bin/my-diff-tool"
-# Subversion provides the paths we need as the sixth and seventh
+# Subversion provides the paths we need as the sixth and seventh
# parameters.
LEFT=${6}
RIGHT=${7}
@@ -3407,7 +3432,7 @@
REM Configure your favorite diff program here.
SET DIFF="C:\Program Files\Funky Stuff\My Diff Tool.exe"
-REM Subversion provides the paths we need as the sixth and seventh
+REM Subversion provides the paths we need as the sixth and seventh
REM parameters.
SET LEFT=%6
SET RIGHT=%7
@@ -3444,7 +3469,7 @@
conflicts remain in the output—any other errorcode is
considered a fatal error.</para>
- <para><xref linkend="svn.advanced.externaldifftools.diff3.ex-1"/>
+ <para><xref linkend="svn.advanced.externaldifftools.diff3.ex-1"/>
and <xref linkend="svn.advanced.externaldifftools.diff3.ex-2"/> are
templates for external merge tool wrappers in the Bourne shell
and Windows batch scripting languages, respectively.</para>
@@ -3457,7 +3482,7 @@
# Configure your favorite diff3/merge program here.
DIFF3="/usr/local/bin/my-merge-tool"
-# Subversion provides the paths we need as the ninth, tenth, and eleventh
+# Subversion provides the paths we need as the ninth, tenth, and eleventh
# parameters.
MINE=${9}
OLDER=${10}
@@ -3482,7 +3507,7 @@
REM Configure your favorite diff3/merge program here.
SET DIFF3="C:\Program Files\Funky Stuff\My Merge Tool.exe"
-REM Subversion provides the paths we need as the ninth, tenth, and eleventh
+REM Subversion provides the paths we need as the ninth, tenth, and eleventh
REM parameters. But we only have access to nine parameters at a time, so we
REM shift our nine-parameter window twice to let us get to what we need.
SHIFT
@@ -3528,7 +3553,7 @@
repositories) must, in accordance with convention, have either a
server name of <literal>localhost</literal> or no server name at
all:</para>
-
+
<screen>
$ svn checkout file:///path/to/repos
…
@@ -3551,12 +3576,12 @@
C:\> svn checkout "file:///X|/path/to/repos"
…
</screen>
-
+
<para>In the second syntax, you need to quote the URL so that the
vertical bar character is not interpreted as a pipe. Also, note
that a URL uses ordinary slashes even though the native
(non-URL) form of a path on Windows uses backslashes.</para>
-
+
<para>Finally, it should be noted that the Subversion client will
automatically encode URLs as necessary, just like a web browser
does. For example, if a URL contains a space or upper-ASCII
@@ -3565,7 +3590,7 @@
<screen>
$ svn checkout "http://host/path with space/project/espaц╠a"
</screen>
-
+
<para>…then Subversion will escape the unsafe characters
and behave as if you had typed:</para>
@@ -3578,11 +3603,11 @@
argument to the <command>svn</command> program.</para>
</sect1>
-
+
</chapter>
<!--
-local variables:
+local variables:
sgml-parent-document: ("book.xml" "chapter")
end:
vim: tw=78:ft=svnbook
Modified: trunk/src/ru/book/ch08.xml
==============================================================================
--- trunk/src/ru/book/ch08.xml (original)
+++ trunk/src/ru/book/ch08.xml Sat Jul 23 08:39:53 2005
@@ -3,10 +3,13 @@
<!-- @ENGLISH {{{
<title>Developer Information</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<title>Информация для разработчиков</title>
+ <chapterinfo>
+ <edition>1563</edition>
+ </chapterinfo>
<!-- See also svn.preface.organization -->
-
+
<simplesect>
<para>Subversion is an open-source software project developed
under an Apache-style software license. The project is
@@ -17,7 +20,7 @@
Volunteers are encouraged to assist in any way they can, whether
that means finding and diagnosing bugs, refining existing source
code, or fleshing out whole new features.</para>
-
+
<para>This chapter is for those who wish to assist in the
continued evolution of Subversion by actually getting their
hands dirty with the source code. We will cover some of the
@@ -59,7 +62,7 @@
</thead>
<tbody>
<row>
- <entry>libsvn_client</entry>
+ <entry>libsvn_client</entry>
<entry>Primary interface for client programs</entry>
</row>
<row>
@@ -335,7 +338,7 @@
library, are not strictly related to implementing a versioning
filesystem, which is why it was placed into its own
library.</para>
-
+
<para>Developers who wish to use the libsvn_repos API will find
that it is not a complete wrapper around the filesystem
interface. That is, only certain major events in the general
@@ -397,14 +400,14 @@
/* Now that we have started a new Subversion transaction, get a root
object that represents that transaction. */
SVN_ERR (svn_fs_txn_root (&txn_root, txn, pool));
-
+
/* Create our new directory under the transaction root, at the path
NEW_DIRECTORY. */
SVN_ERR (svn_fs_make_dir (txn_root, new_directory, pool));
/* Commit the transaction, creating a new revision of the filesystem
which includes our added directory path. */
- err = svn_repos_fs_commit_txn (&conflict_str, repos,
+ err = svn_repos_fs_commit_txn (&conflict_str, repos,
&youngest_rev, txn, pool);
if (! err)
{
@@ -415,24 +418,24 @@
else if (err->apr_err == SVN_ERR_FS_CONFLICT)
{
/* Uh-oh. Our commit failed as the result of a conflict
- (someone else seems to have made changes to the same area
+ (someone else seems to have made changes to the same area
of the filesystem that we tried to modify). Print an error
message. */
printf ("A conflict occurred at path '%s' while attempting "
- "to add directory '%s' to the repository at '%s'.\n",
+ "to add directory '%s' to the repository at '%s'.\n",
conflict_str, new_directory, repos_path);
}
else
{
/* Some other error has occurred. Print an error message. */
printf ("An error occurred while attempting to add directory '%s' "
- "to the repository at '%s'.\n",
+ "to the repository at '%s'.\n",
new_directory, repos_path);
}
/* Return the result of the attempted commit to our caller. */
return err;
-}
+}
</programlisting>
</example>
@@ -456,7 +459,7 @@
belong in the core filesystem library itself. (For more
information regarding Subversion's repository hooks, see <xref
linkend="svn.reposadmin.create.hooks" />.)</para>
-
+
<para>The hook mechanism requirement is but one of the reasons
for the abstraction of a separate repository library from the
rest of the filesystem code. The libsvn_repos API provides
@@ -521,7 +524,7 @@
determine which RA modules are available to the Subversion
command-line client, and what protocols they claim to support,
by running <command>svn --version</command>:</para>
-
+
<screen>
$ svn --version
svn, version 1.0.1 (r9023)
@@ -541,7 +544,7 @@
* ra_svn : Module for accessing a repository using the svn network protocol.
- handles 'svn' schema
</screen>
-
+
<sect3 id="svn.developer.layerlib.ra.dav">
<title>RA-DAV (Repository Access Using HTTP/DAV)</title>
@@ -554,7 +557,7 @@
other key components in this particular configuration of the
Repository Access Layer—the powerful Apache HTTP
Server, and the Neon HTTP/WebDAV client library.</para>
-
+
<para>Subversion's primary network server is the Apache HTTP
Server. Apache is a time-tested, extensible open-source
server process that is ready for serious use. It can
@@ -568,7 +571,7 @@
traffic to pass through, sysadmins typically don't even have
to change their firewall configurations to allow Subversion
to work.</para>
-
+
<para>Subversion uses HTTP and WebDAV (with DeltaV) to
communicate with an Apache server. You can read more about
this in the WebDAV section of this chapter, but in short,
@@ -599,7 +602,7 @@
mod_dav_fs that comes with Apache. So ultimately, the
client is communicating with mod_dav_svn, which binds
directly to the Subversion Repository Layer.</para>
-
+
<para>That was a simplified description of the actual
exchanges taking place, though. For example, the Subversion
repository might be protected by Apache's authorization
@@ -615,9 +618,9 @@
well. If sufficient authentication information cannot be
supplied, the request will ultimately fail, and the client
will report the failure to the user.</para>
-
+
<!-- A diagram here? -->
-
+
<para>By using Neon and Apache, Subversion gets free
functionality in several other complex areas, too. For
example, if Neon finds the OpenSSL libraries, it allows the
@@ -633,7 +636,7 @@
(for example, when a repository has been moved to a new
canonical URL) and taking advantage of HTTP
pipelining.</para>
-
+
<!-- Talk about another difference between CVS and Subversion.
CVS users had to specify which auth mechanism to use
(with :ext: vs. :pserver:) and whether or not to use
@@ -723,7 +726,7 @@
<!-- =============================================================== -->
<sect2 id="svn.developer.layerlib.client">
<title>Client Layer</title>
-
+
<para>On the client side, the Subversion working copy is where
all the action takes place. The bulk of functionality
implemented by the client-side libraries exists for the sole
@@ -922,7 +925,7 @@
<!-- =============================================================== -->
<sect2 id="svn.developer.usingapi.otherlangs">
- <title>Using Languages Other than C and C++</title>
+ <title>Using Languages Other than C and C++</title>
<para>If you are interested in using the Subversion libraries in
conjunction with something other than a C program—say a
@@ -969,12 +972,12 @@
def crawl_filesystem_dir(root, directory, pool):
"""Recursively crawl DIRECTORY under ROOT in the filesystem, and return
- a list of all the paths at or below DIRECTORY. Use POOL for all
+ a list of all the paths at or below DIRECTORY. Use POOL for all
allocations."""
# Print the name of this path.
print directory + "/"
-
+
# Get the directory entries for DIRECTORY.
entries = svn.fs.svn_fs_dir_entries(root, directory, pool)
@@ -1005,7 +1008,7 @@
def crawl_youngest(pool, repos_path):
"""Open the repository at REPOS_PATH, and recursively crawl its
youngest revision."""
-
+
# Open the repository at REPOS_PATH, and get a reference to its
# versioning filesystem.
repos_obj = svn.repos.svn_repos_open(repos_path, pool)
@@ -1013,13 +1016,13 @@
# Query the current youngest revision.
youngest_rev = svn.fs.svn_fs_youngest_rev(fs_obj, pool)
-
+
# Open a root object representing the youngest (HEAD) revision.
root_obj = svn.fs.svn_fs_revision_root(fs_obj, youngest_rev, pool)
# Do the recursive crawl.
crawl_filesystem_dir(root_obj, "", pool)
-
+
if __name__ == "__main__":
# Check for sane usage.
if len(sys.argv) != 2:
@@ -1115,7 +1118,7 @@
text_status = generate_status_code(status.text_status)
prop_status = generate_status_code(status.prop_status)
print '%s%s %s' % (text_status, prop_status, path[wc_path_len + 1:])
-
+
# Do the status crawl, using _status_callback() as our callback function.
svn.client.svn_client_status(wc_path, None, _status_callback,
1, verbose, 0, 0, ctx, pool)
@@ -1129,7 +1132,7 @@
--verbose, -v : Show all statuses, even uninteresting ones
""" % (os.path.basename(sys.argv[0])))
sys.exit(errorcode)
-
+
if __name__ == '__main__':
# Parse command-line options.
try:
@@ -1144,7 +1147,7 @@
verbose = 1
if len(args) != 1:
usage_and_exit(2)
-
+
# Call the app-wrapper, which takes care of APR initialization/shutdown
# and the creation and cleanup of our top-level memory pool.
svn.core.run_app(do_status, os.path.normpath(args[0]), verbose)
@@ -1173,7 +1176,7 @@
<!-- ================================================================= -->
<sect1 id="svn.developer.insidewc">
<title>Inside the Working Copy Administration Area</title>
-
+
<para>As we mentioned earlier, each directory of a Subversion
working copy contains a special subdirectory called
<filename>.svn</filename> which houses administrative data about
@@ -1490,7 +1493,7 @@
children to the FILES array, and doing some task to each path
encountered. Use POOL for the all temporary allocations, and store
the hash paths in the same pool as the hash itself is allocated in. */
-static apr_status_t
+static apr_status_t
crawl_dir (apr_array_header_t *files,
const char *directory,
apr_pool_t *pool)
@@ -1582,7 +1585,7 @@
complexity that would be present if this function had to
<function>alloc()</function> and <function>free()</function>
every single piece of data used!</para>
-
+
<para>Pools might not be ideal for every application, but they are
extremely useful in Subversion. As a Subversion developer,
you'll need to grow comfortable with pools and how to wield them
@@ -1598,7 +1601,7 @@
<!-- ================================================================= -->
<sect1 id="svn.developer.contrib">
<title>Contributing to Subversion</title>
-
+
<para>The official source of information about the Subversion
project is, of course, the project's website at <systemitem
class="url">http://subversion.tigris.org/</systemitem>. There
@@ -1612,7 +1615,7 @@
<!-- =============================================================== -->
<sect2 id="svn.developer.contrib.join">
<title>Join the Community</title>
-
+
<para>The first step in community participation is to find a way
to stay on top of the latest happenings. To do this most
effectively, you will want to subscribe to the main developer
@@ -1640,13 +1643,13 @@
will find the current list of known bugs and feature requests.
If you want to start with something small, look for issues
marked as <quote>bite-sized</quote>.</para>
-
+
</sect2>
-
+
<!-- =============================================================== -->
<sect2 id="svn.developer.contrib.get-code">
<title>Get the Source Code</title>
-
+
<para>To edit the code, you need to have the code. This means
you need to check out a working copy from the public
Subversion source repository. As straightforward as that
@@ -1699,7 +1702,7 @@
<!-- =============================================================== -->
<sect2 id="svn.developer.contrib.hacking">
<title>Become Familiar with Community Policies</title>
-
+
<para>Now that you have a working copy containing the latest
Subversion source code, you will most certainly want to take a
cruise through the <filename>HACKING</filename> file in that
@@ -1730,7 +1733,7 @@
<!-- =============================================================== -->
<sect2 id="svn.developer.contrib.code-and-test">
<title>Make and Test Your Changes</title>
-
+
<para>With the code and community policy understanding in hand,
you are ready to make your changes. It is best to try to make
smaller but related sets of changes, even tackling larger
@@ -1780,7 +1783,7 @@
<!-- =============================================================== -->
<sect2 id="svn.developer.contrib.submit">
<title>Donate Your Changes</title>
-
+
<para>After making your modifications to the source code,
compose a clear and concise log message to describe those
changes and the reasons for them. Then, send an email to the
@@ -1801,7 +1804,7 @@
</chapter>
<!--
-local variables:
+local variables:
sgml-parent-document: ("book.xml" "chapter")
end:
vim: tw=78:ft=svnbook
Modified: trunk/src/ru/book/ch09.xml
==============================================================================
--- trunk/src/ru/book/ch09.xml (original)
+++ trunk/src/ru/book/ch09.xml Sat Jul 23 08:39:53 2005
@@ -5,6 +5,9 @@
<title>Subversion Complete Reference</title>
@ENGLISH }}} -->
<title>Полное справочное руководство по Subversion</title>
+ <chapterinfo>
+ <edition>1530</edition>
+ </chapterinfo>
<!-- See also svn.preface.organization -->
<!-- @ENGLISH {{{
Modified: trunk/src/ru/book/foreword.xml
==============================================================================
--- trunk/src/ru/book/foreword.xml (original)
+++ trunk/src/ru/book/foreword.xml Sat Jul 23 08:39:53 2005
@@ -7,7 +7,10 @@
<preface id="svn.foreword">
<!-- @ENGLISH {{{
<title>Foreword</title>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
+ <prefaceinfo>
+ <edition>1563</edition>
+ </prefaceinfo>
<title>Предисловие</title>
<simplesect>
@@ -17,11 +20,11 @@
composed not of the questions people actually asked, but of the
questions the FAQ's author <emphasis>wished</emphasis> people
had asked. Perhaps you've seen the type before:</para>
- @ ENGLISH }}} -->
- <para>Скверный список ответов на часто задаваемые вопросы (ЧаВо)
+ @ENGLISH }}} -->
+ <para>Скверный список ответов на часто задаваемые вопросы (ЧаВо)
состоит не из тех вопросов, которые были заданы на самом деле,
- а из тех, на которые автору такого списка <emphasis>хотелось
- бы</emphasis> дать ответ. Вы наверняка сталкивались с чем-то
+ а из тех, на которые автору такого списка <emphasis>хотелось
+ бы</emphasis> дать ответ. Вы наверняка сталкивались с чем-то
подобным:</para>
<!-- @ENGLISH {{{
@@ -29,9 +32,9 @@
<para>Q: How can I use Glorbosoft XYZ to maximize team
productivity?</para>
</blockquote>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<blockquote>
- <para>ВОПРОС: Как Glorbosoft XYZ поможет поднять
+ <para>ВОПРОС: Как Glorbosoft XYZ поможет поднять
производительность труда наших сотрудников?</para>
</blockquote>
@@ -44,12 +47,12 @@
<quote><literal>Increase Productivity</literal></quote>,
then…</para>
</blockquote>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<blockquote>
- <para>ОТВЕТ: Многие наши клиенты хотят знать, как поднять
- производительность труда при помощи наших патентованных офисных
- инноваций для коллективной работы. Ответ простой: выберите меню
- <quote><literal>Файл</literal></quote> и перейдите к пункту
+ <para>ОТВЕТ: Многие наши клиенты хотят знать, как поднять
+ производительность труда при помощи наших патентованных офисных
+ инноваций для коллективной работы. Ответ простой: выберите меню
+ <quote><literal>Файл</literal></quote> и перейдите к пункту
<quote><literal>Поднять производительность</literal></quote>,
затем…</para>
</blockquote>
@@ -71,24 +74,24 @@
observant attitude of a field naturalist. No grand
hypothesizing, no visionary pronouncements here—open eyes
and accurate note-taking are what's needed most.</para>
- @ ENGLISH }}} -->
- <para>Проблема подобных ЧаВо заключается в том, что они вовсе не
- являются ответами на <emphasis>часто задаваемые</emphasis> вопросы
- в буквальном смысле. Какой нормальный человек будет звонить в
- службу технической поддержки и спрашивать: <quote>как нам поднять
- производительность труда</quote>? Вопросы, которые обычно звучат
- в таких случаях, узко специализированы, например: <quote>Как
+ @ENGLISH }}} -->
+ <para>Проблема подобных ЧаВо заключается в том, что они вовсе не
+ являются ответами на <emphasis>часто задаваемые</emphasis> вопросы
+ в буквальном смысле. Какой нормальный человек будет звонить в
+ службу технической поддержки и спрашивать: <quote>как нам поднять
+ производительность труда</quote>? Вопросы, которые обычно звучат
+ в таких случаях, узко специализированы, например: <quote>Как
настроить календарь для отправки напоминаний за два дня вместо
- одного?</quote>. Однако, создать список якобы заданных вопросов
- намного проще, чем подобрать настоящие вопросы из реальной жизни.
- Такая работа требует упорства и организованности: вопросы,
- возникающие в процессе жизненного цикла программного продукта, и
- ответы на них должны бережно сохраняться и систематизироваться,
- пока на их основе не будет создано логически связанное и удобное
- для поиска единое целое, наилучшим образом отражающее опыт
- пользователей. Здесь требуется терпеливость и внимательность,
- присущие естествоиспытателю, а не великие гипотезы и провидческие
- заявления. Главное в этой работе—открытые глаза и
+ одного?</quote>. Однако, создать список якобы заданных вопросов
+ намного проще, чем подобрать настоящие вопросы из реальной жизни.
+ Такая работа требует упорства и организованности: вопросы,
+ возникающие в процессе жизненного цикла программного продукта, и
+ ответы на них должны бережно сохраняться и систематизироваться,
+ пока на их основе не будет создано логически связанное и удобное
+ для поиска единое целое, наилучшим образом отражающее опыт
+ пользователей. Здесь требуется терпеливость и внимательность,
+ присущие естествоиспытателю, а не великие гипотезы и провидческие
+ заявления. Главное в этой работе—открытые глаза и
аккуратное отношение к записям в блокноте.</para>
<!-- @ENGLISH {{{
@@ -100,15 +103,15 @@
What are the standard workflows to use with Subversion? Do
branches and tags work the same way as in other version control
systems? How can I find out who made a particular change?</para>
- @ ENGLISH }}} -->
- <para>В этой книге мне больше всего нравится то, что она именно так
+ @ENGLISH }}} -->
+ <para>В этой книге мне больше всего нравится то, что она именно так
и была написана, и это заметно на каждой её странице. Она является
- непосредственным результатом общения авторов с пользователями.
- Книга началась с того, что Бен Коллинз-Сассман как-то раз заметил
- в рассылке Subversion, что пользователи всё время задают одни и те
- же вопросы: какого порядка действий следует придерживаться при
- работе с Subversion; есть ли отличия от других систем управления
- версиями при работе с ветками и метками; как узнать, кем было
+ непосредственным результатом общения авторов с пользователями.
+ Книга началась с того, что Бен Коллинз-Сассман как-то раз заметил
+ в рассылке Subversion, что пользователи всё время задают одни и те
+ же вопросы: какого порядка действий следует придерживаться при
+ работе с Subversion; есть ли отличия от других систем управления
+ версиями при работе с ветками и метками; как узнать, кем было
выполнено то или иное изменение?</para>
<!-- @ENGLISH {{{
@@ -122,16 +125,16 @@
publish a full-length Subversion book, the path of least
resistance was obvious: just expand the Subversion
handbook.</para>
- @ ENGLISH }}} -->
- <para>Устав от ежедневного просмотра одних и тех же вопросов, Бен
- провёл месяц в напряжённой работе, и летом 2002 года появилось
- <citetitle>Руководство по Subversion</citetitle>—документ, в
- котором на 60 страницах описывались все основные приёмы работы с
- Subversion. Это руководство не претендовало на полноту, но оно
- было включено в поставку Subversion и помогало преодолеть
- начинающим пользователям первые трудности, с которыми они
- сталкивались. После того, как издательство O'Reilly and Associates
- решило выпустить полноценную книгу о Subversion, путь наименьшего
+ @ENGLISH }}} -->
+ <para>Устав от ежедневного просмотра одних и тех же вопросов, Бен
+ провёл месяц в напряжённой работе, и летом 2002 года появилось
+ <citetitle>Руководство по Subversion</citetitle>—документ, в
+ котором на 60 страницах описывались все основные приёмы работы с
+ Subversion. Это руководство не претендовало на полноту, но оно
+ было включено в поставку Subversion и помогало преодолеть
+ начинающим пользователям первые трудности, с которыми они
+ сталкивались. После того, как издательство O'Reilly and Associates
+ решило выпустить полноценную книгу о Subversion, путь наименьшего
сопротивления был очевиден: нужно было просто расширить
<citetitle>Руководство по Subversion</citetitle>.</para>
@@ -145,16 +148,16 @@
thousands of early adopters, and those users were giving tons of
feedback, not only about Subversion, but about its existing
documentation.</para>
- @ ENGLISH }}} -->
- <para>Таким образом, три соавтора новой книги получили необычную
- возможность. С одной стороны, перед ними была поставлена задача
- написать книгу в обычном смысле слова, от автора к читателю,
- начиная с содержания и первого черновика. Но, с другой стороны, у
- них также была возможность обращаться у устойчивому
- потоку—да что там говорить, к неуправляемому
- фонтану—материалу, поступающему от будущих читателей.
- Subversion уже был в то время в руках тысяч первых пользователей,
- которые давали множество отзывов не только о самом Subversion, но
+ @ENGLISH }}} -->
+ <para>Таким образом, три соавтора новой книги получили необычную
+ возможность. С одной стороны, перед ними была поставлена задача
+ написать книгу в обычном смысле слова, от автора к читателю,
+ начиная с содержания и первого черновика. Но, с другой стороны, у
+ них также была возможность обращаться у устойчивому
+ потоку—да что там говорить, к неуправляемому
+ фонтану—материалу, поступающему от будущих читателей.
+ Subversion уже был в то время в руках тысяч первых пользователей,
+ которые давали множество отзывов не только о самом Subversion, но
и о документации к нему.</para>
<!-- @ENGLISH {{{
@@ -178,28 +181,28 @@
with the unexpected, the examples honed from genuine use cases,
and most of all the sensitivity to the user's needs and the
user's point of view.</para>
- @ ENGLISH }}} -->
- <para>Пока шла работа над книгой, Бен, Майк и Брайан постоянно
- отслеживали рассылки и чаты, скрупулёзно отмечая проблемы, с
+ @ENGLISH }}} -->
+ <para>Пока шла работа над книгой, Бен, Майк и Брайан постоянно
+ отслеживали рассылки и чаты, скрупулёзно отмечая проблемы, с
которыми пользователи сталкивались в реальных жизненных ситуациях.
- Мониторинг подобных отзывов входит в их служебные обязанности в
- CollabNet, но в данном случае эта работа оказалась неоценимой при
- подготовке документации к Subversion. В основу написанной ими
- книги положен твёрдый фундамент опыта, а не зыбучие пески принятия
- желаемого за действительное; в этой книге соединяются лучшие
- качества руководства пользователя и списка ЧаВо. Эта
- двойственность может быть незаметна при первом прочтении книги.
- При чтении книги по порядку, от корки до корки, создаётся
- ощущение, что перед нами прямолинейное описание программного
- продукта. Нам предлагают общий обзор, непременный в таких случаях
- вводный курс, главу по администрированию, несколько тем для
- продвинутых пользователей и, само собой, справочник по командам и
- способы устранения проблем. Лишь возвращаясь к этой книге снова и
- снова, вы сможете оценить её самобытность: отличительные
- подробности, которые могут появиться лишь при встрече с
- неожиданными ситуациями, примеры, взятые из жизни и, самое
- главное, внимательность к нуждам пользователей и их точке
- зрения.</para>
+ Мониторинг подобных отзывов входит в их служебные обязанности в
+ CollabNet, но в данном случае эта работа оказалась неоценимой при
+ подготовке документации к Subversion. В основу написанной ими
+ книги положен твёрдый фундамент опыта, а не зыбучие пески принятия
+ желаемого за действительное; в этой книге соединяются лучшие
+ качества руководства пользователя и списка ЧаВо. Эта
+ двойственность может быть незаметна при первом прочтении книги.
+ При чтении книги по порядку, от корки до корки, создаётся
+ ощущение, что перед нами прямолинейное описание программного
+ продукта. Нам предлагают общий обзор, непременный в таких случаях
+ вводный курс, главу по администрированию, несколько тем для
+ продвинутых пользователей и, само собой, справочник по командам и
+ способы устранения проблем. Лишь возвращаясь к этой книге снова и
+ снова, вы сможете оценить её самобытность: отличительные
+ подробности, которые могут появиться лишь при встрече с
+ неожиданными ситуациями, примеры, взятые из жизни и, самое
+ главное, внимательность к нуждам пользователей и их точке
+ зрения.</para>
<!-- @ENGLISH {{{
<para>Of course, no one can promise that this book will answer
@@ -220,32 +223,32 @@
because you can help them. With Subversion as with all active
free software projects, <emphasis>you are not
alone</emphasis>.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Конечно, никто не может пообещать, что эта книга ответит на
- все ваши вопросы о Subversion. Иногда точность, с которой книга
- предвосхищает ваши вопросы, может показаться телепатической, но
- вполне может случиться и так, что вы столкнётесь с пробелом в
- коллективном знании сообщества и уйдёте с пустыми руками. Лучшее,
- что можно сделать в такой ситуации—отправить письмо на адрес
- <email>users at subversion.tigris.org</email> с описанием вашей
- проблемы. Авторы по-прежнему читают эту рассылку, они внимательно
- наблюдают за вопросами, и, кроме того, сообщество пользователей не
- ограничивается тремя людьми, имена которых вынесены на обложку
- этой книги—многие подписчики рассылки также помогают вносить
- исправления и предлагают новый материал для книги. С точки зрения
- сообщества, решение вашей конкретной проблемы—это лишь
- приятный побочный эффект значительно более обширного проекта, а
- именно, постепенного исправления данной книги и самого Subversion
- с тем, чтобы как можно ближе соответствовать практике. Эти люди с
- удовольствием выслушают вас не только потому, что могут помочь, но
- и потому, что вы можете помочь им. При работе с Subversion, как и
- с любым другим бурно развивающимся свободным программным
- обеспечением, <emphasis>вы не будете чувствовать себя
+ все ваши вопросы о Subversion. Иногда точность, с которой книга
+ предвосхищает ваши вопросы, может показаться телепатической, но
+ вполне может случиться и так, что вы столкнётесь с пробелом в
+ коллективном знании сообщества и уйдёте с пустыми руками. Лучшее,
+ что можно сделать в такой ситуации—отправить письмо на адрес
+ <email>users at subversion.tigris.org</email> с описанием вашей
+ проблемы. Авторы по-прежнему читают эту рассылку, они внимательно
+ наблюдают за вопросами, и, кроме того, сообщество пользователей не
+ ограничивается тремя людьми, имена которых вынесены на обложку
+ этой книги—многие подписчики рассылки также помогают вносить
+ исправления и предлагают новый материал для книги. С точки зрения
+ сообщества, решение вашей конкретной проблемы—это лишь
+ приятный побочный эффект значительно более обширного проекта, а
+ именно, постепенного исправления данной книги и самого Subversion
+ с тем, чтобы как можно ближе соответствовать практике. Эти люди с
+ удовольствием выслушают вас не только потому, что могут помочь, но
+ и потому, что вы можете помочь им. При работе с Subversion, как и
+ с любым другим бурно развивающимся свободным программным
+ обеспечением, <emphasis>вы не будете чувствовать себя
одиноким</emphasis>.</para>
<!-- @ENGLISH {{{
<para>Let this book be your first companion.</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>Пусть эта книга будет вашим верным помощником.</para>
<!-- @ENGLISH {{{
@@ -254,7 +257,7 @@
<firstname>Karl</firstname>
<surname>Fogel</surname>
</author>, Chicago, 14 March, 2004</para>
- @ ENGLISH }}} -->
+ @ENGLISH }}} -->
<para>—
<author>
Modified: trunk/src/ru/sync.py
==============================================================================
--- trunk/src/ru/sync.py (original)
+++ trunk/src/ru/sync.py Sat Jul 23 08:39:53 2005
@@ -1,55 +1,91 @@
#!/usr/bin/env python
-import sys, os, string
-
-subcmd = ("diff", "di", "log", "merge")
+import sys, os, string, getopt, re, glob
def usage(err_msg):
stream = err_msg and sys.stderr or sys.stdout
if err_msg:
stream.write("ERROR: %s\n\n" % (err_msg))
- stream.write("""Usage: %(name)s <subcommand> [filename]
-
-Valid subcommands: %(valid_subcmd)s
+ stream.write("""Usage: %s [-f <filename>] [-lv]
-Examples:
- %(name)s log book/foreword.xml
- %(name)s diff
-""" % { 'name' : os.path.basename(sys.argv[0]), 'valid_subcmd' : subcmd })
+Options:
+ -f: File which needs to be synchronized
+ -l: List all files and revisions with which they are sinchronized
+ -v: Print incorporated revision number of the book (for use in Makefile)
+""" % (os.path.basename(sys.argv[0])))
sys.exit(err_msg and 1 or 0)
-def main():
+def get_last(fname):
+ f = file(fname)
+ for line in f:
+ if re.search('<edition>([0-9]+)</edition>', line):
+ return int(re.sub(' *</*[a-z]*>', '', line))
+
+def set_last(fname, last):
+ f = file(fname)
+ tf = file(fname+'.temp', 'w')
+ for line in f:
+ if re.search('<edition>([0-9]+)</edition>', line):
+ tf.write(re.sub('<edition>([0-9]+)</edition>', '<edition>'+last+'</edition>', line))
+ else:
+ tf.write(line)
+ f.close()
+ tf.close()
+ os.rename(fname+'.temp', fname)
+
+def get_base():
+ for line in os.popen('svn info'):
+ if re.match('Revision: ', line):
+ return int(re.sub('Revision: ', '', line))
+
+def get_list():
+ fnames = glob.glob('*.xml')
+ fnames.sort()
+ for file in fnames:
+ print file, '\t', get_last(file)
+
+def get_version():
+ fnames = glob.glob('*.xml')
+ rev = []
+ for file in fnames:
+ r = get_last(file)
+ if r:
+ rev.append(r)
+ r_max = max(rev)
+ r_min = min(rev)
+ if r_max == r_min:
+ sys.stdout.write(str(r_max))
+ else:
+ sys.stdout.write(str(r_min)+':'+str(r_max))
+def main():
if len(sys.argv) < 2:
usage(None)
-
- if not sys.argv[1] in subcmd:
- usage("Invalid syntax")
-
- book_src_url = "https://svn.red-bean.com/svnbook/trunk/src/en/book/"
- fd = open("LAST_UPDATED", "r")
- last_up_rev = fd.readline()
- fd.close()
-
- print "svn update"
- os.system("svn update")
- os.chdir("book")
-
- if len(sys.argv) > 2:
- cmd = "svn " + sys.argv[1] + " -r " + last_up_rev + ":HEAD " + book_src_url + \
- os.path.basename(sys.argv[2])
- print cmd
- os.system(cmd)
- else:
- cmd = "svn " + sys.argv[1] + " -r " + last_up_rev + ":HEAD " + book_src_url
- print cmd
- os.system(cmd)
- if sys.argv[1] == 'merge':
- if string.lower(raw_input("Whether to udate 'LAST_UPDATED'? [y/N] ")) == 'y':
- os.chdir("..")
- cmd = "svnversion . --no-newline > LAST_UPDATED"
- print cmd
- os.system(cmd)
+ os.chdir('book')
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "f:lv")
+ except:
+ usage('Invalid syntax')
+ fname = ''
+ for o, a in opts:
+ if o == '-f':
+ fname = os.path.basename(a)
+ elif o == '-l':
+ return get_list()
+ elif o == '-v':
+ return get_version()
+ cmd = string.Template('svn $a -r $r1:$r2 https://svn.red-bean.com/svnbook/trunk/src/en/book/$t')
+ last = get_last(fname)
+ base = get_base()
+ print ('########################################################################')
+ print 'Sync r%(r1)s:r%(r2)s' % { 'r1' : last, 'r2' : base }
+ diff = os.popen(cmd.substitute(a='diff', r1=last, r2=base, t=fname)).read()
+ if len(diff) != 0:
+ print os.popen(cmd.substitute(a='log', r1=last, r2=base, t=fname)).read()
+ raw_input('Above is log message, to see diff press ENTER')
+ print diff
+ print os.popen(cmd.substitute(a='merge', r1=last, r2=base, t=fname)).read()
+ set_last(fname, str(base))
if __name__ == "__main__":
main()
More information about the svnbook-dev
mailing list