<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kappname "&cervisia;">
  <!ENTITY package "kdesdk">
  <!ENTITY ssh "<command
>ssh</command
>">
  <!ENTITY rsh "<command
>rsh</command
>">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % Ukrainian "INCLUDE"
> <!-- Change language only here -->
  <!ENTITY CVS "<application
>CVS</application
>">
]>

<book lang="&language;">

<bookinfo>
<title
>Підручник з &cervisia;</title>
<authorgroup>
<author
><firstname
>Bernd</firstname
><surname
>Gehrmann</surname
> <affiliation
><address
>&Bernd.Gehrmann.mail;</address
></affiliation>
</author
> 
<author
><firstname
>Carlos</firstname
><surname
>Woelz</surname
> <affiliation
><address
><email
>carloswoelz@imap-mail.com</email
></address
></affiliation>
</author
> 


<othercredit role="translator"
><firstname
>Юрій</firstname
><surname
>Чорноіван</surname
><affiliation
><address
><email
>yurchor@ukr.net</email
></address
></affiliation
><contrib
>Переклад українською</contrib
></othercredit
> 

</authorgroup>

<copyright>
<year
>1999</year>
<year
>2000</year>
<year
>2001</year>
<year
>2002</year>
<holder
>&Bernd.Gehrmann;</holder>
</copyright>

<copyright>
<year
>2004</year>
<holder
>Carlos Woelz</holder>
</copyright>

<legalnotice
>&FDLNotice;</legalnotice>

<date
>2008-09-08</date>
<releaseinfo
>3.1.1</releaseinfo>

<abstract>
<para
>&cervisia; — це графічний інтерфейс для перегляду &CVS;.</para>
</abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>kdesdk</keyword>
<keyword
>Cervisia</keyword>
<keyword
>CVS</keyword>
<keyword
>керування версіями</keyword>
<keyword
>керування переглядами</keyword>
</keywordset>

</bookinfo>

<chapter id="introduction">
<title
>Вступ</title>

<para
><ulink url="http://www.kde.org/apps/cervisia/"
>&cervisia;</ulink
> — це зручна у користуванні оболонка до системи керування версіями. Метою її створення була підтримка &CVS; та інших систем керування версіями за допомогою універсального інтерфейсу, з можливостями розв’язання конфліктів, інструментами перегляду відмінностей і історії, стану файлів робочої копії та підтримкою більшості функціональних можливостей системи керування версіями. Встановити &cervisia; можна або шляхом збирання модуля kdesdk з вихідних кодів, або встановленням пакунка kdesdk зі сховища вашого дистрибутива. У поточній версії підтримується лише &CVS;, але інтеграцію з іншими системами керування версіями може бути додано у майбутньому. </para>

<para
>Система керування версіями — це інструмент, призначений для запису, керування і поширення різних версій файлів. &CVS; є системою керування версіями. Ця система спрощує вам спільну роботу на змінами у коді, оскільки кожен з розробників може одночасно працювати над власною локальною копією без ризику перезапису змін, внесених іншими розробниками. &CVS; надає вам змогу відновлювати попередні версії (корисно для встановлення джерела вад), створення версій (для експериментальної розробки або випуску програми) та виконувати інші дії. </para>

<para
>Зазвичай, у основному <firstterm
>сховищі</firstterm
> міститься результат спільної роботи (комерційної чи ні), але використання чудових можливостей з керування версіями, які надає у ваше розпорядження &CVS;, може стати у нагоді, навіть якщо ви є єдиним розробником. Налаштувати локальне сховище просто, за його допомогою ви зможете знаходити зміни, які призводять до помилок, скасовувати зміни, уникати випадкових втрат даних тощо. </para>

<para
>У сховищі зберігаються файли проекту, кожен з розробників матиме власну локальну копію, яка називається <firstterm
>робочою копією</firstterm
> або <firstterm
>пісочницею</firstterm
>. Згодом кожен з розробників зможе додавати власні зміни до основного сховища (цей процес називається «надсиланням») і/або оновити свою власну копію так, щоб вона містила зміни, внесені іншими учасниками розробки. </para>

</chapter>

<chapter id="getting-started">
<title
>Початок роботи</title>

<sect1 id="accessing-repository">
<title
>Доступ до сховища</title>

<para
>У цьому розділі ми поговоримо про те, як користуватися основними функціональними можливостями системи керування версіями за допомогою &cervisia;, зокрема звантаженням модулів зі сховища і роботи з цими модулями. Щоб виконати ці дії, вам слід мати доступ до сховища як клієнт, це означає, що хтось (ймовірно, адміністратор сховища &CVS;) має надати вам обліковий запис на комп’ютері сервера. Крім того, ви можете просто створити локальне сховище для вашого власного проекту. </para>

<tip
><para
>Якщо ви плануєте розробляти складний проект, вам варто скористатися можливостями &CVS;, навіть якщо ви є єдиним розробником. Ви можете внести всі зміни до робочої копії, а потім скористатися &cervisia; (або будь-яким іншим інструментом роботи з &CVS;) для оновлення і надсилання змін. Таким чином, ви отримаєте можливість стежити за змінами, які спричиняють до помилок у програмі, скасовувати зміни, уникати випадкової втрати даних тощо. За допомогою &cervisia; просто створити локальне сховище. </para>

<procedure>
<title
>Створення локального сховища</title>

<step
><para
>Відкрийте діалогове вікно <guilabel
>Створити нове сховище (cvs init)</guilabel
> за допомогою пункту меню <menuchoice
><guimenu
>Сховище</guimenu
> <guimenuitem
>Створити...</guimenuitem
></menuchoice
>. </para
></step>

<step
><para
>Натисніть кнопку <guilabel
>...</guilabel
>, щоб обрати теку, у якій ви бажаєте створити сховище, або введіть його адресу у поле для введення тексту. Наприклад, якщо ви бажаєте розташувати сховище у теці <filename
>/home/user</filename
> і назвати його <filename
>cvsroot</filename
>, вам слід ввести <filename
>/home/user/cvsroot</filename
> у поле для введення тексту або обрати теку <filename
>/home/user</filename
> за допомогою інструменту графічного вибору, а потім додати <filename
>cvsroot</filename
>. </para
></step>

<step
><para
>Підтвердьте відомості натисканням кнопки <guibutton
>Гаразд</guibutton
>. Після натискання &cervisia; створить і ініціалізує нову теку сховища. </para
></step>

<step
><para
>Тепер ви можете імпортувати вашу поточну роботу до сховища або просто створити теку у сховищі, щоб розпочати роботу над новим модулем з нуля. </para
></step>

</procedure>

</tip>


<para
>У &cervisia; передбачено вбудовану оболонку для керування всіма адресами ваших сховищ — діалогове вікно <guilabel
>Налаштувати доступ до сховищ</guilabel
>. Щоб відкрити це діалогове вікно, скористайтеся пунктом меню <menuchoice
><guimenu
>Сховище</guimenu
> <guimenuitem
>Сховища...</guimenuitem
></menuchoice
>. </para>

<figure id="screenshot-repositories" float="1">
<title
>Знімок діалогового вікна налаштування доступу до сховищ у &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="repositories.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна налаштування доступу до сховищ у &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Існує декілька способів доступу до сховища &CVS;. Доступ до сховища можна отримати за допомогою розпізнавання за паролем (:pserver:), за допомогою безпечної оболонки (з використанням :ext:), за допомогою локального сховища (:local:) тощо. Формат адреси сховища має бути таким (необов’язкові елементи вказано у квадратних дужках): </para>

<para>
<filename
>[:метод:][[користувач][:пароль]@]назва вузла[:[порт]]/шлях/до/сховища</filename>
</para>

<para
>Не всі з цих елементів (користувач, пароль, назва вузла, порт) неодмінно потрібні для доступу до сховища. Перелік потрібних відомостей залежить від використаного методу доступу, методи доступу можна розділити на такі категорії: </para>

<variablelist>

<varlistentry>
<term
>Локальний</term>

<listitem>
<para
>Метод локального доступу є типовим методом, що використовується у &CVS;. Тому, за бажання, ви можете додати метод :local: до адреси сховища: ви можете просто ввести шлях до теки, у якій зберігається сховище &CVS; і яка доступна з вашого комп’ютера, наприклад, <filename class="directory"
>/шлях/до/сховища</filename
> або, якщо користуватися конкретним прикладом, <filename class="directory"
>/home/cvs</filename
>.</para>

<para
>Фізично, сховище може зберігатися на диску, який змонтовано за допомогою <acronym
>NFS</acronym
>, але це вже деталі. Якщо ви створили локальне сховище, його адресою буде простий шлях до його теки. </para>
</listitem>
</varlistentry>

<varlistentry id="rsh">
<term
>&rsh;</term>

<listitem>
<para
>Розташуванням сховища є щось на зразок <filename
>:ext:користувач@вузол.url.org:/шлях/до/сховища</filename
>. </para>

<para
>Для користування цим методом вам потрібен обліковий запис користувача на комп’ютері-сервері (у нашому прикладі, <systemitem class="systemname"
>host.url.org</systemitem
>) і віддалений доступ до оболонки для обміну даними. Типово, &CVS; використовує з цією метою &rsh;; але &rsh; давно вже визнано не дуже безпечним, його повсюдно витісняє &ssh;. </para>

<para
>Якщо ви бажаєте скористатися &ssh;, вам слід встановити значення змінної середовища $<envar
>CVS_RSH</envar
> так, щоб вона вказувала на &ssh; на час користування клієнтом <command
>cvs</command
>. &cervisia; з легкістю підтримує подібні налаштування. </para>

<!-- TODO: verify if the above still apply -->

<para
>Зауважте, що &cervisia; не зможе відповісти на можливі запити щодо пароля від комп’ютера сервера. Вам слід зробити так, щоб віддалений вхід працював без потреби у введенні пароля. За використання неналаштованого &rsh; цього можна досягти, наприклад, створенням файла <filename
>.rhosts</filename
> у вашій домашній теці зі списком всіх надійних вузлів (див. сторінку довідника (man) &rsh;). </para>

<para
>За використання &ssh; досягти потрібного результату можна копіюванням вашого відкритого ключа, щоб зберігається у файлі <filename
>identity.pub</filename
>, розташованому у теці <filename
>$<envar
>HOME</envar
>/.ssh/</filename
>, на сервер. У цьому випадку ключ має бути незашифрованим за допомогою пароля (див. сторінку довідника (man) &ssh; та <acronym
>ЧаП</acronym
> &CVS;/<acronym
>SSH</acronym
>  на SourceForge). Якщо ви не впевнені щодо потрібних налаштувань, запитайте про них вашого системного адміністратора. </para>

</listitem>
</varlistentry>

<varlistentry>
<term
>pserver</term>

<listitem>
<para
>Адреса сховища виглядає так: <filename
>:pserver:користувач@вузол.url.org:/шлях/до/сховища</filename
> </para>

<para
>За використання цього способу програма отримуватиме доступ до сервера за допомогою особливого протоколу з відносно простим розпізнаванням (<literal
>pserver</literal
> відповідає розпізнаванню за паролем). Перш ніж ви зможете скористатися таким сервером, вам слід дізнатися про ім’я користувача і пароль, вказані адміністратором сервера &CVS;, після цього вам слід увійти до системи. Зауважте, що ваше ім’я користувача, що використовуватиметься для розпізнавання за паролем на &CVS;, не обов’язково збігається з іменем користувача системи. Перш ніж отримувати доступ до сервера &CVS;, вам слід увійти до системи. </para>

<para
>Проекти з відкритим кодом, зазвичай, використовують анонімний доступ &CVS; до кодів. Це означає, що ви з легкістю можете звантажити найсвіжіші коди програм, змінювати і створювати латки (відмінності) відносно сховища без особистого облікового запису &CVS;. Зазвичай, для анонімного доступу &CVS; використовується розпізнавання за паролем (:pserver:), доступ надається лише для читання сховища: ви не зможете безпосередньо вивантажувати ваші зміни. </para>

</listitem>
</varlistentry>
</variablelist>

<para
>Якщо вам відомі метод доступу і адреса сховища, ви можете додати його до списку сховищ &cervisia;: </para>

<procedure>
<title
>Додавання нового сховища</title>

<step
><para
>Відкрийте діалогове вікно <guilabel
>Налаштувати доступ до сховищ</guilabel
> за допомогою пункту меню <menuchoice
><guimenu
>Сховище</guimenu
> <guimenuitem
>Сховища...</guimenuitem
></menuchoice
>. </para
></step>

<step
><para
>Натисніть кнопку <guilabel
>Додати...</guilabel
>, щоб відкрити діалогове вікно <guilabel
>Додати сховище</guilabel
>. </para
></step>

<step
><para
>Введіть адресу сховища у поле <guilabel
>Сховище:</guilabel
>. &cervisia; автоматично вимкне всі пункти діалогового вікна, які не відповідають вказаному вами способу доступу. </para
></step>

<step
><para
>Якщо ви використовуєте зовнішній метод доступу до сховища, введіть назву віддаленої оболонки, якою ви бажаєте скористатися (наприклад, &ssh;) у поле <guilabel
>Використовувати віддалену оболонку (лише для сховищ :ext:):</guilabel
>. </para
></step>

<step
><para
>Натисніть кнопку <guibutton
>Гаразд</guibutton
>. Ви побачите сховище, параметри якого ви щойно ввели, у списку сховищ. </para
></step>

<step
><para
>Якщо методом доступу до сховища, який ви щойно ввели, є розпізнавання за паролем (pserver), вам доведеться увійти до системи, перш ніж з’єднуватися з сервером. Наведіть вказівник миші на позначку сховища у списку і клацніть лівою кнопкою миші, щоб позначити її, а потім натисніть кнопку <guilabel
>Увійти...</guilabel
>. Введіть ваш пароль у діалоговому вікні, яке відкриє програма. </para>
<para
>Якщо ви ввели правильний пароль, у стовпчику <guilabel
>Стан</guilabel
> відповідного запису сховища pserver напис зміниться з <guilabel
>Не зареєстровані</guilabel
> на <guilabel
>Зареєстровані</guilabel
>. </para
></step>

<step
><para
>Натисніть кнопку <guibutton
>Гаразд</guibutton
>, щоб застосувати внесені вами зміни або додати іншу адресу до списку. &cervisia; зберігатиме довільну кількість введених вами адрес. </para
></step>

</procedure>

</sect1>


<sect1 id="importing">
<title
>Імпортування модуля до сховища</title>

<para
>У цьому розділі ми обговоримо спосіб, у який ви можете розмістити новий проект у сховищі &CVS;. Якщо ви просто бажаєте працювати з існуючим проектом, який вже перебуває у сховищі, ви можете пропустити цей розділ. </para>

<para
>Існує два способи додавання проекту до &CVS;: </para>

<itemizedlist>

<listitem
><para
>Імпортувати файли і теки до нового <firstterm
>модуля</firstterm
> за допомогою діалогового вікна імпорту &cervisia;. Модулями є теки верхнього рівня у дереві сховища &CVS;, вони використовуються для розділення і впорядкування різних проектів розробки програмного забезпечення у межах сховища. </para
></listitem>

<listitem
><para
>Створіть порожній модуль і додайте нові файли і теки вручну. Ви зможете керувати більшою кількістю параметрів, але процес створення буде тривалішим. </para
></listitem>

