Автор Гілка: CVS: курс молодого бійця  (Прочитано 3110 раз)

Відсутній Дмитро Ковальов

  • Кореспондент
  • ***
  • дописів: 236
  • Карма: +0/-0
Довелось колись писати коротеньку довідку про те, що  таке CVS. Тому, щоб час не було втрачено (сподіваюсь, що його таки не було втрачено -- і хтось чомусь таки навчився з мого листа) я подаю сюди цей коротенький опус практично без змін, так як його було надано в Мандрейківську розсилку.

Спочатку кілька слів на додаток, з того, що не ввійшло в лист і про те, що таке CVS.

CVS: Concurrent Versions System

При розробці великих і не дуже великих програм буває потрібно повернутись до попередньої версії файла (вчора працювало, і сьогодні вранці ще працювало -- а потім щось зробив і перестало працювать, а що зробив вже не пам'ятаю) або просто подивитись, що там було вчора.

Тоді буває потрібна якась система контролю версій. Тобто це і є складова "Versioning System" в назві. Таких систем в Юніксах є кілька. Традиційно комерційні Юнікси (скоріше за інерцією) користуються SCCS. В світі Лінаксів і вільних гілок *BSD популярні RCS і CVS.

Складова "C" (concurrent) означає фактично, що до централізованого сховища файлів (яке в CVS прийнято звати "репозиторієм") можуть одночасно (конкурентно) доступатися більше однієї людини.

CVS дозволяє:
 
  • витягнути зі сховища будь-яку попередньо зареєстровану версію файла;
  • замкнути файл -- тобто, заборонити іншим учасникам проекту вносити до нього зміни, поки я над ним працюю;
  • після закінчення роботи над файлом зареєструвати в репозиторії свої зміни;
  • тощо

Але в наступному документі в основному йдеться про те, як користуватись репозиторіями в загально-доступних проектах (для читання) в системах подібних до SourceForge.

Відсутній Дмитро Ковальов

  • Кореспондент
  • ***
  • дописів: 236
  • Карма: +0/-0
Re: CVS: курс молодого бійця
« Відповідей #1 : 2004-03-18 09:50:46 »
>>>>> On Thu, 15 May 2003, "..." == ... wrote:

  +> як у тебе справи в плані ознайомлення з cvs?

  ...> Потрібно провести курси молодого бійця.



[...]

 Що таке модулі на мові CVS дивіться далі:

=============================================
Курси молодого бійця оголошуються відкритими:
=============================================

( I семестр )


1. Спочатку про знайоме. Переглянути на вебі це все можна тут:
   http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/utrans/
   Звідси ж можна при неохідності знімати файли, але поновлювати -
   ні. Та й знімати надто вже незручно - занадто багато клацань
   мишою.

2. Коротка документація знаходиться тут:

  http://sourceforge.net/cvs/?group_id=75248

  Робимо згідно документації:

  * cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/utrans login
  
    В відповідь на запитання Password: просто натиснути Enter.

  * cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/utrans  co <модуль>
  
    модуль в нашому випадку це: mdk Тобто іншими словами це тека, яку
    ми хочемо витягти з cvs. Це не обов'язково тека верхнього рівня, я
    можу сказати наприклад:

    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/utrans  co mdk/po


  * щоб не набирати кожного разу довжелезний рядок, можна  весь
    параметр -d' ..' вмістити в команду, яку потрібно виконати тільки
    один раз напочатку сесії. В цьому випадку сесія буде виглядати
    так:

    $ export CVS_ROOT=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/utrans
    $ cvs login
     <enter замість пароля>
    $ cvs co mdk

  * команди в cvs мають псевда.

    co (від check out) - це те ж саме, що і get. Тому останню команду
    попередньої сесії можна записати як:

    cvs get mdk

    Повний список псевд можна подивитись так:
  
    cvs --help-synonyms

  * наступні команди працюють:

     cvs get mdk/po/DrakX-uk.po - щоб витягнути один єдиний файл.

     cvs get mdk/po - щоб витягнути під-теку

  * параметр "-z3" в команді вище означає використовувати компресію
    при перекачуванні файлів. Це може значно підвищити швидкість
    доступу при роботі в слабкій мережі.

3. Тільки перша викачка файлів займає відносно довгий час. Бо
   перекачується весь репозиторій. Всі інші check-out'и (чи get'и)
   тільки поновлюють ті з локальних файлів, які змінились в
   репозиторії.

   Тому не варто стирати цю теку після кожної викачки, в майбутньому
   це зекономить трохи часу.

