# Beschreibung CVS

CVS (Concurrent Versions System) ist ein Kommandozeilenprogramm, das Änderungen (verschiedene Versionen) von Dateien in einem Netzwerk (LAN (LocalAreaNetwork) oder WAN (WideAreaNetwork)) verwaltet. Typischerweise ist das CVS auf einem Computer installiert, der als Server fungiert, während die anderen Computer als CVS-Clients arbeiten. Benutzer können unabhängig voneinander Dateien auf ihr lokales System auschecken, dort bearbeiten und nach Abschluss ihrer Änderungen wieder auf den Server zurückführen (commit). Mehrere Benutzer können gleichzeitig an den gleichen Dateien arbeiten, denn CVS erkennt Überschneidungen, und meldet diese als Konflikt dem Benutzer. Diese Überprüfung findet immer zum Zeitpunkt des commit statt, es sei denn der Benutzer stößt diesen Prozess manuell an (update). Damit ist CVS nicht auf eine kontinuierliche Netzwerkver- bindung angewiesen.

Weiterhin bietet CVS die Möglichkeit, mehrere Entwicklungsbäume zu verwalten, Änderungen zwischen einzelnen Versionen in dritte Versionen einzuarbeiten (merge), sowie eine detaillierte Auflistung aller Projektaktivitäten abzurufen. Eine komplexe Projektverwaltung eben, die derzeit im Internet, vor allem im Open-Source-Bereich weit verbreitet ist.

# Beschreibung LinCVS

LinCVS ist eine graphische Oberfläche für den CVS-Client auf der Unix (Linux, *BSD, ...), Mac OS X und Windows Plattform. Sie gestattet es, Module vom CVS-Server zu laden (check out), Module auf dem Server anzulegen (import) sowie den Status von Verzeichnissen und einzelnen Dateien abzurufen oder zu aktualisieren. Grundlegende Operationen wie z.B. Hinzufügen, Entfernen und übernehmen sind ebenso selbstverständlich wie das Anzeigen der aktuellen Unterschiede zwischen der zentralen Version (auf dem CVS-Server) und der lokalen (beim CVS-Client), graphische Darstellung des Versionsbaumes, sowie vielfältige weitere graphisch unterstützte Verwaltungsaufgaben. Alle Aktionen werden auf dem CVS-Server protokolliert (konfigurierbar über die history) und sind damit jederzeit nachvollziehbar.

Um vom Entwicklungsstand des CVS unabhängig zu bleiben, greift LinCVS auf das lokal installierte cvs zu und ist damit immer auch mit der neuesten Version verwendbar.

Nach der Auswahl eines Start-Verzeichnises durchsucht der 'Project-Explorer' Unterverzeichnisse nach CVS-Projekten und zeigt diese in der 'Workbench' an. Nun sind alle Funktionen für einzelne/mehrere Dateien oder ganze Verzeichnisse per 'pull down menue' oder durch einen Klick mit der rechten Maustaste verfügbar. Der Zustand der einzelnen Verzeichnisse im Projektbaum wird von LinCVS kontinuierlich überwacht. Das heisst der Benutzer erkennt auch ohne alle Verzeichnisse geöffnet zu haben bereits am Symbol des Projektordners, das sich irgendwo in der Tiefe der Projekthierarchie zum Beispiel noch nicht eingecheckte Änderungen befinden. So ist auch nach einem CVS status Aufruf sofort zu erkennen, in welchem Stadium sich das Projekt befindet. Ergänzt um die Funktionalität des on-the-fly dir scanning ist LinCVS damit auch für grosse Projekte mit vielen tausenden Dateien geeignet. Aufgrund der ständig aktuellen Bemühungen von Netzwerkadministratoren, Netzwerke sicher zu machen, unterstützt LinCVS alle gängigen CVS Verbindungsverfahren. Proxy Verbindungen werden ebenfalls unterstützt, hierfür ist es allerdings erforderlich ein gepatchtes CVS zu installieren. Dieses ist natürlich ebenfalls auf der Downloadseite verfügbar.

Da LinCVS nicht in die CVS Projektverwaltung eingreift, ist eine simultane Verwendung von LinCVS und cvs via Kommandozeile möglich. Dabei wird die Funktion der LinCVS Verzeichnis-Status-Anzeige nicht beeinträchtigt.

Obgleich LinCVS inzwischen fast den gesammten Funktionsumfang von CVS graphisch unterstützt (und kontinuierlich weiterentwickelt wird;-), ist es dank der Konfigurationsmöglichkeiten ein leichtes, die Oberfläche auf die individuellen Bedürfnisse abzustimmen. Popup Menüs sind frei konfigurierbar, während in der Menüleiste immer der gesamte Funktionsumfang zur Verfügung steht. Eine Werkzeugleiste bietet direkten Zugriff auf häufig verwendete Funktionen.

Im Unterschied zu anderen Programmen ist dieses wahrlich leicht und intuitiv zu benutzen ;-)

## Featureliste

LinCVS supports graphical:
Connect methods:

- local/nfs
- pserver
- ssh
- ssh-agent
- proxy

Special dirview features:

- dir-state track keeping
- disable/enable tree/dir
- continuous dir state monitoring
- on-the-fly dir scanning
- open dir browser
- open shell
- expand all
- collaps all

Overall features:

- user/server profiles
- handle multiple projects simultaneously
- ascii/binary file support
- project properties
- per project settings
- reset/update to dir branch
- rename file/s
- user definable look and feel
- user definable icons/icon dir
- Application dir installation
- import binary/ascii preview
- browse modules on server, even without modules file
- view files without checkout, from history or log
- branch/tag/project-name/commit-info history
- tabbed view for cvs-controlled/cvs-ignored/non-cvs files
- remove files local/in repository/both
- open with (startup option for just opening a specific dir)
- create new file/dir
- internal diff viewer
- internal conflict resolver dialog
- use of external: editor/browser/shell/diff/remote shell
- per project autoupdate status/query update/update feature
- debug log function
- online help
- rename project (in sandbox)
- export current (modified) project state
- sub-project support (one dir tree with several cvs-projects)
- customizable popup menues
- customizable key shortcuts
- customizable file mapping, separtely for 'open' and 'view'
- syntax highlighting

cvs features:

- checkout (branch/tag/date)
- import
- export (branch/tag/date)
- release/remove
- status
- query update
- show editors
- show watchers
- watch add/remove
- edit
- unedit
- history
- commit
- tag (add/remove/move/reset)
- branch
- update (to whatever revision)
- login/logout
- lock/unlock dir/files
- log (graphical zoomable file revision tree)
- diff (to repository)
- visit file (from log tree or history)
- diff and merge (from log tree)
- create patch (from log tree)
- merge diff between rev1,rev2 into rev3(from log tree)
- annotate (with mult. filter functions)
- commit info templates
- .cvsignore support (global/local/environment/per directory)
- add ascii/binary
- readd (resurrect) files

There are definitelly more (all those we forgot;-), and LinCVS is still under development ...