</itemizedlist>

<important>
<para
>Зауважте, що &CVS; від початку було розроблено для роботи з текстовими файлами. Значна кількість можливостей, зокрема об’єднання версій, створення файлів відмінностей у придатній для читання формі тощо можна використовувати для роботи з текстовими файлами. Це не означає, що ви не зможете користуватися &CVS; для зберігання бінарних файлів, це просто означає, що вам слід <emphasis
>напряму вказати &CVS; текстовим чи бінарним файлом є відповідний файл</emphasis
>. Якщо ви вкажете тип файла неправильно, у вас виникнуть проблеми з використанням функціональних можливостей &CVS; для цих файлів, крім того, ці файли може бути пошкоджено. </para>
</important>


<para
>Імпортування проекту (як нового модуля) має певні переваги: програма імпортує всі файли і теки рекурсивно, модуль буде створено автоматично. Це спрощує імпортування великих існуючих проектів до сховища. Але можуть виникнути і певні проблеми: ви не зможете скористатися діалоговим вікном імпорту &cervisia; для додавання файлів до існуючих модулів, ви зможете імпортувати файли у текстовій або бінарній формі. Ви зможете обійти це обмеження створенням теки з файлами з файлами, які належатимуть лише до одного з цих типів, або створенням шаблонів файлів, які слід ігнорувати під час дії з імпортування. </para>

<para
>Наприклад, припустімо, що ваш проект містить лише текстові файли і декілька зображень PNG (бінарні файли). Ви можете наказати &CVS; ігнорувати всі файли, назви яких відповідають шаблону <filename class="extension"
>*.png</filename
>, а потім імпортувати всі інші файли як текстові. Ви також можете пересунути зображення до окремої теки, а потім імпортувати всі інші файли (як текстові файли). У будь-якому разі вам слід <link linkend="checkingout"
>звантажити</link
> тільки-но імпортований модуль до нової робочої копії, скопіювати відсутні файли і теки до неї, <link linkend="addingfiles"
>додати</link
> і <link linkend="committingfiles"
>надіслати</link
> їх до сховища, щоб завершити процес імпортування. </para>

<para
>Крім того, ви можете додати файли і теки вручну створенням порожнього модуля для цих файлів. Щоб додати порожній модуль до сховища, просто створіть нову теку у кореневій теці сховища &CVS;. Назва цієї нової теки буде назвою модуля. <link linkend="checkingout"
>Звантажте</link
> новий порожній модуль. Після цього скопіюйте файли і теки до робочої копії, <link linkend="addingfiles"
>додайте</link
> і <link linkend="committingfiles"
>надішліть</link
> їх до сховища &CVS;. </para>


<figure id="screenshot-import" float="1">
<title
>Знімок діалогового вікна імпорту &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="import.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна імпорту &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>У розділі <xref linkend="screenshot-import"/> ви можете знайти знімок діалогового вікна, за допомогою якого ви зможете <emphasis
>імпортувати</emphasis
> проект як модуль. Щоб відкрити діалогове вікно імпорту &cervisia;, скористайтеся пунктом меню <menuchoice
><guimenu
>Сховище</guimenu
> <guimenuitem
>Імпорт...</guimenuitem
></menuchoice
>. </para>

<variablelist>

<varlistentry>
<term
><guilabel
>Сховище:</guilabel
> <xref linkend="co-repository"/></term>
<listitem
><para
>Введіть або оберіть зі спадного списку назву сховища &CVS;, також відому за назвою змінної, $<envar
>CVSROOT</envar
>. Вам потрібні права на запис до сховища, сховище також має бути належним чином ініціалізовано. Якщо сховища ще не існує, ви можете створити його за допомогою пункту меню <menuchoice
> <guimenu
>Сховище</guimenu
> <guimenuitem
>Створити...</guimenuitem
> </menuchoice
>. </para>
<para
>У спадному списку буде показано список сховищ, які ви раніше ввели за допомогою діалогового вікна <guilabel
>Налаштувати доступ до сховищ</guilabel
>. Якщо сховище є віддаленим, переконайтеся, що працює розпізнавання. Докладніше про це можна дізнатися з розділу <xref linkend="accessing-repository"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Модуль:</guilabel
> <xref linkend="co-module"/></term>
<listitem
><para
>Назва модуля, у якому буде збережено проект. Після імпорту проект може бути звантажено під цією назвою. Докладніші відомості можна отримати з розділу <xref linkend="checkingout"/>. Крім того, цю назву буде використано для відповідної теки у сховищі. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Робоча тека:</guilabel
></term>
<listitem
><para
>Тека верхнього рівня проекту, який ви бажаєте імпортувати. Імпорт розпочнеться з цієї теки і продовжуватиметься рекурсивно. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Мітка виробника:</guilabel
> <xref linkend="co-vendortag"/></term>
<listitem
><para
>Мітка виробника зберігається з історичних міркувань для стеження за сторонніми кодами. Просто скористайтеся іменем вашого користувача, якщо у вас немає кращих варіантів. Дані, введені у це поле, не мають особливого значення. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Мітка випуску:</guilabel
> <xref linkend="co-releasetag"/></term>
<listitem
><para
>Цю мітку також зберігають з історичних міркувань для імпортування різних версій стороннього програмного забезпечення. Якщо ви не виконуватимете подібних дій, скористайтеся словом <literal
>start</literal
> або рядком <literal
>FOO_1_0</literal
>, де <literal
>FOO</literal
> — це назва вашого проекту, а <literal
>1.0</literal
> є номером версії імпортованого випуску. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Ігнорувати файли:</guilabel
></term>
<listitem
><para
>Якщо ви заповните це поле, команді <command
>cvs import</command
> буде передано додатковий параметр <option
>-I <replaceable
>назви файлів</replaceable
></option
>. Цей запис буде оброблено як відокремлений пробілами список шаблонів назв файлів, які слід ігнорувати. Загалом, кращим і надійнішим способом керувати тим, які файли буде передано до сховища, є створення теки, у якій міститимуться лише файли, які ви бажаєте імпортувати, а потім вже продовжувати. Але цей пункт може бути корисним, якщо проект містить файли, які типово ігноруються &CVS;, наприклад, файли з назвою <filename
>core</filename
>. У такому випадку просто введіть у це поле символ <literal
>!</literal
>: таким чином можна перевизначити схему ігнорування файлів &CVS;, див. розділ <xref linkend="ignoredfiles"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Коментар:</guilabel
> <xref linkend="co-comment"/></term>
<listitem
><para
>У цьому полі можна вказати коментар щодо походження, використання, розробки тощо файлів, які ви імпортуєте. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Імпортувати всі як двійкові</guilabel
></term>
<listitem
><para
>Якщо ви позначите цей пункт, всі файли буде імпортовано у двійковому режимі, тобто до команди <command
>cvs import</command
> буде додано параметр <option
>-kb</option
>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Використовувати час модифікації файла як час імпорту</guilabel
></term>
<listitem
><para
>Якщо ви позначите цей пункт, як час імпорту файла буде використано час його модифікації. </para
></listitem>
</varlistentry>

</variablelist>


<para
>Після заповнення вами полів цієї форми і підтвердження даних натисканням кнопки <guibutton
>Гаразд</guibutton
> буде виконано таку команду &CVS;:</para>

<screen
><command
>cvs</command
> -d <co id="co-repository"
></co
><replaceable
>сховище</replaceable
> import -m "<co id="co-comment"
></co
>" <co id="co-module"
></co
><replaceable
>модуль</replaceable
> <co id="co-vendortag"
></co
><replaceable
>мітка_постачальника</replaceable
> <co id="co-releasetag"
></co
><replaceable
>мітка_випуску</replaceable
></screen>

</sect1>


<sect1 id="checkingout">
<title
>Звантаження модуля зі сховища</title>
<para
>Тепер, коли ви успішно визначили адресу вашого сховища і імпортували перші файли до сховища, час отримати модуль зі сховища &CVS;, отже створити вашу робочу копію. </para>

<para
>Вам також слід знати назву <firstterm
>гілки</firstterm
> або <firstterm
>випуску</firstterm
>, якими ви бажаєте скористатися. </para>

<para
>Гілки модуля є паралельними версіями модуля. Непоганим прикладом з життя, коли може виникнути потреба у цій можливості, є випуск проекту розробки програмного забезпечення. Після головного випуску було виявлено вади у коді, які слід виправити, але користувачі також бажають, щоб ви додали до програми нові можливості. Дуже важко виконати обидва завдання одночасно, оскільки з додаванням нових можливостей, зазвичай, додаються нові помилки, що ускладнює виявлення старих помилок. Щоб розв’язати цю дилему, у &CVS; можна створити паралельну версію, яку ми називатимемо «гілку стабільного випуску», куди ви вноситимете лише виправлення вад, основну гілку (HEAD) можна використовувати для додавання нових можливостей. </para>

<para
>Мітки використовуються для позначення версії проекту. &CVS; позначає кожну версію кожного файла цією міткою, отже, коли ви звантажуєте або оновлюєте програму до певної мітки, ви завжди отримуєте однакові версії файлів. Тому, на відміну від гілок, мітки не є динамічними: ви не можете розробляти мітку. Мітки корисні для позначення випусків, значних змін у коді тощо. За допомогою міток ви можете легко повернути проект до попереднього стану, щоб відтворити або простежити за вадами, знову створити коду випуску тощо. </para>

<figure id="screenshot-checkout" float="1">
<title
>Знімок діалогового вікна отримання &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="checkout.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна отримання &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<variablelist>

<varlistentry>
<term
><guilabel
>Сховище:</guilabel
></term>
<listitem
><para
>Назва сховища &CVS;, також відома за назвою <filename
><envar
>$CVSROOT</envar
></filename
>. У спадному списку буде показано список сховищ, які ви раніше ввели за допомогою діалогового вікна <guilabel
>Налаштувати доступ до сховищ</guilabel
>. Якщо сховище є віддаленим, переконайтеся, що працює розпізнавання. Докладніше про це можна дізнатися з розділу <xref linkend="accessing-repository"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Модуль:</guilabel
></term>
<listitem
><para
>Назва модуля, який слід звантажити. Якщо ви працюєте з існуючим сховищем, ймовірно, ви можете отримати цю назву від системного адміністратора, або, якщо це сховище відкритого коду, ви зможете отримати назви модуля з веб-сторінок проекту. Якщо ви бажаєте створити новий модуль з нуля за допомогою локального сховища, просто створіть нову теку у кореневій теці локального сховища. Назва теки буде збігатися з назвою порожнього модуля. </para>
<para
>Крім того, якщо у сховищі є файл <filename
><envar
>$CVSROOT</envar
>/modules</filename
>, ви можете отримати список можливих модулів натисканням кнопки <guibutton
>Отримати список</guibutton
>. </para>
<para
>Зауважте, що можна звантажити будь-яку з існуючих підтек модуля без звантаження решти модуля. Просто введіть також і шлях до підтеки. Наприклад, якщо ви бажаєте звантажити лише підтеку <filename class="directory"
>doc/cervisia</filename
> з модуля kdesdk, введіть у це поле <filename class="directory"
>kdesdk/doc/cervisia</filename
>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Мітка гілки:</guilabel
></term>
<listitem
><para
>Назва версії або випуску, який ви бажаєте звантажити. Якщо ви залишите це поле порожнім, &cervisia; виконає спробу звантаження основної (HEAD) версії. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Робоча тека:</guilabel
></term>
<listitem
><para
>Тека, у яку слід звантажити модуль. Зауважте, що теку верхнього рівня робочої копії буде названо за назвою модуля, який ви звантажуватимете, якщо ви не вкажете іншої назви у поле <guilabel
>Отримати як:</guilabel
>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Отримати як:</guilabel
></term>
<listitem
><para
>Вибір цього пункту призведе до звантаження файлів робочої копії до теки у робочій теці, назва якої відрізняється від назви теки цього модуля. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Експортувати лише</guilabel
></term>
<listitem
><para
>Якщо ви позначите цей пункт, файли буде експортовано, а не звантажено. За експортування буде отримано копію кодів модуля без адміністративних тек &CVS;. Наприклад, експортуванням можна скористатися для підготовки вихідних кодів для випуску. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Рекурсивне отримання</guilabel
></term>
<listitem
><para
>Звантажувати всі файли і теки рекурсивно.</para
></listitem>
</varlistentry>

</variablelist>

</sect1>


<sect1 id="mainscreen">
<title
>Головне вікно, перегляду стану файлів і оновлення</title>
<para
>Коли ви запустите &cervisia; і відкриєте робочу копію за допомогою пункту меню <menuchoice
> <guimenu
>Файл</guimenu
> <guimenuitem
>Відкрити пісочницю...</guimenuitem
> </menuchoice
>, ви побачите дві основні області головного вікна &cervisia;: верхню область з ієрархічним (деревоподібним) переглядом поточної робочої копії і нижню область, яка використовується для показу команд &CVS;, які надсилає &cervisia; для виконання своїх завдань, а також покаже дані виведені в результаті виконання цих команд. </para>

<para
>Типово, &cervisia; не показуватиме файли, що містяться у підтеках, отже вам доведеться натискати позначки тек, вміст яких ви бажаєте бачити. Щоб наказати програмі показувати всі файли робочої копії, скористайтеся пунктом меню <menuchoice
> <guimenu
>Перегляд</guimenu
> <guimenuitem
>Розгорнути файлове дерево</guimenuitem
> </menuchoice
>. Щоб наказати програмі згорнути всі теки у робочій копії, скористайтеся пунктом меню <menuchoice
> <guimenu
>Перегляд</guimenu
> <guimenuitem
>Згорнути файлове дерево</guimenuitem
> </menuchoice
>. </para>

<para
>Відповідно до параметрів у ваших файлах <filename
>.cvsignore</filename
>, файли, які ви, зазвичай, не бажаєте включити до сховища, — зокрема об’єктні файли, — не буде показано у ієрархічному перегляді. Для кожного з файлів ви побачите відповідний стан. За типових параметрів, після відкриття пісочниці, цей стан буде «Невідомий», оскільки &cervisia; відкладає отримання даних до того часу, коли ви оберете файли і теки, чий стан ви бажаєте оновити або переглянути, і скористайтеся пунктом <menuchoice
> <guimenu
>Файл</guimenu
> <guimenuitem
>Оновити</guimenuitem
> </menuchoice
> або <menuchoice
> <guimenu
>Файл</guimenu
> <guimenuitem
>Стан</guimenuitem
> </menuchoice
>. За використання цього підходу, ви матимете у розпорядженні мінімальний набір функціональних можливостей, навіть якщо ваш комп’ютер не має постійного з’єднання з сервером &CVS;. </para>

<figure id="screenshot-mainview" float="1">
<title
>Знімок основної області перегляду &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="mainview.png"/></imageobject>
<textobject
><phrase
>Знімок основної області перегляду &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Пункти меню «Файл», зазвичай, працюють лише для файлів, які ви позначили. Ви також можете позначати теки. Скористайтеся пунктом меню <menuchoice
> <guimenu
>Файл</guimenu
> <guimenuitem
>Стан</guimenuitem
> </menuchoice
> або натисніть клавішу <keycap
>F5</keycap
>. &cervisia; виконає команду </para>

