Pondělí, červen 28, 2004

Základní práce s WinCVS

WinCVS - hlavní obrazovka

Pro práci s CVS serverem CVSNT, kterému jsem již věnoval jeden spot, používám WinCVS klienta. WinCVS klient je jednou ze tří částí programu CvsGui. Jde o aplikaci sloužící jako CVS klient pro platformu MS Windows (WinCVS). Dále je k dispozici varianta pro Mac (MacCvsX) a Linux/Unix (gcvs).

Základní vlastnosti WinCVS, resp. CvsGui jsou:

  • GNU/GPL licence a tím je k dispozici veškerý zdrojový kód k programu.
  • Sofistikované, pro jednotlivé platformy nativní, GUI prostředí, které dobře poslouží CVS začátečníkům i CVS expertům.
  • Podpora skriptů (Python) pro automatizaci často se opakujících úkonů.
  • Pohled na soubory v reálném čase s grafickou prezentací jejich stavu.
  • Různé filtry umožňující pohled na soubory a to jak pro jednotlivé adresáře nebo pro celé repository.
  • Komfortní příkazová řádka pro zadání CVS povelů, které není možné provést pomocí GUI.
  • S rozdíly v souborech (diff) je možné pracovat přímo v aplikaci nebo v externím programu.
  • Historie souboru může být zobrazena jako text i jako graf.
  • Podporuje textové, binární i unicode formáty souborů. Typ souboru je identifikován automaticky. Bohužel, pokud jsou v souboru uloženy i české znaky, je často identifikován jako binární. Stačí varování ignorovat.

Pro tento test jsem stáhl ze serveru SourceForge.net jeho poslední verzi 1.3 beta 17-2. Stažený soubor WinCvs13b17-2.zip byl 4 MB velký. Po rozbalení jsem získal jeden soubor setup.exe o velikosti 4.1 MB.Ten jsem spustil a provedl standardní instalaci.

Hlavní odlišnosti WinCVS proti Visual Source Safe (VSS)

Největší odlišností CVS proti Visual Source Safe (VSS) je, že CVS nevyžaduje od uživatele zamknutí souborů na kterých právě pracuje. CVS dokumentace dokonce doporučuje, aby soubory nebyly zamykány. Ve výjimečných případech, kdy několik uživatelů v jednu chvíli změní stejný soubor, bude většinou CVS schopno tento soubor zpracovat tak, aby byly správně spojeny a zapracovány všechny změny. V případě, kdy došlo ke změně stejných řádek souboru, jsou uživatelé na tento automaticky neřešitelný problém upozorněni a sami musí rozhodnout co dělat. Takové konflikty jsou velmi vzácné a vyskytují s pouze v případech chabé komunikace mezi vývojáři, kdy se dva nebo dokonce více programátorů pokusí řešit stejný problém.

Další důležitý rozdíl je, že VSS  poskytuje serverový pohled, kdežto CVS pohled tzv. klientský. V praxi to znamená, že na rozdíl od VSS, WinCVS vám neřekne o změnách souborů do té doby, než provedete update nebo se explicitně nezeptáte na stav vybraných souborů.

CVS také zdaleka není tak "vizuální" jako VSS. Při užívání CVS je zcela zřejmé, že bylo vytvořeno jako standard před mnoha lety a základ obsluhy pochází z příkazové řádky. WinCVS pouze tuto příkazovou řádku "obaluje" GUI. Velká část vývojářů dává tomuto přístupu přednost, protože mohou mít přímou a přesnou kontrolu nad tímto nástrojem. Někteří to ale rádi nemají.

VSS v současné verzi neumí pracovat s textovými soubory v kódování UTF-8 nebo UNICODE. WinCVS s těmito soubory pracovat umí.

Základní konfigurace

Pro začínajícího uživatele může být problém nastavit připojení na CVS server, tzv. konfiguraci CVSROOT. V první řadě je nutné zadat tyto požadované údaje ve volbě Admin → Preferences:

  • Authentication: způsob připojení k CVS serveru. V našem případe vybereme volbu pserver.
  • Path: cesta k našemu repository. Zadáme /nazev_repository (lomítko je nutné).
  • Host address: IP adresu nebo doménové jméno serveru na kterém korektně běží CVS server.
  • User name: jméno uživatele, který se k CVS serveru přihlašuje. Tohoto uživatele musí CVS server znát, viz příkaz cvs passwd.
  • CVSROOT: zde se automaticky všechny výše údaje sejdou do obsahu proměnné CVSROOT. Příklad: jmeno_uzivatele@jmeno_serveru:/nazev_repository.

V případě, že používáte jako CVS server program CVSNT, vyberte Authentication: ntserver a nemusíte potom zadávat jméno uživatele. Je vybráno automaticky podle toho, jak jste přihlášení do operačního systému. Tuto vlastnost se mi bohužel nepodařilo rozchodit. Použil jsem tedy autentifikaci pserver.

WinCVS - Preferences

Nyní je velmi vhodné provést načtení všech modulů, které jsou na CVS serveru uloženy. Pokud si myslíte, že tam zatím žádné nejsou, protože jste CVS server právě nainstalovali a vytvořili své první repository, tak se mýlíte. V každém repository se vytvoří adresáře a soubory, které je vhodné přečíst. Proveďte příkaz Remote → Checkout module. Zde do pole Module name and path on the server zadejte znak '.' (tečka), aby se přečetly všechny moduly.

