## Что такое CVS

CVS (concurent version system) - это утилита командной строки, предназначенная для управления версиями файлов в локальной сети, глобальной сети или интернете. Обычно CVS устанавливается на сервер, на остальных компьютерах запускаются cvs-клиенты. Пользователи могут независимо друг от друга брать файлы для изменения на свой локальный диск (еще говорят "на checkout"), править их, а затем отправлять измененные файлы обратно на сервер (делать commit). Над одним файлом могут работать одновременно несколько пользователей, т.к. cvs распознает перекрывающиеся изменения и сообщает пользователю об имеющихся конфликтах версий. Поэтому cvs не нуждается в постоянном наличии коннекта с сервером CVS для нормальной работы с ним.

Более того, cvs умеет управлять многими деревьями проектов, объединять две версии измененых файлов в новую версию, также как и делать подробный отчет по деятельности над проектом. Это замечательное средство управления проектами, используемое при работе над большинством проектов с открытым исходным кодом, имеющихся в интернете.

## Описание LinCVS

LinCVS - это графический интерфейс, фронтэнд для клиента cvs, запускаемого из коммандной строки, работающий как в Unix, так и в Windows. Он позволяет загружать модули с сервера ( делать checkout), создавать модули на сервере (делать import), а также проверять состояние как директорий, так и отдельных файлов и обновлять их. Кроме поддержки основных операций, таких как добавление, удаление, передача серверу измененного файла (commit), поддерживается показ различий между файлом в локальной папке и файлом на CVS-сервере, показ дерева версий в графической форме, а также имеется графический интерфейс для управления проектом. Все действия логгируются на cvs-сервере и поэтому понятны.

Для того чтобы не зависить от версии cvs, LinCVS использует локально установленный cvs и поэтому будет работать и с его более новыми весриями.

После выбора начальной директории, браузер проектов ищет в поддиректориях cvs-проекты и отображает их в рабочей области. После этого становятся доступными все функции для работы с файлами и/или целыми директориями, либо из меню, либо по правой кнопке мыши. Статус каждой отдельной директории постоянно проверяется LinCVS. Это означает, что по внешнему виду символа директории можно понять, например, есть ли еще не внесенные в CVS изменения в ней или ее поддиректориях, причем открывать ее для этого даже не надо. LinCVS способна работать с большими проектами, включающими многие тысячи файлов. LinCVS поддерживает все стандартные протоколы взаимодействия с cvs-сервером. Также имеется поддержка работы через прокси, для этого нужна пропатченная версия cvs, которая, разумеется, есть на нашем сайте в разделе download.

Поскольку программа LinCVS не отклоняется от идеологии управлениями проектами, принятой в cvs, её можно, при необходимости, использовать одновременно с утилитой командной строки cvs. При этом состояние директорий LinCVS будет отображать корректно.

Несмотря на то, что в LinCVS через GUI доступен почти весь спектр функций cvs (и он постоянно расширяется и развивается:-)), можно очень лекго настроить GUI под свои потребности - всплывающие меню полностью конфигурируемы, в то время как обычные меню предоставляют доступ ко всему набору функций. Дополнительная панель инструментов позволяет быстро вызывать наиболее часто используемые функции.

По сравнению с другими аналогичными программами, LinCVS действительно легко использовать:).

### Список возможностей

Интерфейс LinCVS поддерживает:

##### Протоколы соединения:

- local/nfs
- pserver
- ssh
- ssh-agent
- работает через прокси

##### Вот некоторые возможности графической среды LinCVS:

- непрерывный мониторинг состояния директорий
- разрешение/запрещение дерева/директорий
- сканирование директорий "на лету"
- вызов браузера для просмотра директорий
- вызов оболочки (shell), сделав указанную пользователем директорию для него текущей
- раскрыть всю иерархию
- свернуть всё
- и многое другое

##### Глобальные фичи:

- поддержка профилей пользователей/серверов
- одновременная работа с несколькими проектами
- поддержка двоичных и текстовых файлов
- поддержка свойств для каждого проекта, с отдельными настройками для каждого
- сброс/обновление директория до текущей версии дерева(reset/update to dir branch)
- переименование файлов
- настраиваемые внешний вид программы и поведение
- настраивамые пиктограммы/пиктограммы директорий
- установка в директорию для приложений
- обзор модулей на cvs-сервере
- просмотр файлов без checkout, из хистори или лога
- история для: ветви/тэгов/имени проекта/commit-ов
- просмотр в разных закладках файлов разных категорий - управляемых cvs/игнорируемых cvs/не-cvs файлов
- удаление файлов как локально, так и из репозитория cvs, а такж оттуда и оттуда вместе
- open with (startup option for just opening a specific dir)
- создание нового файла/директории
- встроенная утилита для просмотра отличий версий файлов
- встроенный диалог для разрешения конфликтов
- взможность использования внешних программ, таких как: редакторы, браузеры, оболочки, diff и удаленные оболочки(remote shells)
- имеется возможность автоматического обновления статуса проекта, запроса обновлений и собственно обновления
- вывод отладочной информации
- получение помощи онлайн
- возможность переименования проекта(на локальном диске)
- экспотра состояния проекта (current/modified)
- есть поддержка подпроектов (однодерево директорий с несколькими cvs-проектами)
- настраиваемые всплывающие меню
- настраиваемые "горячие" клавиши
- подсветка синтаксиса
- настраиваемый маппинг файлов, отдельно для команд "открыть" и "просмотр"

##### Фичи CVS:

- checkout (branch/tag/date)
- import
- export (branch/tag/date)
- release/remove
- status
- query update
- показать редактирующих
- показать просматривающих
- watch add/remove
- edit
- unedit
- history
- commit
- tag (добавить/удалить/переместить/сбросить)
- branch
- update (до какой-то версии)
- login/logout
- lock/unlock dir/files
- log (графическое представление дерева версий, с возможностью изменения масштаба просмотра)
- diff (to repository)
- при проссмотре дерева версий или истории можно открыть файл
- при проссмотре дерева версий можно сравнить и объединить две версии
- создание патча(при просмотре дерева версий)
- merge diff between rev1,rev2 into rev3(from log tree)
- аннотация (с использованием разнообразных фильтров)
- commit info templates
- поддержка .cvsignore (глобальная/локальная/для каждой директории/environment)
- добавление в текстовом или двоичном режиме
- повторное добавление (восстановление) файлов

Разумеется, есть и другие возможности (все те, о которых мы забыли написать:)) и имейте в виду, что LinCVS все ещё развивается.