<para>
<screen
><command
>cvs update -n <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>щоб отримати дані про стан для позначених файлів. Зауважте, що &cervisia; виконає рекурсивний пошук даних у підтеках, лише якщо ви позначили відповідний пункт у наборі пунктів меню <guimenu
>Параметри</guimenu
>. Відповідно до стану певного файла, ви побачите запис у стовпчику <guilabel
>Стан</guilabel
>: </para>

<variablelist>

<varlistentry>
<term
><guilabel
>Змінений локально</guilabel
></term>
<listitem
><para
>Це означає, що на вашому комп’ютері зберігається файл, у який внесено зміни, порівняно з варіантом зі сховища. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><guilabel
>Доданий локально</guilabel
></term>
<listitem
><para
>Це означає, що файла не існує у сховищі, він є лише у вашій робочій копії, і ви вказали, ще цей файл має бути додано. Справжнє додавання файла у сховище відбудеться лише після сеансу вивантаження. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Вилучено локально</guilabel
></term>
<listitem
><para
>Це означає, що ви додали файл до списку на вилучення, але він все ще зберігається у сховищі. Справжнє вилучення буде здійснено лише під час сеансу вивантаження. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Потребує оновлення</guilabel
></term>
<listitem
><para
>Цю позначку буде показано, якщо у сховищі зберігається новіша версія файла, наприклад, через те, що хтось її туди вивантажив. Зазвичай, вам варто оновити цей файл, щоб мати у вашій теці актуальну версію коду. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Потребує латання</guilabel
></term>
<listitem
><para
>Ця позначка означає майже те саме, що і попередня. Відмінність полягає лише у тому, що у останньому випадку у разі потреби у оновленні сервер &CVS; передасть на ваш комп’ютер лише латку замість цілого файла. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Потребує об'єднання</guilabel
></term>
<listitem
><para
>Позначає, що потрібно виконати об’єднання версії цього файла у вашій робочій копії з версією у сховищі. Зазвичай, це відбувається, коли ви внесли зміни до файла, а хтось інший вже надіслав власні зміни. Якщо ви вирішите оновити файл, зміни зі сховища буде об’єднано з вашою версією файла. У разі виникнення конфлікту (тобто, якщо хтось інший вніс зміни до тих самих рядків, що і ви) стан файла буде змінено на «Конфлікт». </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Найновіший</guilabel
></term>
<listitem
><para
>Означає, що файл ідентичний до своєї версії у сховищі. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Конфлікт</guilabel
></term>
<listitem
><para
>Цю позначку буде показано, якщо на файл накладено позначку конфліктного. Можливо, під час попереднього оновлення файла ви не розв’язали певні конфлікти. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Не в CVS</guilabel
></term>
<listitem
><para
>Означає, що файл не зареєстровано у сховищі &CVS;. Якщо ви бажаєте зробити його доступним для інших користувачів сховища, вам слід додати його до сховища. Якщо вам це не потрібно, ви можете додати цей файл до списку у вашому файлі <filename
>.cvsignore</filename
>. </para
></listitem>
</varlistentry>

</variablelist>

<para
>Тепер, коли ви бачите огляд поточного стану &CVS;, у вас може виникнути бажання виконати оновлення. Позначте декілька файлів (або кореневу теку у ієрархії тек, що рівнозначне позначенню всіх файлів у цій теці). Після цього скористайтеся пунктом меню <menuchoice
> <guimenu
>Файл</guimenu
> <guimenuitem
>Оновити</guimenuitem
> </menuchoice
> (Звичайно ж, ви можете скористатися цим пунктом і на початку сеансу роботи зі сховищем). Для деяких з файлів стан може змінитися. Зазвичай, після оновлення ці файли матимуть стан «Потребує латання» або «Потребує оновлення». Отже у стовпчику стану можуть з’явитися такі нові повідомлення про стан: </para>

<variablelist>

<varlistentry>
<term
><guilabel
>Оновлений</guilabel
></term>
<listitem
><para
>Буде показано, якщо файл було оновлено у сховищі. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Латаний</guilabel
></term>
<listitem
><para
>Позначає, що сервер &CVS; надіслав латку для цього файла, і що латку було успішно накладено. Якщо спроба латання була невдалою, причиною може бути конфлікт між версіями: внесені вами зміни суперечать змінам, які хтось вже надіслав до сховища. Стан таких файлів буде вказано як <guilabel
>Конфлікт</guilabel
>. </para
></listitem>
</varlistentry>

</variablelist>

<para
>Ви певне вже помітили, що колір рядка файла відповідає стану цього файла. Кольори було обрано так, щоб вони певним чином відповідали пріоритетності стану файла. Наприклад, файли з конфліктами буде позначено червоним кольором, щоб нагадати вам про те, що вам слід розв’язати конфлікт, перш ніж продовжувати роботу з файлом. Якщо у вашій теці дуже багато файлів, не важко загубити файли, які потребують уваги, на загальному плані. Щоб отримати точніші відомості щодо файлів з нетиповим станом, просто натисніть заголовок стовпчика <guilabel
>Стан</guilabel
>. Після цього список файлів буде впорядковано за пріоритетністю, отже всі файли, що потребують уваги, опиняться у верхній частині списку. Щоб повернутися до перегляду з впорядкуванням за абеткою, натисніть заголовок стовпчика <guilabel
>Назва файла</guilabel
>. </para>

</sect1>

</chapter>


<chapter id="workingwithfiles">
<title
>Робота з файлами</title>

<para
>Доступ до всіх найпоширеніших функціональних можливостей &CVS; можна отримати безпосередньо з головного вікна &cervisia;. Зазвичай, команди можуть виконуватися одночасно для декількох файлів, зокрема всіх позначених файлів. Якщо серед позначених елементів будуть теки, дії, які виконає програма, залежатимуть від параметрів, визначених за допомогою пунктів меню <guimenu
>Параметри</guimenu
>. Наприклад, якщо було позначено пункт <menuchoice
><guimenu
>Параметри</guimenu
><guimenuitem
>Передавати і вилучати рекурсивно</guimenuitem
></menuchoice
>, і ви користуєтеся пунктом меню <menuchoice
><guimenu
>Файл</guimenu
><guimenuitem
>Передати...</guimenuitem
></menuchoice
> для позначеної теки, всі файли у ієрархії цієї теки буде вивантажено на сервер. Якщо ж відповідний пункт не буде позначено, буде передано лише звичайні файли у самій теці. </para>

<figure id="screenshot-popup" float="1">
<title
>Знімок контекстного меню &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="popup.png"/></imageobject>
</mediaobject>
</figure>

<para
>Доступ до найвживаніших дій можна також отримати з контекстного меню, яке можна відкрити наведенням вказівника миші на позначку файла у ієрархічному перегляді з наступним клацанням правою кнопкою миші. <xref linkend="screenshot-popup"/> показує контекстне меню головного вікна &cervisia;. </para>

<para
>Відкрити вікно редагування файла можна простим наведенням вказівника миші на його позначку з наступним подвійним клацанням лівою кнопкою миші, або позначенням файла з наступним натисканням клавіші &Enter;. &cervisia; запустить типову програму, призначену для роботи з файлами цього типу (типова програма для кожного з типів файлів визначається на рівні середовища &kde;). Якщо типова програма не є тією програмою, якою ви бажаєте скористатися, наведіть вказівник миші на позначку файла, клацніть правою кнопкою миші, позначте у меню, що з’явиться, підменю <menuchoice
> <guisubmenu
>Редагувати з</guisubmenu
> </menuchoice
> і оберіть одну з програм, які можуть працювати з відповідним типом файлів. </para>

<sect1 id="addingfiles">
<title
>Додавання файлів</title>

<para
>Додавання файлів до проекту відбувається у два кроки: спочатку файли потрібно зареєструвати за допомогою &CVS; або, іншими словами, <emphasis
>додати до сховища</emphasis
>. Цей крок є необхідним, але не достатнім. Для того, щоб насправді надіслати файли до сховища, вам слід <emphasis
>передати</emphasis
> їх. Подібна схема має важливу перевагу: ви можете передати ці файли разом зі змінами у інших частинах вашого проекту. За дотримання такої процедури кожен зможе з легкістю бачити (наприклад, у повідомленнях електронної пошти про внески), що всі зміни є частиною певного кроку розробки. </para>

<para
>Отже, позначте всі файли, які слід додати у головній області перегляду &cervisia;. Після цього скористайтеся пунктом меню <menuchoice
><guimenu
>Файл</guimenu
><guimenuitem
>Додати до сховища...</guimenuitem
></menuchoice
> або наведіть вказівник миші на один з позначених файлів, клацніть правою кнопкою і оберіть у контекстному меню пункт <guimenuitem
>Додати до сховища...</guimenuitem
>. Програма відкриє діалогове вікно <guilabel
>Додати до CVS</guilabel
>, у якому ви побачите список позначених вами файлів, і попросить підтвердити ваш вибір. Натисніть кнопку <guibutton
>Гаразд</guibutton
>. </para>

<para
>&cervisia; віддає команду</para>

<para>
<screen
><command
>cvs add <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>Якщо цю дію буде виконано успішно, у стовпчику стану доданих файлів має з’явитися напис «Додано до сховища». </para>

<warning
><para
>У &CVS; не було передбачено змістовного керування версіями для бінарних файлів. Наприклад, об’єднання бінарних файлів, зазвичай, не має сенсу. Крім того, типово &CVS; виконує розгортання ключових слів (наприклад, для рядків на зразок <literal
>&dollar;Revision: 1.6 &dollar;</literal
>) під час передавання файла. У бінарних файлах подібні заміни можуть пошкодити файл і зробити його повністю непридатним для використання. </para
></warning>

<para
>Для того, щоб вимкнути описану вище поведінку програми, вам слід передавати бінарні файли (або інші файли, зокрема зображення у форматах Postscript або PNG) за допомогою пункту меню <menuchoice
><guimenu
>Файл</guimenu
><guimenuitem
>Додати двійковий...</guimenuitem
></menuchoice
>. Програма відкриє діалогове вікно <guilabel
>Додати до CVS</guilabel
> зі списком позначених вами бінарних файлів і попросить підтвердити ваш вибір. Натисніть кнопку <guibutton
>Гаразд</guibutton
>. </para>

<para
>&cervisia; віддає команду </para>

<para>
<screen
><command
>cvs add -kb <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

</sect1>


<sect1 id="removingfiles">
<title
>Вилучення файлів</title>

<para
>Подібно до додавання файлів, вилучення файлів виконується у два кроки: спочатку файли слід зареєструвати як вилучені за допомогою пункту меню <menuchoice
><guimenu
>Файл</guimenu
><guimenuitem
>Вилучити зі сховища...</guimenuitem
></menuchoice
> або наведення вказівника на один з позначених файлів з наступним клацанням правою кнопкою миші і вибором пункту контекстного меню <guimenuitem
>Вилучити зі сховища...</guimenuitem
>. Програма відкриє діалогове вікно <guilabel
>Вилучити з CVS</guilabel
> зі списком всіх позначених файлів і попросить вас підтвердити ваш вибір. Натисніть кнопку <guibutton
>Гаразд</guibutton
>. &cervisia; виконає команду </para>
<para>
<screen
><command
>cvs remove -f <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>Після цього зміни у пісочниці має бути надіслано, ймовірно, разом з іншими змінами у проекті. </para>

<note
><para
>Наведена вище команда працюватиме, лише якщо версія файла збігається з версією зі сховища. У іншому випадку буде повернуто повідомлення про помилку. Причина такої поведінки очевидна: якщо ви змінили файл, порівняно з  версією, що зберігається у сховищі, або подібні зміни було внесено кимось іншим, вам спочатку слід переконатися, що ви насправді бажаєте відкинути ці зміни. </para
></note>

</sect1>


<sect1 id="addingremovingdirs">
<title
>Додавання і вилучення тек</title>

<para
>У &CVS; обробка тек відбувається зовсім інакше ніж обробка файлів. Система керування версіями не керує теками, тобто ви не зможете визначити, які теки існували у проекті на певний момент часу. Крім того, теки неможливо вилучити явно (єдиним способом є безпосереднє вилучення тек зі сховища). </para>

<para
>Навзамін, у &CVS; вважається, що теки «не існує» у певній версії проекту, якщо ця тека порожня. Примусово застосувати подібне вилучення можна передаванням параметра <option
>-P</option
> командам <command
>cvs update</command
> і <command
>cvs checkout</command
>. Увімкнути додавання відповідного параметра можна позначенням пункту меню <menuchoice
><guimenu
>Параметри</guimenu
><guimenuitem
>Вилучати порожні теки при оновленні</guimenuitem
></menuchoice
>. </para>

<para
>Додати теку до сховища можна за допомогою пункту меню <menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Додати до сховища...</guimenuitem
></menuchoice
> або наведенням вказівника миші на позначку теки з наступним клацанням правою кнопкою миші і вибором пункту контекстного меню <guimenuitem
>Додати до сховища...</guimenuitem
>. Зауважте, що на відміну від додавання файлів додавання тек не потребує наступного передавання до сховища. &cervisia; виконає команду </para>


<para>
<screen
><command
>cvs add <replaceable
>назва каталогу</replaceable
></command
></screen>
</para>

</sect1>


<sect1 id="committingfiles">
<title
>Надсилання файлів</title>

<para
>Якщо ви внесли досить багато змін до робочої копії і бажаєте надати іншим розробникам доступ до цих змін, вам слід <emphasis
>передати</emphasis
> ці зміни. У процесі передавання ви надішлете ваші змінені файли як нові версії файлів до сховища. Наступне оновлення, виконане іншим розробником на його комп’ютерів, призведе до звантаження змінених вами файлів до робочої копії цього розробника. </para>

<para
>Для того, щоб надіслати декілька файлів, оберіть їх у головному вікні &cervisia;, а потім скористайтеся пунктом меню <menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Передати...</guimenuitem
></menuchoice
> або наведіть на один з позначених файлів вказівник миші, клацніть правою кнопкою і оберіть пункт <guimenuitem
>Передати...</guimenuitem
> у контекстному меню. </para>

<figure id="screenshot-commit" float="1">
<title
>Знімок діалогового вікна надсилання файлів &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="commit.png"/></imageobject>
</mediaobject>
</figure>

<para
>Програма відкриє діалогове вікно, у верхній частині якого буде показано список вибраних файлів, а у нижній — повідомлення журналу для внесених вами змін. &cervisia; може допомогти вам з пошуком потрібного повідомлення журналу у декілька способів: по-перше, ви можете ви можете навести вказівник миші на позначку файла і двічі клацнути лівою кнопкою миші, або натиснути клавішу <keycap
>Enter</keycap
>, щоб переглянути зміни, внесені вами до файла. По-друге, програма покаже вам спадний список використаних вами раніше повідомлень журналу. По-третє, у це діалогове вікно інтегровано редактор записів журналу &cervisia;, який описано нижче. Після натискання у цьому діалоговому вікні кнопки «Гаразд, буде виконано команду </para>

<para>
<screen
><command
>cvs commit -m <replaceable
>повідомлення</replaceable
> <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

 