Základní orientace

V levé části se standardně zobrazuje seznam modulů, což jsou v podstatě hlavní adresáře jednoho repository (skladu). Pokud chcete pracovat s celým repository, je nejlepší kliknout na jeho název pravým tlačítkem myši. Pokud mají moduly podadresáře, jsou zobrazeny také.

Vpravo od seznamu modulů je seznam jednotlivých souborů a to buď ve zvoleném adresáři nebo ve všech podadresářích při zvoleném Flat Mode.  Je zobrazen název souboru, jeho typ, CVS verze a  mnoho dalších zajímavých údajů. Soubory v tomto okně se dají filtrovat podle mnoha kritérií. Filtry jsou k dispozici v menu View → File Filter nebo samozřejmě v nástrojové liště.

V dolní části je zobrazen výstup CVS serveru. Z něho je zřejmé, že CVS je původem program ovládaný z příkazové řádky. Zobrazují se zde výsledky a odpovědi CVS serveru na všechny zadané povely. Většina informací je srozumitelná a zřejmá.

Základní operace

Před prací se souborem je nutné ho přidat do CVS. Soubor se přidá příkazem Modify → Add selection nebo Modify → Add binary (přidá binární/netextový soubor) nebo Modify → Add unicode (přidá textový soubor v dvoubytovém unicode kódování). K těmto příkazům samozřejmě existují i ekvivalentní volby na nástrojové liště. Soubor lze do CVS přidat pouze, pokud je součástí CVS i adresář, ve kterém je soubor umístěn. Adresář se přidává volbou Modify → Add selection. To, že byl soubor nebo adresář do CVS přidán, je nutné ještě potvrdit volbou Modify → Commit.

V případě, že soubor změníte, je nutné použít stejný příkaz Modify → Commit, kterým se změna zapíše do CVS serveru. Před zahájením práce se souborem nebo s celým projektem, je důležité si všechny soubory na svém lokálním disku zaktualizovat a to buď příkazem Remote → Checkout module nebo příkazem Modify → Update selection. V případě těchto příkazů je vhodné mít v levém okně zvýrazněný kořen modulů, aby se aktualizovaly všechny moduly a jejich podadresáře. Pokud bude zvýrazněn pouze některý modul, nebo jeho podadresář, zaktualizují se pouze adresáře a soubory, které jsou v tomto modulu, resp. adresáři.

WinCVS - zobrazení grafu verzí
souboru

Soubor je samozřejmě možné z CVS také vymazat. Sice při standardním vymazání nedojte k jeho úplnému zrušení, protože z hlediska filozofie CVS je požadováno, aby bylo možné se vrátit k jakékoliv verzi zpět, ale z hlediska klienta CVS serveru jde o odstranění souboru ze systému. Při odstranění souboru se použije příkaz Modify → Remove. Příkaz Modify → Erase selection při klasickém vymazání nepoužívejte. Potom je nutné vymazání potvrdit standardním příkazem Modify → Commit

Python a další funkce

WinCVS je možné velmi snadno rozšířit o další funkce pomocí programovacího jazyku Python. I v případě, že nechcete sami nic rozšiřovat, je vhodné si Python nainstalovat. Získáte tak přístup k mnoha dalším funkcím, které jsou standardně dodávány při distribuci WinCVS. Stačí distribuci jazyku Python pro MS Windows stáhnout z adresy http://www.python.org/download a spustit instalaci. Můj instalační soubor verze 2.3.4 s názvem Python-2.3.4.exe byl velký 9.9 MB a po instalaci zabral na disku 21.9 MB.

Po dalším spuštění WinCVS přibude spousta zajímavých maker. Makra pro administraci lze spustit z menu Admin → Admin macros a standardní z menu Macros. Navíc je po instalaci Pythonu možné v dolním okně zadávat CVS a TCL příkazy a ty se normálně provádějí. Výsledky příkazů jsou zobrazeny v tomtéž okně.

Přesto, že testovaná verze je stále beta, program nemá problémy se stabilitou a výkonem. Za několik dní, kdy jsem ho testoval se i ho nepodařilo shodit. Všechny příkazy prováděl bez problémů.

1 komentářů:

Radek řekl(a)...

Zdravím, konečně článek, jaký jsem hledal. Škoda jen, že WinCVS od té doby doznalo dosti změn. Zasekl jsem se hned u úvodního nastavení, protože položka General v nové verzi není. Místo položek v ní je odkaz na web a hláška o tom, že dané funkce je možno nastavit jinde. Kde, to jsem se už nedobouchal. Bylo by možné tento článek aktualizovat? Jsem vývojář několika aplikací, na kterých pracuji na více místech (tři různé lokality, všechny s možností přístupu k CVS serveru). Je nás na některé moduly více, proto CVS. Mám k dispozici linuxový server na páteři sítě internet, také mám k dispozici lokální NAS server, plně si mohu routovat porty, internet s dostačující rychlostí. Potřeboval bych článeček, který by mne krok za krokem navedl k tomuto cílovému stavu:
1) Nainstalovat a nastavit CVS (nejlépe linux, nevadil by CVSNT)
2) Zřízení repozitáře, uživatelů
3) Instalace a nastavení WinCVS pro použití tohoto repozitáře.

Díky moc, pokud na tuto výzvu kdokoliv zareaguje.