Ну ось це власне і вся інформація для того, щоб почати працювати з
cvs. Я написав тільки про те, як брати файли з CVS, для поновлення
потрібен доступ на запис в CVS. За умовами Sourceforge право на запис
отримує кожен, хто зареєстрований, як розробник в даному проекті. Така
людина отримує домашню теку на сервері Sourceforge і доступ до CVS
через SSH.

Але принцип залишається то й же:

Відсутній Дмитро Ковальов

  • Кореспондент
  • ***
  • дописів: 236
  • Карма: +0/-0
Re: CVS: курс молодого бійця
« Відповідей #2 : 2004-03-18 09:58:50 »
Продовження

Для CVS writer'ів:
========================================

( II семестр )

1. export  CVS_ROOT=:ext:<login_name>@cvs.sourceforge.net:/cvsroot/utrans
   export CVS_RSH=ssh


  (зауважте, що для запису потрібно користуватись іншим методом доступу :ext: замість :pserver:  )

2. cvs co mdk
  (також непотрібна команда cvs login)

3. Редагуємо файли і вивантажуємо зміни назад в репозиторій:

   cvs commit

   - тут відкривається редактор (стандартно vi) для кожного файла, який змінився і в ньому треба надрукувати короткий опис змін, записати і вийти з редактора. Після виходу cvs з'єднується з
сервером, питає пароль і заносить туди поновлені файли.

   можна ще так:

   cvs commit -m "короткий опис змін"

   - в цьому випадку опис береться з командного рядка і редактор не
     відкривається.

( документація )

1. найважливіша спочатку


   cvs --help
   cvs --help-options
   cvs --help-commands
   cvs --help-synonyms

По кожній окремій команді/опції тощо:

   cvs --help <команда>
 
   Наприклад:

  $ cvs --help co
  Usage:
  cvs checkout [-ANPRcflnps] [-r rev] [-D date] [-d dir]
  [...]

2. На Sourceforge:

   http://sourceforge.net -> ідем на Site Docs і листаєм донизу аж до
   секції CVS:


  
   F. Version Control with CVS (Concurrent Versions System)

    * F1. Basic Introduction to CVS and SourceForge.net Project CVS Services

      Description: An overview of CVS and the CVS services offered by
      SourceForge.net; information about basic CVS operations; and
      links to CVS reference materials.

    * F2. Introduction to SourceForge.net Project CVS Services for Developers

      Description: An overview of the CVS services offered by
      SourceForge.net; information about complex CVS operations; and
      information about the types of repository management which can
      be performed on your behalf by SourceForge.net staff.

    * F3. Enhancing Project CVS Services Using Scripts

      Description: You can improve CVS through the use of third-party
      scripts: cvs_acls restricts write access to your repository to a
      subset of your project team; syncmail and other mail-generating
      scripts (helpful for tracking changes within teams) are also
      covered.

    * F4. CVS client installation: WinCvs with PuTTY on 32-bit Microsoft Windows platforms

      Description: Instructions for installing and configuring the
      WinCvs CVS client in conjunction with the PuTTY SSH client, as
      to provide SourceForge.net project developer CVS access.

    * F8. CVS and SSH on MacOS (prior to MacOS X)

      Description: Use SourceForge CVS services from MacOS

3. Сам головний сайт CVS:

   http://www.cvshome.org/docs/manual/

Курс молодого бійця закінчено
========================================

Після проходження переддипломної практики, будуть видані дипломи
молодого цевесе-завра.