<note
><para
>Типовою помилкою, з якою ви можете зіткнутися під час надсилання є помилка <errorname
>Up-to-date check failed</errorname
>. Поява подібного повідомлення означає, що хтось вніс у сховище зміни з часу, коли ви востаннє оновлювали свою робочу копію; або, з технічної точки зору, що ваша версія <literal
>BASE</literal
> не є найновішою у власній гілці. У таких випадках &CVS; відмовляється об’єднувати ваші зміни з версією у сховищі. Для вирішення проблеми слід спочатку виконати оновлення, розв’язати всі конфлікти і повторити спробу надсилання. Звичайно ж, якщо ви працюєте над проектом з розробки програмного забезпечення, варто переконатися, що після оновлення програма здатна працювати, — у іншому випадку можливі суперечності між вашою версією і іншими версіями можуть призвести до повної недієздатності програми. </para
></note>

<note>
<para
>Іншою поширеною помилкою, яка призводить до повідомлення про помилку <errorname
>Sticky tag 'X' for file 'X' is not a branch</errorname
> (<errorname
>Липка мітка 'X' для файла 'X' не є гілкою</errorname
>). Таке трапляється, якщо ви намагаєтеся надіслати файли, який ви раніше привели до певної модифікації або мітки за допомогою команди </para>
<para>
<screen
><prompt
>%</prompt
><userinput
>cvs update -r X</userinput
></screen>
</para>
<para
>(яка, наприклад, виконується, коли ви обираєте пункт меню <menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Оновити до мітки/дати...</guimenuitem
></menuchoice
>). У такому випадку мітка файла стає липкою (постійною), тобто будь-які наступні оновлення не призводитимуть до встановлення новішої версії для гілки. Якщо ви маєте намір надсилати нові версії до цієї гілки, вам слід оновити мітку гілки до надсилання даних. </para>
</note>

<para
>За допомогою &cervisia; дуже просто створювати і підтримувати файл ChangeLog у форматі, який рекомендовано для програмних проектів &GNU;. Щоб скористатися можливостями програми, оберіть пункт меню <menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Вставити запис до файла змін...</guimenuitem
></menuchoice
>. Якщо у теці верхнього рівня вашої пісочниці вже існує файл з назвою <filename
>ChangeLog</filename
>, цей файл буде відкрито і ви зможете змінити його вміст. На початку програма додасть у цей файл запис з поточною датою і вашим іменем користувача (яке можна налаштувати у спосіб, описаний у розділі <xref linkend="customize-general"/>). Після внесення потрібних змін діалогове вікно можна закрити натисканням кнопки <guibutton
>Гаразд</guibutton
>. У наступному діалоговому вікні передавання змін, яке ви відкриєте, повідомлення журналу збігатиметься з повідомленням, яке ви вписали до файла ChangeLog. </para>

</sect1>


<sect1 id="resolvingconflicts">
<title
>Розв’язання конфліктів</title>

<para
>Конфлікти можуть виникати, якщо ви вносите зміни до файла, який вже було змінено іншим розробником. &CVS; виявляє конфлікт, коли ви оновлюєте змінений файл. Після виявленні конфлікту &CVS; намагається об’єднати зміни, внесені іншим розробником, з вашою робочою копією. Спроба об’єднання може зазнати невдачі, якщо ці зміни було внесено до однакових частин файла. У такому випадку сервер &CVS; надсилає повідомлення про помилку. </para>

<para
>У головній області перегляду &cervisia; файли з конфліктом позначаються написом «Конфлікт» у стовпчику стану, а також виділяються червоним кольором. Після цього вашим завданням є розв’язання конфліктів до надсилання нової версії файла. У &CVS; не передбачено можливості надсилання будь-яких файлів з конфліктами до того, як ці конфлікти буде розв’язано. Якщо ви працюєте з головною областю перегляду програми, ви, звичайно ж, можете розв’язати конфлікти у традиційний спосіб: навести вказівник миші на позначку конфліктного файла, двічі клацнути лівою кнопкою миші і змінити файл за допомогою вашого улюбленого текстового редактора.</para>

<para
>&CVS; позначає конфліктні файли позначками всередині таких файлів, розставленими у такий спосіб:</para>

<screen
>&lt;&lt;&lt;&lt;&lt;&lt;&lt;
Зміни у вашій робочій копії
=======
Зміни у сховищі
&gt;&gt;&gt;&gt;&gt;&gt;&gt; номер_модифікації
</screen>

<para
>Вам слід замінити весь цей блок новою об’єднаною версією. Звичайно ж, у вас залишається широкий простір для розв’язання всього набору конфліктів: у кожному випадку ви можете обрати один або інший варіант. Ви також можете вирішити, що обидва підходи є неправильними і переписати весь блок, або навіть весь файл, від початку. </para>

<para
>На щастя, у &cervisia; передбачено кращий інтерфейс для роботи з такого роду конфліктами. Наявність цього інтерфейсу не означає, що у вас ніколи не виникне потреби у редагуванні файлів вручну, але, принаймні, такої потреби не виникатиме у разі найпростіших конфліктів. Для того, щоб відкрити діалогове вікно <guilabel
>CVS вирішення</guilabel
> &cervisia;, скористайтеся пунктом меню <menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Вирішити...</guimenuitem
></menuchoice
> або наведіть вказівник миші на позначку відповідного файла, клацніть правою кнопкою миші і оберіть пункт <guimenuitem
>Вирішити...</guimenuitem
> з контекстного меню. </para>

<figure id="screenshot-resolve" float="1">
<title
>Знімок діалогового вікна вирішення конфліктів &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="resolve.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна вирішення конфліктів &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>У верхній частині цього діалогового вікна ви побачите вашу версію, <guilabel
>Ваша версія (A)</guilabel
>, файла ліворуч і версію зі сховища, <guilabel
>Інша версія (B)</guilabel
>, праворуч. Відмінності між цими версіями буде позначено червоним кольором. Під цими двома версіями ви побачите поле <guilabel
>Поєднана версія</guilabel
>. У поєднаній версії буде показано частину тексту, яку ви отримаєте у вашій робочій копії, якщо натиснете кнопку <guibutton
>Зберегти</guibutton
>. </para>

<para
>Ви можете переводити перегляд назад і вперед списком фрагментів з конфліктами натисканням кнопок <guibutton
>&lt;&lt;</guibutton
> і <guibutton
>&gt;&gt;</guibutton
>. За допомогою середини нижньої частини діалогового вікна ви зможете слідкувати за тим, який з фрагментів зараз позначено. Наприклад, <literal
>2 з 3</literal
> означає, що зараз ви працюєте над другим з фрагментів з конфліктами з 3. </para>

<para
>Ви можете один за одним вирішити, який з фрагментів має залишитися у об’єднаній версії файла. Якщо ви натиснете кнопку <guibutton
>A</guibutton
>, перевагу буде надано вашій версії. Натискання кнопки <guibutton
>B</guibutton
>, віддасть перевагу версії зі сховища. Якщо ви натиснете кнопку <guibutton
>A+B</guibutton
>, у файл буде додано обидві версії, вашу версію буде додано першою. Натискання кнопки <guibutton
>B+A</guibutton
> призведе до подібного результату, але порядок фрагментів буде іншим: спочатку буде додано версію фрагмента зі сховища, а потім вже вашу. </para>

<para
>Якщо вас не влаштовують обидві версії, ви можете натиснути кнопку <guibutton
>Редагувати</guibutton
>, щоб відкрити простий текстовий редактор, за допомогою якого ви зможете вручну виправити конфліктний фрагмент. Після завершення редагування натисніть кнопку <guibutton
>Гаразд</guibutton
>, щоб повернутися до діалогового вікна <guilabel
>CVS вирішення</guilabel
> і поновити процес розв’язання конфліктів. Ви побачите фрагмент, який ви щойно змінили, у розділі <guilabel
>Поєднана версія</guilabel
> з внесеними змінами. </para>

<para
>Щоб зберегти внесені зміни, з перезаписом версії з робочої копії, натисніть кнопку <guibutton
>Зберегти</guibutton
>. Зауважте, що натискання цієї кнопки призведе до збереження не лише фрагмента, над яким ви щойно працювали, а й усіх фрагментів поточного файла. Якщо ви бажаєте зберегти змінену версію до іншого файла, натисніть кнопку <guibutton
>Зберегти як...</guibutton
>. Натискання кнопки <guibutton
>Закрити</guibutton
> призведе до закриття діалогового вікна. Якщо ви закриєте вікно без збереження змін, ці зміни буде втрачено. </para>

</sect1>

</chapter>


<chapter id="obtaininginformation">
<title
>Отримання відомостей про файли і створення латок</title>

<sect1 id="diff">
<title
>Спостереження за різницями між версіями</title>

<para
>У &cervisia; існує декілька місць, з яких ви можете викликати вікно, у якому буде показано відмінності між версіями певного файла: </para>

<itemizedlist>

<listitem
><para
>У основній області перегляду ви можете скористатися пунктом меню <menuchoice
><guimenu
>Перегляд</guimenu
><guimenuitem
>Відмінність від сховища (BASE)...</guimenuitem
></menuchoice
>. Дані, які вам буде показано, засновано на результатах роботи команди <command
>cvs diff</command
>, яка виводить всі рядки, які відрізняються у вашій пісочниці і у версії, яку ви звантажили зі сховища (її також називають <literal
>BASE</literal
>). Цей пункт меню буде корисним перед передаванням файла для створення відповідного повідомлення журналу. </para
></listitem>

<listitem
><para
>Ви можете переглянути відмінності між версією у вашій пісочниці і версією у головній гілці розробки (яка також називається <literal
>HEAD</literal
>) за допомогою пункту меню <menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Відмінність від сховища (HEAD)...</guimenuitem
></menuchoice
>. </para
></listitem>

<listitem
><para
>Ви можете переглянути відмінності між двома останніми версіями вибраного файла за допомогою пункту меню <menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Остання зміна...</guimenuitem
></menuchoice
>. </para
></listitem>

<listitem
><para
>Доступ до пунктів меню <guimenuitem
>Відмінність від сховища (BASE)...</guimenuitem
>, <guimenuitem
>Відмінність від сховища (HEAD)...</guimenuitem
> і <guimenuitem
>Остання зміна...</guimenuitem
> можна отримати за допомогою основного контекстного меню, яке викликається наведенням вказівника миші на позначку потрібного файла з наступним клацанням правою кнопкою миші. </para
></listitem>

<listitem
><para
>У діалоговому вікні, яке буде показано, коли ви передаєте декілька файлів, ви можете викликати вікно відмінностей, якщо виберете позначку назви файла у списку вибору і або наведете на неї вказівник миші і двічі клацнете лівою кнопкою миші, або натиснете клавішу <keycap
>Enter</keycap
>. Вікно, яке відкриє програма, повністю збігатиметься з вікном, яке можна відкрити за допомогою пункту меню <menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Відмінність від сховища (BASE)...</guimenuitem
></menuchoice
> з основної області перегляду програми. </para
></listitem>

<listitem
><para
>За допомогою діалогового вікна перегляду журналу ви можете позначити дві модифікації певного файла і викликати діалогове вікно, у якому буде показано відмінності між ними (див. <xref linkend="browsinglogs"/>). </para
></listitem>

</itemizedlist>

<para
>Як ви мабуть і очікували, &cervisia; не просто покаже вам вивід команди <command
>diff</command
>, відданої з термінала, — програма покаже вам відмінності у графічному вигляді, як це показано на знімку <xref linkend="screenshot-log"/>. </para>

<figure id="screenshot-log" float="1">
<title
>Знімок діалогового вікна різниць &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="diff.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна відмінностей у &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Текст, показаний у діалоговому вікні буде покращеним варіантом тексту, який виводить команда diff, викликана з параметром <option
>-u</option
>. Ви зможете переглянути відмінні версії у двох ділянках вікна, рядки у яких буде показано таким чином, щоб ви змогли провести порівняльний аналіз. Це означає, що, якщо там, де текст було додано або вилучено, у відповідному вікні ви побачите порожні рядки з позначкою <literal
>+++++</literal
>, яку буде показано ліворуч. Крім того, ви зможете бачити номер кожного з рядків у лівому стовпчику. </para>

<para
>У другому стовпчику області вікна, розташованої праворуч, ви зможете побачити, які саме зміни було внесено. Серед можливих типів <literal
>Додати</literal
>, <literal
>Вилучити</literal
> і <literal
>Змінити</literal
>. Відповідні рядки буде позначено синім, зеленим і червоним кольором. У середній частині діалогового вікна ви побачите стиснуте зображення розподілу кольорових позначок. Таким чином, ви зможете стежити за всіма змінами у файлі. Крім того, ви можете скористатися розташуванням розфарбованих областей на стиснутому перегляді для переходу до відповідних фрагментів коду за допомогою смужок гортання. </para>

<para
>Зазвичай, смужки гортання на лівій і правій панелі буде синхронізовано, тобто, якщо ви гортатимете текст ліворуч, праворуч текст також гортатиметься. Ви можете змінити цю поведінку програми за допомогою позначення або зняття позначки з пункту <guibutton
>Синхронізувати смужки прокрутки</guibutton
>. </para>

<para
>Настанови щодо способів налаштування діалогового вікна відмінностей можна знайти у розділі <xref linkend="customize-diff"/>. </para>

</sect1>

<sect1 id="creatingpatches">
<title
>Створення латок</title>

<para
>Іноді у вас може виникнути потреба у надсиланні внесених вами змін для рецензування перед їх надсиланням до сховища, у вас також може не бути доступу на запис до сховища (отже, ви просто не зможете надіслати зміни). У &CVS; передбачено стандартні формати для поширення змін у вашій робочій копії у такий спосіб, щоб інші люди змогли переглянути ваші зміни, випробувати їх на власній робочій копії і внести їх до сховища &CVS;. Файл, у якому міститимуться подібні зміни називається <firstterm
>латкою</firstterm
>, його можна створити командою <command
>cvs diff</command
> у той самий спосіб, у який створюються файли відмінностей у розділі <xref linkend="diff"/>. Поширення латок замість набору файлів зменшує обсяг даних, які слід передати, з латками легше працювати, оскільки ви можете надіслати єдиний файл з латкою, у якому міститимуться зміни у багатьох файлах кодів. </para>

<para
>Доступ до цієї можливості у &cervisia; можна отримати за допомогою пункту меню <menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Створити латку для сховища...</guimenuitem
></menuchoice
>. </para>

<important
><para
>За допомогою пункту меню <guimenuitem
>Створити латку для сховища...</guimenuitem
> можна створити латку, яка міститиме всі зміни у всіх файлах вашої робочої копії (пісочниці) порівняно з <literal
>BASE</literal
> сховища. Тому вибір файлів у основній області перегляду програми не вплине на перелік змін у створеному файлі латки. </para
></important>

<para
>Іншою можливістю є позначення одного файла у основній області перегляду з наступним використанням пункту <guimenuitem
>Переглянути журнал...</guimenuitem
> з меню <guimenu
>Перегляд</guimenu
> або наведення вказівника миші на позначку файла з наступним клацанням правою кнопкою миші і вибором пункту <guimenuitem
>Переглянути журнал...</guimenuitem
> з контекстного меню. Обидві ці послідовності дій призведуть до відкриття <link linkend="browsinglogs"
>вікна перегляду журналу</link
>. Вам слід обрати версію, до якої ви бажаєте створити латку як модифікацію &quot;A&quot;, а потім натиснути кнопку <guilabel
>Створити латку...</guilabel
>. Програма створить латку з відмінностями між <emphasis
>позначеним файлом</emphasis
> у вашій робочій копії і версією, обраною як модифікація &quot;A&quot;. </para>

