blob: 1c51d8dbfdd29b9ff917606ebdba397426ea2e0a [file]
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="misc-docs-quick_walkthrough">
<title>Ïîâåðõíîñòíûé îáçîð ðàáîòû ñ ñèñòåìîé</title>
<simplesect>
<para>Ýòî ïîïûòêà ïîêàçàòü ðàáîòó ñ ñèñòåìîé Subversion íà ïðàêòè÷åñêèõ
ïðèìåðàõ. Äåìîíñòðèðóåìûå êîìàíäû - òîëüêî ëèøü ìàëåíüêàÿ ÷àñòü òîãî, ÷òî ìîæåò
Subversion. Äëÿ ïîëó÷åíèÿ ïîëíîé èíôîðìàöèè ñì. ãëàâó 3 êíèãè
"Óïðàâëåíèå âåðñèÿìè ñ ïîìîùüþ Subversion" - â íåé ïðèâåäåíî èñ÷åðïûâàþùåå
îïèñàíèå äëÿ êàæäîé êîìàíäû.</para>
</simplesect>
<!-- ================================================================= -->
<!-- ======================== SECTION 1 ============================== -->
<!-- ================================================================= -->
<sect1 id="misc-docs-quick_walkthrough-sect-1">
<title>Ñîçäàíèå ðåïîçèòîðèÿ</title>
<para>Â êëèåíòñêîì ïðèëîæåíèè Subversion ðåàëèçîâàí àáñòðàêòíûé
èíòåðôåéñ äëÿ äîñòóïà ê ðåïîçèòîðèþ. Â íàñòîÿùåå âðåìÿ â âèäå
áèáëèîòåê äîñòóïíû òðè ðåàëèçàöèè <quote>Äîñòóïà ê ðåïîçèòîðèþ</quote>
("Repository Access", RA). Âû ìîæåòå ïðîâåðèòü, êàêèå ìåòîäû
äîñòóïà äîñòóïíû â Âàøåì êëèåíòñêîì ïðèëîæåíèè, íàïðèìåð òàê:</para>
<screen>
$ svn --version
svn, version 0.29.0 (r6976)
compiled Sep 6 2003, 19:19:59
Copyright (C) 2000-2003 CollabNet.
Subversion is open source software, see @uref{http://subversion.tigris.org/}
The following repository access (RA) modules are available:
* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
- handles 'http' schema
- handles 'https' schema
* ra_local : Module for accessing a repository on local disk.
- handles 'file' schema
* ra_svn : Module for accessing a repository using the svn network protocol.
- handles 'svn' schema
</screen>
<para>Åñëè Âû íå âèäèòå çàïèñè "ra_local" - ñêîðåå âñåãî ýòî îçíà÷àåò,
÷òî áèáëèîòåêà Berkeley DB íå áûëà äîñòóïíà ïðè êîìïèëÿöèè êëèåíòñêîãî
ïðèëîæåíèÿ. Äëÿ âûïîëíåíèÿ êîíêðåòíûõ ïðèìåðîâ, ïðèâåä¸ííûõ íèæå, Âàì
íåîáõîäèìî êëèåíòñêîå ïðèëîæåíèå ñ ïîääåðæêîé ra_local.</para>
<para>Ñîçäàäèì ïóñòîé ðåïîçèòîðèé, èñïîëüçóÿ ïðèëîæåíèå
<command>svnadmin</command> :</para>
<screen>
$ svnadmin create myrepos
</screen>
<para>Ïðåäïîëîæèì, ÷òî ó Âàñ åñòü äèðåêòîðèÿ <filename>someproject</filename>,
êîòîðàÿ ñîäåðæèò ôàéëû, êîòîðûå Âû õîòèòå ïîìåñòèòü ïîä óïðàâëåíèå
ñèñòåìû êîíòðîëÿ âåðñèé:</para>
<screen>
someproject/foo
bar
baz/
baz/gloo
baz/bloo
</screen>
<para>Ó Âàñ åñòü ðåïîçèòîðèé, è âû ìîæåòå îñóùåñòâèòü
ïåðâîíà÷àëüíûé èìïîðò äàííûõ â íåãî (<quote>file</quote> â íà÷àëå
URL îçíà÷àåò ëîêàëüíûé äîñòóï):</para>
<screen>
$ svn import file:///àáñîëþòíûé/ïóòü/ê/ðåïîçèòîðèþ someproject myproj
&hellip;
Committed revision 1.
</screen>
<para> ïðèâåä¸ííîì ïðèìåðå âûïîëíÿåòñÿ ñëåäóþùåå: â êîðíå ôàéëîâîé
ñèñòåìû ðåïîçèòîðèÿ ñîçäà¸òñÿ íîâàÿ äèðåêòîðèÿ <filename>myproj</filename>
è â íå¸ êîïèðóåòñÿ ñîäåðæèìîå äèðåêòîðèè <filename>someproject</filename>.
Òåïåðü Âàøè äàííûå íàõîäÿòñÿ â ðåïîçèòîðèè è ìîæíî íà÷èíàòü ðàáîòó ñ íèìè.</para>
<sect2 id="misc-docs-quick_walkthrough-sect-1.1">
<title>Ñîçäàíèå ðàáî÷èõ êîïèé</title>
<para>Ñîçäàäèì <quote>ðàáî÷óþ êîïèþ</quote> Âàøåãî ïðîåêòà.
Äëÿ ýòîãî óêàæåì òî÷íûé URL äèðåêòîðèè ðåïîçèòîðèÿ, êîïèþ
êîòîðîé ìû õîòèì ïîëó÷èòü. Ïàðàìåòð ïîñëå URL îçíà÷àåò èìÿ äèðåêòîðèè
ðàáî÷åé êîïèè.</para>
<screen>
$ svn co file:///usr/local/svn/repos/myproj wc
A wc/foo
A wc/bar
A wc/baz
A wc/baz/gloo
A wc/baz/bloo
</screen>
<para>Òåïåðü äèðåêòîðèÿ <filename>wc</filename> ñîäåðæèò
ðàáî÷óþ êîïèþ, ñâÿçàííóþ ñ ïîëîæåíèåì <filename>/myproj</filename>
â ðåïîçèòîðèè (Â ïðåäïîëîæåíèè, ÷òî ðåïîçèòîðèé íàõîäèòñÿ ïî
àáñîëþòíîìó ïóòè <systemitem class="url">file:///usr/local/svn/repos</systemitem>).</para>
<para>Ñîçäàäèì äóáëèêàò ðàáî÷åé êîïèè:</para>
<screen>
$ cp -R wc wc2
</screen>
<para>È ïðîèçâåä¸ì íåêîòîðûå èçìåíåíèÿ â íàøåé ïåðâîé ðàáî÷åé êîïèè:</para>
<screen>
$ cd wc
$ echo "Íîâûé òåêñò" &gt;&gt; bar # Èçìåíÿåì ñîäåðæèìîå ôàéëà bar
$ svn propset color green foo # Äîáàâëÿåì ìåòàäàííûå ê ôàéëó foo
$ svn rm baz # Ïîìå÷àåì äèðåêòîðèþ baz äëÿ óäàëåíèÿ
$ touch newfile
$ svn add newfile # Ïîìå÷àåì íîâûé ôàéë äëÿ äîáàâëåíèÿ â ðåïîçèòîðèé
</screen>
<para>Äîâîëüíî ìíîãî èçìåíåíèé. Åñëè îòëó÷èòüñÿ è âåðíóòüñÿ ê ðàáîòå
íà ñëåäóþùèé äåíü, áóäåì ëè ìû ïîìíèòü, êàêèå èçìåíåíèÿ ïðîèçâåëè â÷åðà?
Õîðîøèé âîïðîñ... Îäíàêî, ïðîáëåìà ðåøàåòñÿ ëåãêî. Êîìàíäà
<command>status</command> ïîêàæåò íàì âñå <quote>ëîêàëüíûå èçìåíåíèÿ</quote>
â íàøå¸ ðàáî÷åé êîïèè:</para>
<screen>
$ svn status # Ïîñìîòðåòü èçìåíåíèÿ â ðàáî÷åé êîïèè
M ./bar
_M ./foo
A ./newfile
D ./baz
D ./baz/gloo
D ./baz/bloo
</screen>
<para>×òî ìû âèäèì? Òðè ôàéëà ïîìå÷åíû äëÿ óäàëåíèÿ ("Deleted", D)
èç ðåïîçèòîðèÿ, îäèí ôàéë ïîìå÷åí äëÿ äîáàâëåíèÿ ("Added", A) â
ðåïîçèòîðèé è ñîäåðæèìîå äâóõ ôàéëîâ áûëî êàêèì-òî îáðàçîì
èçìåíåíî ("Modified", M). Ïîäðîáíîñòè ïðî êîìàíäó
<command>svn status</command> - â ãëàâå 3 êíèãè
"Óïðàâëåíèå âåðñèÿìè ñ ïîìîùüþ Subversion".</para>
<para>"Çàôèêñèðóåì" èçìåíåíèÿ, ñäåëàííûå â ðàáî÷åé êîïèè,
â ðåïîçèòîðèé (òåêóùàÿ ðåäàêöèÿ êîòîðîãî ñòàíåò ðàâíîé 2):</para>
<screen>
$ svn commit -m "Èñïðàâëåíà îøèáêà #233"
Sending bar
Sending foo
Adding newfile
Deleting baz
Transmitting data...
Committed revision 2.
</screen>
<para>Ïàðàìåòð -m ñëóæèò äëÿ óêàçàíèÿ
<firstterm>êîììåíòàðèÿ</firstterm> ê íîâîé ðåäàêöèè. Ýòî ïðîñòî
îïèñàíèå íàáîðà èçìåíåíèé, êîòîðûå Âû ôèêñèðóåòå â ðåïîçèòîðèé.
 äàëüíåéøåì ëþáîé äðóãîé ïîëüçîâàòåëü ðåïîçèòîðèÿ ìîæåò
ïðî÷èòàòü Âàøè êîììåíòàðèè è áûòü â êóðñå òîãî, êàêèå èçìåíåíèÿ
Âû âíåñëè â ðåäàêöèè 2.</para>
<para>Òåïåðü ïðåäñòàâüòå, ÷òî Âû - ýòî äðóãîé ÷åëîâåê èç âàøåé êîìàíäû.
Äëÿ ýòîãî ïðîñòî ïåðåéäèòå êî âòîðîé ðàáî÷åé êîïèè (<filename>wc2</filename>).
×òîáû ïîëó÷èòü èç ðåïîçèòîðèÿ èçìåíåíèÿ, ñäåëàííûå âî âòîðîé ðåäàêöèè,
íóæíî âûïîëíèòü êîìàíäó <command>svn update</command>:</para>
<screen>
$ cd ../wc2 # Ïåðåéä¸ì êî âòîðîé ðàáî÷åé êîïèè
$ svn update # Ïîëó÷èì èçìåíåíèÿ èç ðåïîçèòîðèÿ
U ./bar
_U ./foo
A ./newfile
D ./baz
</screen>
<para>Ðåçóëüòàò ðàáîòû êîìàíäû <command>svn update</command>
ãîâîðèò î òîì, ÷òî ôàéë baz óäàë¸í èç Âàøåé ðàáî÷åé êîïèè,
íîâûé ôàéë newfile äîáàâëåí ê ðàáî÷åé êîïèè, à ñîäåðæèìîå ôàéëîâ
bar è foo îáíîâëåíî èç ðåïîçèòîðèÿ.</para>
<para>Åñëè ôàéë <filename>bar</filename> ñîäåðæèò ëîêàëüíûå èçìåíåíèÿ,
ïðîèçâåä¸ííûå âî âòîðîé ðàáî÷åé êîïèè, áóäåò ïðîèçâåäåíà îïåðàöèÿ
<firstterm>ñëèÿíèÿ</firstterm> èçìåíåíèé, çàôèêñèðîâàííûõ â ðåïîçèòîðèè,
ñ âàøèìè. Ýòî îçíà÷àåò, ÷òî <filename>bar</filename> áóäåò ñîäåðæàòü
îáà íàáîðà èçìåíåíèé. Ðåçóëüòàòîâ ó ýòîé îïåðàöèè ìîæåò áûòü äâà:</para>
<itemizedlist>
<listitem>
<para>Ñëèÿíèå ïðîéä¸ò áåç ïîìåõ, â àâòîìàòè÷åñêîì ðåæèìå.
Ýòî îçíà÷àåò, ÷òî äâà íàáîðà èçìåíåíèé íå ïåðåñåêàþòñÿ
è ïðîãðàììà ðàçðåøèëà êîíôëèêò ñàìîñòîÿòåëüíî.
 òàêîì ñëó÷àå êîìàíäà <command>svn update</command> âûâåäåò áóêâó
<literal>G</literal> (Îò àíãëèéñêîãî ñëîâà "mer(G)ed").</para>
</listitem>
<listitem>
<para>Äâà íàáîðà èçìåíåíèé ïåðåñåêàþòñÿ, è âûâåäåíà áóêâà
<literal>C</literal> (îò àíãëèéñêîãî "(C)onflict"). Ðàçðåøèòü êîíôëèêò
âàì ïðèä¸òñÿ âðó÷íóþ, ïîäðîáíîñòè ñì. â ñîîòâåòñòâóþùåé ãëàâå êíèãè.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
</chapter>
<!--
local variables:
sgml-parent-document: ("misc-docs.xml" "chapter")
end:
-->