<para
>Перш ніж розпочати створення латки, &cervisia; відкриє діалогове вікно, за допомогою якого ви зможете налаштувати формат виводу. </para>

<figure id="screenshot-patch" float="1">
<title
>Знімок діалогового вікна накладання латки у &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="patch.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна накладання латки у &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<variablelist>

<varlistentry>
<term
><guilabel
>Формат виводу</guilabel
></term>
<listitem
><para
>Можна використовувати один з трьох форматів виводу: </para>
<para
><guilabel
>Звичайний</guilabel
>: формат, яким можна скористатися для того, щоб редактор ed міг автоматично створити іншу копію старого файла, яка збігатиметься з новим файлом. За використання нормального формату виводу зміни буде позначено символами &lt; і &gt;, контекстна інформація не додаватиметься. </para>
<para
><guilabel
>Уніфікований</guilabel
>: найпоширеніший формат обміну латками. За використання уніфікованого формату для запису відмінностей, окрім номерів рядків, буде використано рядки контексту. Додавання цих рядків зробить процес застосування латок надійнішим. У цьому форматі відмінності буде викладено у компактній і придатній для читання формі, з полем заголовка для кожного з файлів і окремими розділами (шматками) для кожної з відмінностей. Рядки контексту, які буде додано до кожної відмінності, спростять читання змін. За використання уніфікованого формату виводу для позначення змін буде використано символи «+» і «-». </para>
<para
><guilabel
>Контекстний</guilabel
>, за використання цього формату буде виведено ті самі дані, що і за використання уніфікованого формату, але у менш компактному вигляді. У файла виводу у контекстному форматі зміни буде позначено символом «!». </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Кількість рядків контексту:</guilabel
></term>
<listitem
><para
>Тут ви можете вказати кількість рядків контексту для форматів уніфікованого та контекстного виводу. Цим параметром не можна буде скористатися для звичайного формату виводу, оскільки за використання цього формату контекстні дані не записуються. Збільшення кількості рядків контексту полегшує читання латки і робить її застосування точнішим, але збільшує розмір латки. Рекомендуємо вам використовувати принаймні два рядки контексту для належного функціонування дії з латання. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Параметри ігнорування</guilabel
></term>
<listitem
><para
>Тут ви можете вказати зміни, які програма вважатиме відмінностями під час створення латки. </para
></listitem>
</varlistentry>

</variablelist>


<para
>Після визначення формату виводу &cervisia; створює латку і відкриває діалогове вікно <guilabel
>Зберегти як</guilabel
>. За допомогою цього діалогового вікна ви зможете вказати назву файла латки і його розташування. </para>


</sect1>

<sect1 id="annotate">
<title
>Перегляд приміток до файла</title>

<para
>За допомогою команди <command
>cvs annotate</command
> у &CVS; можна побачити, — для кожного з рядків будь-якого файла, — хто останнім змінив цей рядок. Результати виконання цієї команди можуть бути корисними для визначення того, хто саме змінив поведінку програми, або отримання даних про те, кого саме слід просити про зміну або усування вади у коді. </para>

<para
>У &cervisia; передбачено доступ до цієї функціональної можливості, але програма значно покращує перегляд даних, роблячи його інтерактивним. Відкрити перегляд приміток можна за допомогою пункту меню  <menuchoice
><guimenu
>Перегляд</guimenu
><guimenuitem
>Примітка...</guimenuitem
></menuchoice
>. Іншим способом відкриття цього діалогового вікна є натискання кнопки <guilabel
>Примітка</guilabel
> у <link linkend="browsinglogs"
>діалоговому вікні перегляду журналу</link
>, за допомогою якого ви зможете обрати версію файла, дані щодо якої ви бажаєте переглянути. У розділі <xref linkend="screenshot-annotate"/> ви можете переглянути знімок цього діалогового вікна. </para>

<figure id="screenshot-annotate" float="1">
<title
>Знімок діалогового вікна додавання коментарів у &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="annotate.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна додавання коментарів у &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>У діалоговому вікні приміток ви зможете побачити область з вмістом останньої версії вибраного файла (або версії модифікації &quot;A&quot;, якщо ви відкрили це діалогове вікно з <link linkend="browsinglogs"
>діалогового вікна перегляду журналу</link
>). У стовпчиках перед текстом ви бачитимете дані, пов’язані з останньої зміною кожного з рядків. У першому стовпчику буде показано номери рядків. У другому стовпчику ви побачите ім’я автора і номер модифікації. Нарешті у третьому стовпчику ви побачите справжній вміст відповідного рядка. </para>

<para
>Відповідно, якщо певний рядок видається вам дивним або ви припускаєте, що він спричиняє ваду у коді, ви негайно дізнаєтеся про те, хто відповідальний за зміну цього рядка. Але це ще не все, — ви зможете дізнатися <emphasis
>чому</emphasis
> було змінено цей рядок. Для того, щоб отримати цю інформацію, наведіть вказівник миші на відповідний номер модифікації. За деякий час з’явиться панель підказки з повідомленням журналу і датою, які відповідають цій зміні. </para>

</sect1>


<sect1 id="browsinglogs">
<title
>Перегляд журналів &CVS;</title>

<para
>Якщо ви позначите один з файлів у головній області перегляду програми і оберете пункт <guimenuitem
>Переглянути журнал...</guimenuitem
> з меню <guimenu
>Перегляд</guimenu
> або наведете вказівник миші на позначку файла, клацнете правою кнопкою миші і оберете пункт <guimenuitem
>Переглянути журнал...</guimenuitem
> з контекстного меню, програма відкриє діалогове вікно <guilabel
>Журнал CVS</guilabel
> (якщо ви позначите декілька файлів, нічого не трапиться, оскільки &cervisia; може створювати і обробляти одночасно лише журнал для одного файла). За допомогою цього діалогового вікна ви зможете отримати доступ до функціональних можливостей, які значно перевищують простий перегляд журналу змін файла. Використовуючи це діалогове вікно як переглядач версій, ви можете: </para>

<itemizedlist>

<listitem
><para
>Переглядати модифікацію, автора, дату, версію, повідомлення, яким супроводжувалося надсилання, і мітки для кожної з версій позначеного файла. </para
></listitem>

<listitem
><para
>Переглядати графічне представлення у вигляді дерева, у якому програма покаже всі версії і випуски позначеного файла. </para
></listitem>

<listitem
><para
>Переглядати будь-яку з версій позначеного файла (за допомогою типової програми). </para
></listitem>

<listitem
><para
>Переглядати будь-яку версію позначеного файла з примітками до вмісту </para
></listitem>

<listitem
><para
>Переглядати відмінності між будь-якими двома версіями позначеного файла, зокрема переглядати відмінності між поточною робочою версією і будь-якою з попередніх версій позначеного файла. </para
></listitem>

<listitem
><para
>Створювати латки, у яких міститимуться відмінності між двома будь-якими версіями позначеного файла, зокрема між поточною робочою версією і будь-якою з попередніх версій позначеного файла. </para
></listitem>

</itemizedlist>

<figure float="1">
<title
>Знімок діалогового вікна перегляду журналів &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="logtree.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна перегляду журналів &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Ви можете переглянути журна у тому вигляді, у якому його виводить команда <command
>cvs log</command
> (<guilabel
>Вивід CVS</guilabel
>), у вигляді <guilabel
>Дерева</guilabel
> або у формі <guilabel
>Списку</guilabel
>. Вибір типу перегляду, звичайно ж, є справою ваших уподобань і залежить від типу даних, які вам потрібні. За використання деревоподібного перегляду спрощується визначення того, що було зроблено у різних гілках різними розробниками. На панелях підказок ви зможете переглянути відповідні повідомлення журналу. Список за своєю природою є лінійним, а отже ви не зможете побачити у ньому розподілу на гілки. З іншого боку у ньому ви зможете ознайомитися у сконцентрованій формі з іншими даними, пов’язаними з файлом, зокрема з часом внесення кожної зміни і початковою частиною повідомлення журналу. Дані виводу &CVS; повні, але мають значний об’єм, їх важко читати. Щоб частково зняти ці проблеми, у програмі передбачено можливість пошуку у виводі &CVS; за допомогою натискання кнопки <guibutton
>Знайти...</guibutton
>. </para>

<para
>Щоб отримати докладнішу інформацію щодо певної модифікації, ви можете натиснути відповідну позначку у списку або ієрархічному (деревоподібному) перегляді. Після цього поля у середній частині діалогового вікна буде заповнено відповідними даними, які буде виведено командою <command
>cvs log</command
>. Ви можете позначити дві модифікації, які називаються у програмі &quot;A&quot; і &quot;B&quot;, і прослідкувати за ними за допомогою функціональних можливостей, які надають у ваше розпорядження кнопки діалогового вікна. Модифікацію &quot;A&quot; можна обрати клацанням лівою кнопкою миші, а модифікацію &quot;B&quot; — клацанням середньою кнопкою. У перегляді списку ви також можете пересуватися модифікаціями за допомогою клавіш зі стрілочками. Для того, щоб позначити модифікації &quot;A&quot; і &quot;B&quot;, ви можете скористатися клавіатурними скороченнями <keycombo action="simul"
>&Ctrl;<keycap
>A</keycap
></keycombo
>, <keycombo action="simul"
>&Ctrl;<keycap
>B</keycap
></keycombo
>, відповідно. За використання перегляду <guilabel
>Вивід CVS</guilabel
> ви можете натискати для позначення модифікації мітки <guilabel
>Вибрати як модифікацію A</guilabel
> і <guilabel
>Вибрати як модифікацію B</guilabel
>. </para>

<para
>Якщо ви натиснете кнопку <guibutton
>Примітка</guibutton
>, програма відкриє діалогове вікно, у якому буде показано текст файла у модифікації, позначеній як &quot;A&quot;. У кожному рядку буде показано дані про те, хто останнім змінив цей рядок, та про те, під час якої з модифікацій це сталося. Докладніше можна дізнатися про примітки до версій у розділі <xref linkend="annotate"/>. </para>

<para
>Якщо ви натиснете кнопку <guibutton
>Порівняння</guibutton
>, програма виконає команду <command
>cvs diff</command
> і відкриє діалогове вікно, у якому буде показано всі відмінності між позначеними модифікаціями. Якщо ви позначите модифікацію &quot;A&quot;, але не позначите модифікації &quot;B&quot;, &cervisia; створить перелік відмінностей між версією файла, позначеною як модифікація &quot;A&quot;, і версією файла з робочої копії. Це надасть вам змогу переглянути відмінності між вашою версією файла і будь-якою з доступних у &CVS; версій. Щоб полегшити перегляд змін, буде використано різні кольори для доданих, вилучених і змінених рядків. Докладніше дізнатися про перегляд відмінностей можна за допомогою розділу <xref linkend="diff"/>. </para>

<para
>Якщо ви натиснете кнопку <guibutton
>Створити латку...</guibutton
>, програма відкриє діалогове вікно, у якому ви можете визначити параметри форматування для створення файла, що міститиме всі відмінності між двома позначеними модифікаціями. Якщо ви позначили модифікацію &quot;A&quot;, але не позначили модифікацію &quot;B&quot;, &cervisia; створить файл відмінностей між версією файла, позначеною як модифікація &quot;A&quot;, і версією файла у робочій копії. Ви зможете створити латку або файл відмінностей між вашою версією файла і будь-якою з версій, доступних у &CVS;. Після налаштування формату латки у діалоговому вікні і натискання кнопки <guibutton
>Гаразд</guibutton
>, програма виконає команду <command
>cvs diff</command
> для створення файла відмінностей. Після цього буде відкрито діалогове вікно <guilabel
>Зберегти як</guilabel
>. Введіть назву файла латки, який має створити &cervisia;, і його адреси, щоб зберегти його. Докладніше про створення латок та параметри форматування латок можна дізнатися з розділу <xref linkend="creatingpatches"/>. </para>

<para
>Якщо ви натиснете кнопку <guibutton
>Перегляд</guibutton
>, &cervisia; звантажить версію, позначену як &quot;A&quot; і покаже вміст відповідного файла за допомогою типової програми, визначеної для перегляду файлів відповідного типу. </para>

<para
>Натискання кнопки <guibutton
>Закрити</guibutton
> призведе до закриття цього діалогового вікна, — фокус повернеться до основного вікна програми. </para>


<para
>Для створення журналу, який є джерелом даних для діалогового вікна <guilabel
>Журнал CVS</guilabel
>, &cervisia; виконує таку команду: </para>


<para>
<screen
><command
>cvs log <replaceable
>назва файла</replaceable
></command
></screen>
</para>

</sect1>

<sect1 id="browsinghistory">
<title
>Перегляд журналу</title>

<para
>Якщо у сховищі, яким ви користуєтеся, увімкнено запис журналу, &cervisia; зможе показати вам журнал певних подій на зразок звантажень, вивантажень, створення випусків, оновлень і випусків. Скористайтеся пунктом <guimenuitem
>Історія</guimenuitem
> з меню <guimenu
>Перегляд</guimenu
>, і &cervisia; виконає таку команду: </para>

<para>
<screen
><command
>cvs history -e -a</command
></screen>
</para>

<note
><para
>Ця команда звантажить повний журнал, тобто список подій для всіх користувачів і для всіх модулів, з сервера. Подібний журнал може бути досить об’ємним. </para
></note>

<para
>Після цього ви зможете переглянути список подій, впорядкованих за датою. У другому стовпчику списку буде показано тип події: </para>

<itemizedlist>

<listitem
><para
>Отримання — користувач, ім’я якого показано у стовпчику «Автор», звантажив певний модуль </para
></listitem>

<listitem
><para
>Мітка — користувач використав команду <command
>cvs tag</command
>. Зауважте, що використання команди <command
>cvs tag</command
> (її програма виконує після вибору пункту меню &cervisia; <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Мітка/Гілка...</guimenuitem
></menuchoice
>) не буде записано у базі даних журналу дій. Причини такої поведінки є історичними (див. <acronym
>ЧаП</acronym
> &CVS;). </para
></listitem>

<listitem
><para
>Випуск — користувач випустив певний модуль. Зазвичай, цю команду використовують рідко, вона не має великого сенсу. </para
></listitem>

<listitem
><para
>Оновлення, вилучено — користувач виконав оновлення файла, який було вилучено зі сховища. Внаслідок цього файл було вилучено з його робочої копії. </para
></listitem>

<listitem
><para
>Оновлення, скопійоване — користувач оновив файл. Нову версію було скопійовано до робочої копії. </para
></listitem>

<listitem
><para
>Оновлення, об’єднано — користувач оновив файл. Зміни у версії зі сховища було об’єднано з робочою копією. </para
></listitem>

<listitem
><para
>Оновлення, конфлікт — користувач оновив файл, було виявлено конфлікт з власною модифікацією користувача. </para
></listitem>

<listitem
><para
>Передача, змінено — користувач передав змінений файл. </para
></listitem>

<listitem
><para
>Передача, вилучено — користувач вилучив файл і передав ці зміни. </para
></listitem>

<listitem
><para
>Передати, вилучене — користувач вилучив файл і передав ці зміни. </para
></listitem>

</itemizedlist>

<figure id="screenshot-history" float="1">
<title
>Знімок діалогового вікна історії &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="history.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна історії &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Ви можете впорядкувати список за іншими критеріями простим натисканням заголовка відповідного стовпчика. Щоб впорядкувати записи журналу потрібним вам чином, існують і інші параметри фільтрування, які активуються позначенням відповідних полів: </para>

<itemizedlist>
<listitem
><para
>Показати події передачі — показувати передачі даних до сховища</para
></listitem>
<listitem
><para
>Показати події отримання — показувати звантаження зі сховища</para
></listitem>
<listitem
><para
>Показати події міток — показувати події зі створення випусків</para
></listitem>
<listitem
><para
>Показати інші події — показувати події, які не належать до жодної з перелічених вище категорій</para
></listitem>
<listitem
><para
>Тільки користувач — показувати лише події, які були наслідком дій певного користувача</para
></listitem>
<listitem
><para
>Тільки назви файлів, які збігаються з — фільтрувати назви файлів за вказаним формальним виразом</para
></listitem>
<listitem
><para
>Тільки теки, які збігаються з — фільтрувати назви тек за вказаним формальним виразом</para
></listitem>
</itemizedlist>

<para
>Ось список спеціальних символів, які буде розпізнано інструментом обробки формальних виразів: </para>

<itemizedlist>

<listitem
><para
><literal
>x*</literal
> відповідає будь-якій кількості символів <literal
>x</literal
>. </para
></listitem>

<listitem
><para
><literal
>x+</literal
> відповідає одному або декільком символам <literal
>x</literal
>. </para
></listitem>

<listitem
><para
><literal
>x?</literal
> відповідає одному символу <literal
>x</literal
> або його відсутності. </para
></listitem>

<listitem
><para
><literal
>^</literal
> відповідає початку рядка. </para
></listitem>

<listitem
><para
><literal
>$</literal
> відповідає кінцю рядка. </para
></listitem>

<listitem
><para
><literal
>[a-cx-z]</literal
> відповідає набору символів, наприклад, у цьому випадку набір складається з a,b,c,x,y,z. </para
></listitem>

</itemizedlist>

</sect1>


</chapter>

<chapter id="advancedusage">
<title
>Додаткові можливості</title>

<sect1 id="updatingto">
<title
>Оновлення до випуску, гілки або певної дати</title>

<para
>Гілки модуля є паралельними версіями модуля. Непоганим прикладом з життя, коли може виникнути потреба у цій можливості, є випуск проекту розробки програмного забезпечення. Після головного випуску було виявлено вади у коді, які слід виправити, але користувачі також бажають, щоб ви додали до програми нові можливості. Дуже важко виконати обидва завдання одночасно, оскільки з додаванням нових можливостей, зазвичай, додаються нові помилки, що ускладнює виявлення старих помилок. Щоб розв’язати цю дилему, у &CVS; можна створити паралельну версію, яку ми називатимемо «гілку стабільного випуску», куди ви вноситимете лише виправлення вад, основну гілку (HEAD) можна використовувати для додавання нових можливостей. </para>

<para
>Мітки використовуються для позначення версії проекту. &CVS; позначає версію кожного файла міткою, отже, коли ви звантажуєте або оновлюєте копію до певної мітки, ви завжди отримуватимете однакові версії файлів. Тому, на відміну від гілок, мітки є сталими: ви не можете розробляти мітку. Мітки корисні для позначення випусків, значних змін у коді тощо. </para>

<para
>Якщо ви розробляєте або продовжуєте розробку проекту програмного забезпечення, вам не обов’язково весь час продовжувати розробку головної гілки. Після випуску, ймовірно, ви певний час працюватимете з випущеною гілкою, щоб отримати переваги її відносної стабільності, виправити вади, додати переклади тощо. Для виконання всіх цих дій вам доведеться оновити випущену гілку. Всі ваші файли буде оновлено до останньої версії файлів у відповідній гілці. Після оновлення всі ваші нові внески до сховища буде також вивантажено до нової гілки. </para>

<para
>Крім того, якщо ви бажаєте стежити за певною вадою, про яку вам було повідомлено після створення мітки випуску, у &CVS; передбачено можливість отримання програмного забезпечення у вигляді, у якому його було випущено, оновленням до цієї мітки. Якщо ж ви бажаєте отримати ранішу версію вашого проекту, ви можете оновити вашу робочу копію до певної дати. Ця дія може бути корисною, якщо між двома випусками у проекті з’явилася помилка, а у вас склалася певна думка щодо того, коли це сталося. Якщо ви оновлюєте копію до певної дати або мітки, версії ваших файлів збігатимуться з версіями, які перебували у сховищі у вказану дату, або з версіями, які було позначено вказаною міткою. </para>

<warning
><para
>Перш ніж виконувати оновлення до іншої гілки або мітки, переконайтеся, що ви передали до сховища всі внесені вами до гілки, над якою ви працювали, зміни. Якщо ви не готові передавати ваші зміни, але і не бажаєте їх відкидати, не оновлюйте копію до нової гілки, оскільки ви можете втратити всі ваші зміни. Крім того, ви можете створити нове <link linkend="checkingout"
>звантаження</link
>, щоб працювати паралельно з обома версіями. </para
></warning>

<figure id="screenshot-updatetag" float="1">
<title
>Знімок діалогового вікна оновлення до випуску &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="updatetag.png"/></imageobject>
<textobject
><phrase
>Знімок діалогового вікна оновлення до випуску &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<variablelist>
<varlistentry>
<term
><guilabel
>Оновлення до гілки</guilabel
></term>
<listitem
><para
>Позначте цей пункт, щоб оновити копію до певної гілки. Введіть назву гілки у спадному текстовому полі (або натисніть кнопку <guilabel
>Отримати список</guilabel
>, щоб отримати список гілок з сервера &CVS;, і оберіть потрібну вам гілку зі спадного списку). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Оновлення до випуску</guilabel
></term>
<listitem
><para
>Позначте цей пункт, щоб оновити копію до певної мітки. Введіть назву мітки у спадному текстовому полі (або натисніть кнопку <guilabel
>Отримати список</guilabel
>, щоб отримати список міток з сервера &CVS;, і оберіть потрібну вам мітку зі спадного списку). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Оновлення до дати</guilabel
></term>
<listitem
><para
>Позначте цей пункт, щоб оновити копію до певної дати. У полі, розташованому нижче, ви можете ввести дату у широкому діапазоні форматів дат. Одним з можливих форматів є <literal
>yyyy-mm-dd</literal
>, де <literal
>yyyy</literal
> — це рік, <literal
>mm</literal
> — місяць (цифрами), а <literal
>dd</literal
> — це день. Крім того, ви можете скористатися фразами англійською, зокрема <literal
>yesterday</literal
> або <literal
>2 weeks ago</literal
>. </para
></listitem>
</varlistentry>

</variablelist>

<note
><para
>Оновлення до мітки або дати зробить їх «липкими», тобто ви не зможете надіслати до сховища подальші модифікації цих файлів (якщо мітка не є міткою гілки). Щоб повернутися до головної гілки, скористайтеся пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Оновити до HEAD</guimenuitem
></menuchoice
>. </para
></note>

<para
>Команда, яку буде віддано для оновлення до гілки або випуску, буде такою: <screen
><command
>cvs update -r <replaceable
>мітка</replaceable
></command
></screen>
</para>

<para
>Команда, яку буде віддано для оновлення до дати, буде такою: <screen
><command
>cvs update -D <replaceable
>дата</replaceable
></command
></screen>
</para>

<para
>Команда, яку буде віддано для оновлення головної гілки (HEAD), буде такою: <screen
><command
>cvs update <option
>-A</option
></command
></screen>
</para>

</sect1>


<sect1 id="taggingbranching">
<title
>Робота з мітками випусків і гілок</title>

<para
>Тут ми обговорюємо лише технічні аспекти встановлення міток і гілок. Якщо ви лише <emphasis
>користувач</emphasis
>, а не адміністратор сховища, ймовірно, ви не зіткнетеся з цією проблемою. Якщо ж ви сам собі адміністратор, вам спочатку слід прочитати про нетехнічні проблеми, пов’язані з відділенням гілок, щоб дізнатися про те, наскільки тривалим і пов’язаним з помилками може бути супровід різних гілок. У додатку наведено декілька посилань, пов’язаних з цією темою. </para>

<para
>Просте встановлення мітки — це те, що ви зазвичай робите під час створення випуску. Це потрібно для того, що ви могли будь-коли повернутися до стану проекту у відповідний час. Міткам, зазвичай, надають назви, у яких вказують назву проекту і номер версії. Наприклад, доступ до &cervisia; 1.0 можна отримати за міткою <literal
>CERVISIA_1_0</literal
>. &cervisia; повністю виконує строгі правила &CVS; щодо побудови коректної назви мітки. Назва має починатися з літери і може містити літери, цифри, дефіси і символи підкреслювання. </para>

<para
>Зазвичай, у вас має виникнути потреба у створенні мітки для всього проекту (хоча, звичайно ж, &CVS; надає вам змогу створити мітку для підмножини списку файлів). Для прикладу, позначте теку верхнього рівня у області перегляду і скористайтеся пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Мітка/Гілка</guimenuitem
></menuchoice
>. Після цього введіть назву мітки, натисніть клавішу <keycap
>Enter</keycap
>, ось і все. </para>

<para
>Створення гілки нічим не складніше: у діалоговому вікні позначте пункт <guibutton
>Створити гілку з цією міткою</guibutton
>. Крім того, ви можете вилучити існуючу мітку: скористайтеся пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Вилучити мітку</guimenuitem
></menuchoice
> у основному вікні програми. </para>

<para
>Іншим аспектом створення гілок є об’єднання версій з певної гілки та поточної гілки. Якщо ви маєте намір виконати таке об’єднання, скористайтеся пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Об’єднати...</guimenuitem
></menuchoice
>. У діалоговому вікні, яке відкриється, ви зможете обрати один з двох варіантів: </para>

<para
>Ви можете об’єднати всі зміни, внесені у гілці, до поточної гілки. У такому випадку позначте пункт <guibutton
>Об’єднати з гілок</guibutton
> і вкажіть гілку, з якою ви бажаєте виконати об’єднання. &cervisia; виконає команду </para>

<para>
<screen
><command
>cvs update <option
>-j</option
> <replaceable
>мітка_гілки</replaceable
></command
></screen>
</para>

<para
>Іншим варіантом застосування є випадок, коли у вас виникне бажання об’єднати лише зміни, які було внесено між двома мітками у гілці. Таке зазвичай трапляється, якщо ви виконуєте об’єднання між однією гілкою і дослідною гілкою декілька разів. У такому випадку позначте пункт <guibutton
>Об’єднати зміни</guibutton
> і введіть (у правильному порядку) дві відповідних гілки. Програма виконає команду </para>

<para>
<screen
><command
>cvs update <option
>-j</option
> <replaceable
>мітка_гілки_1</replaceable
> <option
>-j</option
> <replaceable
>мітка_гілки_2</replaceable
></command
></screen>
</para>

</sect1>


<sect1 id="watches">
<title
>Користування спостерігачами</title>

<para
>Спостерігач — це загальноприйнята назва для функціональної можливості &CVS;, використання якої надає користувачам сховища змогу дізнаватися про зміну певного файла або про те, що розробник почав редагування файла. Використання спостерігачів потребує того, щоб файл <filename
><envar
>$CVSROOT</envar
>/CVSROOT/notify</filename
> було налаштовано належним чином. Це налаштування ми не будемо тут обговорювати, якщо вам потрібні додаткові відомості щодо налаштування з точки зору адміністратора, прочитайте одну з книжок, назви яких наведено у додатку. </para>

<para
>Для забезпечення підтримки спостереження &cervisia; існує шість пунктів меню. </para>

<para
>Щоб додати спостерігач до одного або декількох файлів, скористайтеся <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Додати спостерігачів...</guimenuitem
></menuchoice
>. За допомогою діалогового вікна, яке буде відкрито, ви зможете обрати тип події, які підтримує &CVS; і про яку має сповіщати вас &CVS;. Наприклад, якщо ви бажаєте, щоб програма сповіщала вас лише про ті випадки, коли файл було передано, позначте пункти <guibutton
>Тільки</guibutton
> і <guibutton
>Передачі</guibutton
>. Якщо ви бажаєте отримувати сповіщення про будь-яку подію, яка стосується позначених файлів, позначте пункт <guibutton
>Все</guibutton
>. Після натискання кнопки <guibutton
>Гаразд</guibutton
> програма виконає таку команду: </para>

<para>
<screen
><command
>cvs watch add -a commit <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>або подібний параметр, який залежить від подій, які ви обрали для перегляду. </para>

<para
>Якщо ви більше не цікавитеся змінами у певних файлах, ви можете вилучити спостерігачі для цих файлів. Для цього можна скористатися пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Вилучити спостерігача...</guimenuitem
></menuchoice
>. У діалоговому вікні, яке буде відкрито, ви побачите ті самі пункти, які ви вже бачили, коли додавали спостерігача. Після натискання кнопки <guibutton
>Гаразд</guibutton
> &cervisia; виконає таку команду: </para>

<para>
<screen
><command
>cvs watch remove <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>можливо, з параметром <option
>-a</option
> для вибраних подій. </para>

<para
>Нарешті, ви можете отримати список людей, які спостерігають за файлами. Скористайтеся пунктом <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Показати спостерігачів</guimenuitem
></menuchoice
>. За допомогою цього пункту меню ви можете наказати програмі виконати таку команду: </para>

<para>
<screen
><command
>cvs watchers <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>За звичайного сценарію використання &CVS; кожен з розробників окремо працює над власною звантаженою пісочницею. Якщо розробник бажає змінити якийсь з файлів, він може відкрити його у власному редакторі і почати з ним працювати. Ніхто інший не дізнається про роботу, виконану цим розробником, до того часу, коли файл буде передано до сховища. </para>

<para
>Для деяких груп розробників така модель є не зовсім прийнятною моделлю співпраці. Розробники у таких групах бажали б бути сповіщеними про те, що хтось працює над файлом <emphasis
>одразу після того</emphasis
>, як розробник почне роботу над файлом. Цього можна досягти за допомогою додаткових команд &CVS;. Перш ніж почати редагування певного файла, позначте його у головному вікні &cervisia; і скористайтеся пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Редагувати файли</guimenuitem
></menuchoice
>. У відповідь програма виконає таку команду: </para>

<para>
<screen
><command
>cvs edit <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>Ця команда надішле сповіщення всім, хто обрав спостерігач <literal
>зміни</literal
> для цього файла. Крім того, ця команда зареєструє вас як <emphasis
>редактора</emphasis
> відповідного файла. Ви можете отримати список всіх редакторів певного файла за допомогою пункту меню <menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Показати редакторів</guimenuitem
></menuchoice
>. Використання цього пункту меню рівноцінне виконанню такої команди: </para>

<para>
<screen
><command
>cvs editors <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>Сеанс редагування буде автоматично завершено після передавання файла, який редагує розробник. Після цього всім користувачам, які зареєстрували спостерігачі для файла, буде надіслано сповіщення про <literal
>завершення редагування</literal
>. Звичайно ж, іноді ви передумаєте передавати файл, перервати сеанс редагування і повернутися до попередньої версії файла. Досягти цього можна за допомогою пункту меню <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Закінчити редагування</guimenuitem
></menuchoice
>. Зауважте, що &cervisia; не запитуватиме у вас підтвердження. Це означає, що якщо ви скористаєтеся цим пунктом меню, всію роботу, виконану з часу вибору пункту меню <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Редагувати файли</guimenuitem
></menuchoice
> буде втрачено. Якщо бути точним, &cervisia; виконає таку команду: </para>

<para>
<screen
><command
>echo y | cvs unedit <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>Вище ми обговорювали лише випадок, коли встановлення міток редагування або завершення редагування відбувається розробниками у добровільному порядку. Крім того, &CVS; підтримує модель, за використання якої користування цими командами є <emphasis
>примусовим</emphasis
>. Відповідною командою, призначеною для вмикання такої моделі, є <command
>cvs watch on</command
>. Ми не будемо докладно обговорювати цю команду, оскільки здебільшого цією командою користуються адміністратори сховища. Важливою особливістю з точки зору розробника є те, що, коли у проекті примусово використовуються позначки редагування, робочі копії звантажуються як <emphasis
>придатні лише для читання</emphasis
>. Це означає, що, типово, ви не зможете редагувати файл (якщо не скористаєтеся трюками на зразок <command
>chmod</command
>). Лише після того, як ви скористаєтеся пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Редагувати файли</guimenuitem
></menuchoice
>, файл стане придатним для запису. Файл знову стане придатним лише для читання після того, як ви передасте файл або скористаєтеся пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Закінчити редагування</guimenuitem
></menuchoice
>. </para>

<para
>У інтерфейсі редактора &cervisia; передбачено і інший спосіб, який допоможе вам працювати з проектами, у яких використовують примусове встановлення міток редагування. Якщо ви тільки-но запустили редактор для файла, позначеного лише для читання, подвійним клацанням лівою кнопкою миші або за допомогою пункту меню <menuchoice
><guimenu
>Файл</guimenu
><guimenuitem
>Правка</guimenuitem
></menuchoice
>, ви не зможете згодом зберегти внесені вами зміни. Звичайно ж, для цього є причина: кожного разу, коли ви бажаєте змінити файл, вам слід спочатку виконати команду <command
>cvs edit</command
>, щоб усі люди, які спостерігали за файлом, отримали сповіщення про те, що ви працюєте над цим файлом. </para>

<para
>У такому випадку радимо вам позначити пункт меню <menuchoice
><guimenu
>Параметри</guimenu
> <guimenuitem
>За потреби виконати cvs edit автоматично</guimenuitem
></menuchoice
>. Якщо ви це зробите, кожного разу, коли ви викликатимете вікно редагування файла подвійним клацанням лівою кнопкою миші на його позначці, &cervisia; виконуватиме команду <command
>cvs edit</command
>, перш ніж запускати редактор. Після цього ви зможете редагувати файл у звичайному режимі. Після завершення редагування ви зможете надіслати змінені файли, — у сховищі вони знову стануть придатними лише для читання. </para>

</sect1>


<sect1 id="locking">
<title
>Блокування</title>

<para
>Модель розробки, якою зазвичай користуються за використання &CVS;, називається <emphasis
>необмеженими звантаженнями</emphasis
>. Кожен з розробників має власну пісочницю, у якій він або вона може редагувати файли, як йому чи їй заманеться. Якщо після цього ви скористаєтеся можливостями спостереження, — зокрема <command
>cvs edit</command
>, — над файлами можуть синхронно працювати декілька розробників. Зміни, внесені іншим розробником, буде об’єднано з локальною пісочницею під час виконання наступного оновлення. </para>

<para
>У інших системах керування версіями, — зокрема <acronym
>RCS</acronym
> і <application
>SourceSafe</application
> використовується інша модель. Якщо розробник бажає змінити певний файл, він має <emphasis
>заблокувати</emphasis
> його. Блокувати певний файл може одночасно лише один розробник. Після завершення редагування блокування буде знято. З іншого боку, за використання цієї моделі конфлікти ніколи не трапляться. З іншого боку, над файлом не можуть працювати одразу декілька розробників, навіть якщо внесені ними зміни не впливатимуть одна на одну. Це може значно сповільнити розробку. Ми не будемо обговорювати всі організаційні переваги обох підходів. Крім того, ми вже згадували, що хоча у &CVS; і передбачено певну підтримку блокування, — цей спосіб не є основним способом роботи з &CVS;. Вам не слід використовувати всі ці можливості, якщо ви не впевнені, що ваш інструмент керування проектом їх підтримує. </para>

<para
>За допомогою &cervisia; ви можете заблокувати файли. Оберіть бажані файли у головній області перегляду програми. Скористайтеся пунктом меню <menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Заблокувати файли</guimenuitem
></menuchoice
>. Програма виконає команду </para>

<para>
<screen
><command
>cvs admin -l <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

<para
>Зворотного ефекту можна досягти за допомогою пункту меню <menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Розблокувати файли</guimenuitem
></menuchoice
>. Програма виконає команду</para>

<para>
<screen
><command
>cvs admin -u <replaceable
>назви файлів</replaceable
></command
></screen>
</para>

</sect1>

</chapter>


<chapter id="customization">
<title
>Налаштування &cervisia;</title>

<para
>У &cervisia; передбачено можливість налаштування програми у різні способи згідно до ваших потреб і уподобань. Деякі з параметрів, потреба у зміні яких може у вас виникнути, може бути безпосередньо змінено за допомогою меню <guimenu
>Параметри</guimenu
>. </para>


<sect1 id="customize-general">
<title
>Загальне</title>

<variablelist>

<varlistentry id="customize-username">
<term
><guilabel
>Ім'я користувача для редактора файла змін:</guilabel
></term>
<listitem
><para
>Кожного разу, коли ви користуватиметеся пунктом меню <menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Вставити запис до файла змін...</guimenuitem
></menuchoice
>, програма створюватиме новий запис у файлі ChangeLog за поточною датою і з вашим іменем користувача. Зазвичай, вважається ознакою доброго смаку додавати ваше ім’я повністю і вашу адресу електронної пошти до кожного з ваших записів у файлі ChangeLog. &cervisia; автоматично додасть ваше ім’я і адресу електронної пошти, введені у цьому вікні. </para
></listitem>
</varlistentry>

<varlistentry id="customize-cvspath">
<term
><guilabel
>Шлях до файла програми CVS або 'cvs':</guilabel
></term>
<listitem
><para
>Тут ви можете вказати назву (або шлях) клієнта командного рядка <command
>cvs</command
>. Типово, &cervisia; буде використано виконуваний файл &CVS;, який буде знайдено за шляхом, вказаним змінною середовища <envar
>$PATH</envar
>. </para
></listitem>
</varlistentry>

</variablelist>

</sect1>

<sect1 id="customize-diff">
<title
>Перегляд різниці</title>

<variablelist>

<varlistentry id="customize-context">
<term
><guilabel
>Кількість рядків в діалозі порівняння:</guilabel
></term>
<listitem
><para
>Для діалогового вікна відмінностей &cervisia; використовує параметр <option
>-U</option
>, переданий команді <command
>diff</command
>. За його використання <command
>diff</command
> покаже лише обмежену кількість рядків навколо кожного з діапазонів відмінностей (рядків контексту). Тут ви можете вказати аргумент параметра <option
>-U</option
>. </para
></listitem>
</varlistentry>

<varlistentry id="customize-diffopt">
<term
><guilabel
>Додаткові параметри для cvs-порівняння:</guilabel
></term>
<listitem
><para
>Тут ви можете вказати додаткові аргументи для команди <command
>diff</command
>. Поширеним прикладом є параметр <option
>-b</option
>, за використання якого <command
>diff</command
> ігнорувати зміни у кількості пробілів. </para
></listitem>
</varlistentry>

<varlistentry id="customize-tabwidth">
<term
><guilabel
>Ширина вкладки у діалозі порівняння:</guilabel
></term>
<listitem
><para
>У діалоговому вікні відмінностей символи табуляції, які міститимуться у вашому файлі або у виводі команди <command
>diff</command
>, буде розгорнуто до фіксованої кількості символів пробілу. Типово, кожен символ табуляції буде замінено вісьмома пробілами, але ви можете змінити це значення. </para
></listitem>
</varlistentry>

<varlistentry id="customize-difffrontend">
<term
><guilabel
>Зовнішня оболонка для diff:</guilabel
></term>
<listitem
><para
>Коли ви користуєтеся будь-якою з функціональних можливостей, які відкривають діалогове вікно відмінностей, зокрема пунктом меню <menuchoice
><guimenu
>Перегляд</guimenu
><guimenuitem
>Відмінність від сховища...</guimenuitem
></menuchoice
>, &cervisia; викликає свою вбудовану оболонку diff. Якщо ви бажаєте скористатися іншою оболонкою, на зразок &kompare;, <application
>TkDiff</application
> або <application
>xxdiff</application
>, ви можете ввести у це поле назву файла і шлях для нього. </para
></listitem>
</varlistentry>

</variablelist>

</sect1>

<sect1 id="customize-status">
<title
>Стан</title>

<variablelist>

<varlistentry id="customize-startstatus-remote">
<term
><guilabel
>Під час відкриття пісочниці з віддаленого сховища автоматично запускати команду, яка відповідає пункту меню Файл-&gt;Стан</guilabel
></term>
<listitem
><para
>Якщо ви позначите цей пункт, кожного разу, коли ви відкриватимете віддалену пісочницю, програма виконуватиме команду, яка виконується пунктом меню <menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Стан</guimenuitem
></menuchoice
>. Виконання цієї команди може тривати певний час, а також потребує з’єднання з сервером для віддалених сховищ (що робить її непридатною для автономного використання). </para
></listitem>
</varlistentry>

<varlistentry id="customize-startstatus-local">
<term
><guilabel
>Коли відкривається пісочниця з віддаленого сховища, автоматично запускати команду Файл-&gt;Стан</guilabel
></term>
<listitem
><para
>Якщо ви позначите цей пункт, вибір пункту меню <menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Стан</guimenuitem
></menuchoice
> буде виконано кожного разу, коли ви відкриватимете локальну пісочницю. </para
></listitem>
</varlistentry>

</variablelist>

</sect1>

<sect1 id="customize-advanced">
<title
>Додатково</title>

<variablelist>

<varlistentry id="customize-timeout">
<term
><guilabel
>Тайм-аут, після якого з'являється діалог поступу (в мс):</guilabel
></term>
<listitem
><para
>Практично всі команди &CVS;, запущені у пісочниці, яка належить віддаленому сховищу, потребує з’єднання з сервером &CVS;. На їх виконання може вплинути затримка у мережевому з’єднанні або високе навантаження на сервер. З цієї причини, для команд на зразок <menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Відмінність від сховища...</guimenuitem
></menuchoice
> &cervisia; відкриває діалогове вікно, у якому повідомляє вам про те, що команда все ще виконується, і надає вам змогу перервати її виконання. Крім того, у цьому діалоговому вікні буде показано повідомлення про помилку від &CVS;. Оскільки це діалогове вікно може з часом вам набриднути, його буде показано лише після певного проміжку часу, типово, 4 секунд. За допомогою цього поля ви можете змінити це значення. </para
></listitem>
</varlistentry>

<varlistentry id="customize-compression">
<term
><guilabel
>Типовий рівень стиснення:</guilabel
></term>
<listitem
><para
>Клієнт <command
>cvs</command
> стискає файли і латки під час їх передавання мережею. За допомогою параметра командного рядка <option
>-z</option
> можна вказати рівень стиснення. Ви можете налаштувати &cervisia; так, щоб програма використовувала певний рівень стиснення за допомогою цього поля. Встановлене значення буде використано лише як типове; крім нього є параметр окремого сховища, який можна змінити за допомогою пункту меню <menuchoice
><guimenu
>Сховище</guimenu
> <guimenuitem
>Сховища...</guimenuitem
></menuchoice
>. </para
></listitem>
</varlistentry>

<varlistentry id="customize-sshagent">
<term
><guilabel
>Використовувати вже існуючий або запустити новий процес ssh-agent</guilabel
></term>
<listitem
><para
>Позначте цей пункт, якщо ви користуєтеся <link linkend="rsh"
>сховищами ext (&rsh;)</link
>, оболонкою віддаленого керування &ssh; для обміну даними для сховища і <application
>ssh-agent</application
> для керування вашими ключами. </para
></listitem>
</varlistentry>

</variablelist>

</sect1>


<sect1 id="customize-look">
<title
>Вигляд</title>

<variablelist>

<varlistentry id="customize-protocolfont">
<term
><guilabel
>Шрифт для вікна протоколу...</guilabel
></term>
<listitem
><para
>Натискання цієї кнопки призведе до відкриття діалогового вікна <guilabel
>Виберіть шрифт</guilabel
>, за допомогою якого ви зможете вказати шрифт, який буде використано у вікні протоколів (це вікно, у якому буде показано дані виведені клієнтом <command
>cvs</command
>). </para
></listitem>
</varlistentry>

<varlistentry id="customize-annotatefont">
<term
><guilabel
>Шрифт для переглядача анотацій...</guilabel
></term>
<listitem
><para
>Натискання цієї кнопки призведе до відкриття діалогового вікна <guilabel
>Виберіть шрифт</guilabel
>, за допомогою якого ви зможете вказати шрифт, який буде використано у <link linkend="annotate"
>перегляді анотацій</link
>. </para
></listitem>
</varlistentry>

<varlistentry id="customize-difffont">
<term
><guilabel
>Шрифт для переглядача відмінностей...</guilabel
></term>
<listitem
><para
>Натискання цієї кнопки призведе до відкриття діалогового вікна <guilabel
>Виберіть шрифт</guilabel
>, за допомогою якого ви зможете вказати шрифт, який буде використано у <link linkend="diff"
>діалогових вікна відмінностей</link
>. </para
></listitem>
</varlistentry>

<varlistentry id="customize-colors">
<term
><guilabel
>Кольори</guilabel
></term>
<listitem
><para
>Натисніть кольорові кнопки, щоб відкрити діалогове вікно <guilabel
>Виберіть колір</guilabel
>, за допомогою якого можна визначити колір, який використовуватиметься для пунктів <guilabel
>Конфлікт</guilabel
>, <guilabel
>Локальна зміна</guilabel
> і <guilabel
>Віддалена зміна</guilabel
> у основній області перегляду або <guilabel
>Зміна порівняння</guilabel
>, <guilabel
>Вставка порівняння</guilabel
> і <guilabel
>Вилучення порівняння</guilabel
> у вбудованій оболонці &cervisia;. </para
></listitem>
</varlistentry>

<varlistentry id="customize-splitter">
<term
><guilabel
>Розбити головне вікно горизонтально</guilabel
></term>
<listitem
><para
>Типово, головне вікно програми &cervisia; поділено вертикаль на вікно з переглядом дерева файлів, розташоване згори, і вікно з виводом &CVS;, розташоване нижче. Ви також можете розташувати ці області горизонтально. </para
></listitem>
</varlistentry>

</variablelist>

</sect1>
</chapter>


<chapter id="appendix">
<title
>Додаток</title>

<sect1 id="ignoredfiles">
<title
>Файли, які ігноруються програмою</title>

<para
>У головному перегляді ієрархії файлів &cervisia; не показуватиме всі файли, які зберігаються у сховищі. Подібне обмеження аналогічне до обмеження самої програми <command
>cvs</command
>, за його допомогою можна запобігти захаращенню перегляду нецікавими елементами на зразок об’єктних файлів. &cervisia; намагається якомога точніше відтворити поведінку <command
>cvs</command
>, тобто програма ігноруватиме списки з таких джерел: </para>

<itemizedlist>

<listitem
><para
>Статичного списку записів, серед яких файли <literal role="extension"
>*.o</literal
> і <filename
>core</filename
>. Подробиці можна дізнатися з документації з &CVS;. </para
></listitem>
<listitem
><para
>Файла <filename
><envar
>$HOME</envar
>/.cvsignore</filename
>. </para
></listitem>

<listitem
><para
>Змінної середовища <envar
>$CVSIGNORE</envar
>. </para
></listitem>
<listitem
><para
>Файла <filename
>.cvsignore</filename
> у відповідній теці. </para
></listitem>

</itemizedlist>

<para
>Крім того, сама програма <command
>cvs</command
> шукає записи у теці <filename
><envar
>$CVSROOT</envar
>/CVSROOT/cvsignore</filename
>, але цей файл зберігається на сервері, а &cervisia; має запускатися у автономному режимі. Якщо ви працюєте з групою. учасники якої віддають перевагу використанню списку ігнорування на сервері, ймовірно, варто переглянути, які шаблони перелічено у цьому файлі, а потім скопіювати їх до файла <filename
>.cvsignore</filename
> у вашій домашній теці. </para>

</sect1>


<sect1 id="information">
<title
>Докладніші відомості і підтримка</title>

<itemizedlist>

<listitem
><para
>&CVS; постачається з повним набором документації у формі сторінок info, відомим як «The Cederqvist». Якщо програмне забезпечення встановлено належним чином, ви зможете переглянути цю документацію після введення адреси <userinput
>info:/cvs</userinput
> у поле адреси &konqueror;. Ви також можете просто скористатися пунктом меню <menuchoice
><guimenu
>Довідка</guimenu
> <guimenuitem
>Посібник з CVS</guimenuitem
></menuchoice
> у головному вікні &cervisia;. Мережеву &HTML;-версію Cederqvist можна знайти у <ulink url="http://ximbiot.com/cvs/manual/"
>мережі</ulink
>. </para>

<para
>Оскільки ця книга постачається разом з &CVS;, вона є, зазвичай, найсучаснішим довідником; але вам варто ознайомтеся з іншою документацією для вивчення &CVS;, зокрема з документацією з наведеного нижче переліку. </para
></listitem>

<listitem
><para
>Карл Фогель написав чудову книгу <ulink url="http://cvsbook.red-bean.com/index.html"
>Open Source Development with &CVS;</ulink
>. Майже половину цієї книги присвячено процесу розробки програмного забезпечення з відкритим вихідним кодом. Інша частина є технічною документацією щодо &CVS;. На щастя, технічну частину книги можна вільно поширювати за умов дотримання GPL, отже, ви можете звантажити &HTML;-версією цієї частини. Список помилок можна знайти на веб-сторінці, про яку ми згадували вище. </para
></listitem>

<listitem
><para
>Недоліки у &CVS; обговорюються у відповідному <ulink url="http://mail.gnu.org/mailman/listinfo/info-cvs"
>списку листування</ulink
>. </para
></listitem>

<listitem
><para
>Існує група USENET <literal
>comp.software.config-mgmt</literal
>, яку присвячено загальному керуванню налаштуваннями. &CVS; є лише побіжною темою у цій групі, але вам може бути цікаво прочитати обговорення, що стосуються переваг різних систем керування версіями у порівнянні з &CVS;. </para
></listitem>

<listitem
><para
>Ну і нарешті, існує (не дуже то і перевантажений повідомленнями) <ulink url="http://lists.sourceforge.net/mailman/listinfo/cervisia-user"
>список листування щодо &cervisia;</ulink
>. </para
></listitem>

</itemizedlist>

</sect1>


<sect1 id="commandreference">
<title
>Довідка щодо команд</title>

<!-- File Menu -->
<sect2 id="menufile">

<title
>Меню «Файл»</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Відкрити пісочницю...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває пісочницю у головному вікні. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Файл</guimenu
> <guisubmenu
>Останні пісочниці</guisubmenu
> </menuchoice
></term>
<listitem
><para
>Відкриває нещодавно використовувані пісочниці. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Вставити запис із файла змін...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває редактор файла ChangeLog, підготованого таким чином, що ви можете додати новий запис для поточної дати. Див. <xref linkend="committingfiles"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;<keycap
>U</keycap
></keycombo
></shortcut
> <guimenu
>Файл</guimenu
><guimenuitem
>Оновити</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Виконує для вибраних файлів команду «cvs update» і відповідним чином змінює стан і номери версій у списку. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>F5</keycap
></shortcut
> <guimenu
>Файл</guimenu
><guimenuitem
>Стан</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Виконує для вибраних файлів команду «cvs -n update» і відповідним чином змінює стан і номери версій у списку. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Файл</guimenu
><guimenuitem
>Правка</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває вибраний файл у типовому редакторі &kde; для вибраного типу файлів. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Файл</guimenu
><guimenuitem
>Вирішити...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває для вибраного файла діалогове вікно, за допомогою якого ви зможете вирішити конфлікти об’єднання для цього файла. Див. <xref linkend="resolvingconflicts"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>#</keycap
></shortcut
> <guimenu
>Файл</guimenu
><guimenuitem
>Передати...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Надає вам змогу передати до сховища вибрані файли. Див. <xref linkend="committingfiles"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>Ins</keycap
></shortcut
> <guimenu
>Файл</guimenu
> <guimenuitem
>Додати до сховища...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Надає вам змогу додати вибрані файли до сховища. Див. <xref linkend="addingfiles"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Додати двійковий...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Надає вам змогу додати вибрані файли до сховища як бінарні файли (<command
>cvs add<option
>-kb</option
></command
>). Див. <xref linkend="addingfiles"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>Del</keycap
></shortcut
> <guimenu
>Файл</guimenu
> <guimenuitem
>Вилучити зі сховища...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Надає вам змогу вилучити вибрані файли зі сховища. Див. <xref linkend="removingfiles"/>. </para
></listitem>
</varlistentry>

<!--TODO: add the revert action to the working with files chapter -->

<varlistentry>
<term
><menuchoice
><guimenu
>Файл</guimenu
> <guimenuitem
>Повернути</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкидає всі локальні зміни, які ви внесли до вибраних файлів, і повертає вміст цих файлів до того стану, у якому він зберігається у сховищі (використання цього пункту відповідає параметру <option
>-C</option
> команди <command
>cvs update</command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;<keycap
>Q</keycap
></keycombo
></shortcut
> <guimenu
>Файл</guimenu
><guimenuitem
>Вийти</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Завершує роботу &cervisia;. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- View Menu -->
<sect2 id="menuview">

<title
>Меню «Перегляд»</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>Escape</keycap
></shortcut
> <guimenu
>Перегляд</guimenu
><guimenuitem
>Стоп</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Припинити роботу всіх запущений підпроцесів. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;<keycap
>L</keycap
></keycombo
></shortcut
> <guimenu
>Перегляд</guimenu
> <guimenuitem
>Переглянути журнал...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Показує вікно перегляду журналу версій вибраного файла. Див. <xref linkend="browsinglogs"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;<keycap
>A</keycap
></keycombo
></shortcut
> <guimenu
>Перегляд</guimenu
><guimenuitem
>Примітка...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Показує перегляд вибраного файла з коментарями, тобто перегляд, за допомогою якого ви зможете побачити кожен з рядків, змінених автором востаннє. Див. <xref linkend="annotate"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;<keycap
>D</keycap
></keycombo
></shortcut
> <guimenu
>Перегляд</guimenu
> <guimenuitem
>Відмінність від сховища (BASE)...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Показує відмінності між вибраним файлом у пісочниці і останньою оновленою версією файла (BASE). Див. <xref linkend="diff"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo action="simul"
>&Ctrl;<keycap
>H</keycap
></keycombo
></shortcut
> <guimenu
>Перегляд</guimenu
> <guimenuitem
>Відмінність від сховища (HEAD)...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Показує відмінності між вибраним файлом у пісочниці і останньою оновленою версією файла (HEAD). Див. <xref linkend="diff"/>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Остання зміна...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Показує відмінності між останньою оновленою версією вибраного файла (BASE) і попередньою його версією. Див. <xref linkend="diff"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
><guimenuitem
>Історія...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Показує історію &CVS; у тому вигляді, у якому її зберігає сервер. Див. <xref linkend="browsinghistory"/>. </para
></listitem>
</varlistentry>

<!--TODO: add hide menus to mainscreen section-->

<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
><guimenuitem
>Сховати всі файли</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи буде у головному дереві перегляду показано лише теки. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Сховати файли без змін</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи буде приховано у головному перегляді дерева невідомі і незмінені файли. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Сховати вилучені файли</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи буде приховано у головному перегляді дерева вилучені файли. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Сховати файли не з CVS</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи буде приховано у головному перегляду дерева файли, яких немає у &CVS;. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Сховати порожні теки</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи буде приховано теки без видимих записів у головному перегляді дерева. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Розгорнути файлове дерево</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Розгортає всі гілки у файловому дереві так, щоб ви могли бачити всі файли і теки. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Перегляд</guimenu
> <guimenuitem
>Згорнути файлове дерево</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Згортає всі гілки у дереві файлів. Див. <xref linkend="mainscreen"/>. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- Advanced Menu -->
<sect2 id="menuadvanced">

<title
>Меню «Додаткові»</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
><guimenuitem
>Мітка/Гілка...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Позначає міткою випуску або версії вибрані файли. Див. <xref linkend="taggingbranching"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Вилучити мітку...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Вилучає мітку вказаної версії з вибраних файлів. Див. <xref linkend="taggingbranching"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Оновити до мітки/дати...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відновлює вибрані файли до вказаного випуску і дати, роблячи їх незмінними. Див. <xref linkend="updatingto"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Оновити до HEAD...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відновлює вибрані файли відповідно до версії у HEAD. Див. <xref linkend="updatingto"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Об’єднати...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Об’єднує вказану версію або зміни між двома випусками вибраних файлів. Див. <xref linkend="taggingbranching"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Додати спостерігача...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Додає нагляд для набору подій, що відбуваються з вибраними файлами. Див. <xref linkend="watches"/>. </para
></listitem>
</varlistentry>
<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Вилучити спостерігача...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Вилучає нагляд за набором подій, що відбуваються з вибраними файлами. Див. <xref linkend="watches"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Показати спостерігачів</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Показує список спостерігачів вибраних файлів. Див. розділ <xref linkend="watches"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Редагувати файли</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Виконує команду <command
>cvs edit</command
> для вибраних файлів. Див. розділ <xref linkend="watches"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Завершити редагування</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Виконує команду <command
>cvs unedit</command
> для вибраних файлів. Див. розділ <xref linkend="watches"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Показати редактори</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Виконує команду <command
>cvs editors</command
> для вибраних файлів. Див. розділ <xref linkend="watches"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Заблокувати файли</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Блокує вибрані файли. Див. розділ <xref linkend="locking"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Розблокувати файли</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Розблоковує вибрані файли. Див. розділ <xref linkend="locking"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Додаткові</guimenu
> <guimenuitem
>Створити латку для сховища...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Створює латку зі змінами у вашій пісочниці. Див. <xref linkend="creatingpatches"/>. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- Repository Menu -->
<sect2 id="menurepository">

<title
>Меню «Сховище»</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><guimenu
>Сховище</guimenu
><guimenuitem
>Створити...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває діалогове вікно, за допомогою якого ви можете створити нове локальне сховище. Див. <xref linkend="accessing-repository"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Сховище</guimenu
><guimenuitem
>Отримати...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває діалогове вікно, за допомогою якого ви зможете звантажити модуль зі сховища. Див. <xref linkend="checkingout"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Сховище</guimenu
><guimenuitem
>Імпорт...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває діалогове вікно, за допомогою якого ви можете імпортувати пакунок до сховища. Див. <xref linkend="importing"/>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Сховище</guimenu
> <guimenuitem
>Сховища...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>За допомогою цього пункту можна налаштувати список сховищ, якими ви часто користуєтеся і спосіб доступу до цих сховищ. Див. розділ <xref linkend="accessing-repository"/>. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- Settings Menu -->
<sect2 id="menuoptions">
<title
>Меню «Параметри»</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
><guimenuitem
>Показати пенал</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи буде показано панель інструментів. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
> <guimenuitem
>Створювати теки при оновленні</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи будуть під час оновлень створюватися теки у пісочниці, якщо їх там раніше не було (позначення цього пункту відповідає параметру <option
>-d</option
> команди <command
>cvs update</command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
> <guimenuitem
>Вилучати порожні теки при оновленні</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи будуть вилучатися порожні теки у пісочниці під час оновлень (позначення цього пункту відповідає параметру <option
>-P</option
> команди <command
>cvs update</command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
> <guimenuitem
>Рекурсивне оновлення</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи будуть оновлення рекурсивними (позначення пункту відповідає параметру <option
>-r</option
> команди <command
>cvs update</command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
> <guimenuitem
>Передавати та вилучати рекурсивно</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи будуть внески і вилучення рекурсивними (позначення пункту відповідає параметру <option
>-r</option
> команд <command
>cvs add</command
> і <command
>cvs remove</command
>, відповідно). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
> <guimenuitem
>Виконувати cvs edit автоматично, коли потрібно</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Визначає, чи буде автоматично виконано <command
>cvs edit</command
> за умови зміни вами певного файла. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
><guimenuitem
>Налаштувати скорочення...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває діалогове вікно для налаштування клавіатурних скорочень. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
><guimenuitem
>Налаштувати пенали...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває діалогове вікно для налаштування панелей інструментів &cervisia;. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Параметри</guimenu
><guimenuitem
>Налаштувати &cervisia;...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває діалогове вікно налаштування &cervisia;. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- Help -->
<sect2 id="menuhelp">
<title
>Меню «Довідка»</title>
&help.menu.documentation; <para
>Окрім стандартних для &kde; пунктів меню <guimenu
>Довідка</guimenu
>, описаних вище, у меню буде і додатковий пункт:</para>

<variablelist>
<varlistentry>
<term
><menuchoice
><guimenu
>Довідка</guimenu
> <guimenuitem
>Посібник CVS</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Відкриває сторінки info &CVS; за допомогою довідкової системи &kde;. </para
></listitem>
</varlistentry>
</variablelist>

</sect2>

</sect1>

</chapter>


<chapter id="credits-and-licenses">
<title
>Подяки і ліцензування</title>
<para
>Авторські права на програму</para>
<itemizedlist>
<listitem
><para
>1999-2002 &Bernd.Gehrmann; &Bernd.Gehrmann.mail;</para
></listitem>
<listitem
><para
>2002-2008 Автори &cervisia;</para
></listitem>
</itemizedlist>

<para
>Авторські права на документацію до програми належать ©1999-2002 &Bernd.Gehrmann; &Bernd.Gehrmann.mail; і 2004 Carlos Woelz carloswoelz@imap-mail.com</para>

<para
>Переклад українською: Юрій Чорноіван<email
>yurchor@ukr.net</email
></para
> 
&underFDL; &underGPL; </chapter>
</book>
