Avagy: Hogy használjuk a WinCvs-t megőrizve józan eszünket.
Panasztáblázat
BemutatkozásEz a leiras bemutatja a WinCvs 1.0.x kliens napi használatát. Viszont: nem bemutatása a version control system-nek, nem bemutatása a CVS-nek, és nem bemutatása a WinCvs-nek. Ez több mint egy hely, ahová fordulhatsz, ha hozzávetőlegesen tudod mit akarsz csinálni, csak nem emlékszel tisztán, hogyan is kell csinálni. Feltételezzük, hogy már van installálva WinCvs, és hogy már beállítottad a komunikációját a CVS repository-val amit használni akarsz. Ha a böngésződ támogatja a stíluslapokat, akkor találhatsz egy pár különböző betűbeállítást és színvariációt erről az oldalról. itt adunk. hivatkozik a WinCvs felhasználói felület elemeire, olyanokra mint gombok, fülek és input mezők . Hivatkozást az eredeti CVS documentációraSzakkifejezésekEzt a terminologiát használják a CVS documentációban, és így természetesen a WinCvs-ben is, amely persze eltérhet más forrás tároló rendszerekétől (source repository systems). A félreértések elkerülése végett, összeállítottunk egy rövid listát a leg lényegesebb kifejezésekből. Kérlek barátkozz meg ezekkel a szavakkal, mielőtt belevágnál ezen dokumentum fennmaradó részébe.
A teljes történetét a "revision", "release", "version" és "tag" használatának, lásd a 4. fejezetében a CVS dokumentációnak. Új Modul létrehozásaEgy project verzió ellenőrzés alá vételét import(álás)nak hívjuk a CVS terminológiában. Ahogy a neve mutatja, valamit importálnunk kell a CVS szerverre mielőtt verzió ellenőrzésen kezdenénk gondolkodni. A CVS-ben a project hierarchia átstruktúrálásának támogatása kissé hiányos, így megkímélheted magad rengeteg gondtól, ha töltesz egy kis időt a tervezéssel, mielőtt importálnál egy új modult. Az import művelet alapja egy "tiszta" könyvtár struktúra. A tisztán azt értjük, hogy a fileok, amelyeknek nem kell verziószám (forditó által generált, biztonsági, stb.) azokat töröljük. Ez különösen fontos ha a project még folytatódni fog egy ideig. Valószínűleg vannak különböző filejaid a könyvtárhierarchiában, amelyeket nem akarsz verzió ellenözzés alá vonni, de ennek ellenére meg akarod őket tartani, ott ahol vannak. Ebben az esetben el kell mozgatnod őket a könyvtárszerkezetből az importálás előtt, és visszamozgatnod őket utána. Légy óvatos, a CVS úgy kezeli az üres könyvtárakat, mintha nem létezőek lennének. Ha hozzá akarsz adni egy könyvtárat, amelyben sem file sem alkönyvtár nincs, készítened kell egy próba file-t bele. Azt ajánljuk, hogy a file neve README.txt legyen, amely egy rövid leírást tartalmaz arról, hogy mire való ez a könyvtár. Ha végre megvan a könyvtár szerkezet, amely csak azokat a fileokat tartalmazza, amelyeket a repository-ban is tárolni akarunk, akkor a következőket kell tennünk, hogy importáljuk a modult a WinCvs használatával:
WinCvs most importálja az egész könyvtár szerkezetedet a CVS szerverre. Megjegyezzük, hogy semmi sem fog változni a helyi állományaidban az import művelet közben. Ez azt jelenti, hogy a helyi másolatod nem lesz verzió ellenőrzés alatt az importálás után. Mielőtt elkezdenénk a munkát a verzió ellenőrzöll forrásunkon, a következőket kell tennünk:
Mostmár el tudod kezdeni a munkát a saját verzió ellenőrzött projecteden. [ CVS Doc: "Starting a project with CVS" ] Modul letöltése a CVS-bőlEgy modulhoz először hozzájutni a CVS szerverröl, ahogy tudjuk ez a "checkout". Egy modul "checkout"-olása a repository-ból adja a helyi másolatát a könyvtár szerkezetnek amely a modult alkotja. Hogy végrehajtsuk a "checkout"-ot, a következőket tegyük:
Ha a státuszod olyan, hogy a Ki szerkeszti ezt az állományt? részt. -t kell használnod, meg kell mondanod a WinCvs-nek, hogy mely fileokat szándékozol szerkeszteni, mielőtt szerkesztenéd őket. Ez talán kényelmetlen, de lehetővé teszi, hogy más fejlesztők nyomon követhessék, hogy egy adott file-t pillanatnyilag ki szerkeszt. Több információért lásd a[ CVS Doc: "checkout -- Check out sources for editing" ] Mások változtatásainak letöltése a CVS-bőlAlkalomadtán lehet, hogy szeretnéd egyesíteni a mások által végrehajtott változtatásokat a te helyi munkapéldányoddal. Azt a művelet amely letölti a változtatásokat a szerverről a helyi másolatra, úgy hívják, hogy "update". Frissíteni lehet egy file-t, a kiválasztott fileok egy csoportját, vagy rekurzívan egy teljes könyvtárstruktúrát. Az updateléshez a következőt kell tenni:
A mások által létrehozott változtatások egybeolvadnak a te fileaiddal, megtartva azokat a változtatásokat, amelyeket te hoztál létre ugyanazon a fileon. A repository nem érintett az updatelében. Ha frissítés közben ütközésről kapsz értesítést, olvasd el a következő részt. [ CVS Doc:
"Bringing a file up to date" ] Ellentmondások (ütközések) feloldásaTörténhet az, hogy a CVS szerver ütközést (conflict) jelez, miközben frissíted a filejaidat a repositoryból. Az ütközés akkor keletkezik, amikor két vagy több fejlesztő egy file ugyanazon sorait változtatja egyidejűleg. A CVS semmit sem tud a projectedről, ezért az ütközések feloldását a fejlesztőre hagyja. Valahányszor ütközés történik, meg kell nyitnod a kérdéses filet, és keresned kell <<<<<<< stringgel kezdődő sorokat. Az ütközéses területet a következőhöz hasonló sorok jelölik:
Neked kell eldöntened, hogy melyik kód kell, elvégezni a szükséges módosításokat, törölni a CVS jelőlést, és "commit"-olni a módosításaidat a repositorya-ba [ CVS Doc: "Conflicts example" ] A változtatásaid elküldése a CVS-nekA helyi módosítások elérhetővé tételét a repository-ban úgy hívjuk, hogy a változtatások "commit"-olása.
Jegyezzük meg, hogy a commit-olás nem fogja autómatikusan hozzáadni az újonan létrehozott fileokat a repository-hoz. Lásd az Állományok és könyvtárak hozzáadása részt ennek a leírásáért. [ CVS Doc: "commit -- Check files into the repository" ] Változtatások megtekintéseWinCvs-t használhatjuk arra is, hogy megnézzük a státuszt, log-okat, különbségeket (diff) stb, a fileok és könyvtárak esetében.
Itt egy rövid magyarázat arról, hogy milyen outputot remélhetünk a különböző státusz parancsoktól.
[ CVS Doc:
"diff -- Show differences between revisions" ] Állományok felcimkézése (tag-elés)A fejlesztés egy adott szintjén, adhatunk egy vagy több filenak egy közös cimkét, amellyel a verziójukra utalunk. Ezt úgy hívjuk "tagelés". A "tagelés"-nél általában egy teljes modult használunk, így az aktuális állapota az egész modulnak visszaállítható lesz a jövőben. A "tagelés" ezen fajtáját mindíg meg kell csinálni átadás és főbb változtatások végrehajtása előtt. Ahhoz, hogy felcimkézzünk egy vagy több file-t vagy könyvtárat, a következőt kell tennünk:
Megjegyezzük, hogy a CVS egy kicsit korlátozza a karaktereket, amelyeket egy "tag" név tartalmazhat: A névnek betűvel kell kezdődnie, és csak betűket, számokat, kötőjelet "-" és aláhúzást "_" tartalmazhat. Pontosan ez azt jelenti, hogy nem tartalmazhat pontot és szóközt sem. Ha bele szeretnéd venni a verziószámot a cimkébe, akkor helyettesítsd a pontokat kötőjelekkel. Két "tag" név le van foglalva nekik speciális jelentésük van a CVS-ben: "HEAD" hivatkozik a legujabb verzióra a repositoryban, míg a "BASE" az a verzió, amelyet utoljára "checkout"-oltál a helyi könyvtárba. |
Állományok és könyvtárak hozzáadásaAmikor létrehozol egy új file-t, és be szeretnéd szúrni a repository-ba, meg kell mondanod a CVS-nek, hogy kezelje azt a filet. Ha a könyvtár tartalmazza a filet, amely nincs CVS ellenőrzés alatt, először hozzá kell adni azt. Fájlok, vagy könyvtárak hozzáadásához a következőket kell tenni:
Ha egy teljes könyvtárszerkezetet akarsz hozzáadni néhány file helyett, a előbbi technika kissé bonyolultá válik, mert az add parancs nem rekurzív! Ebben az esetben inkább az inportot kellene használni, mint az Új modul létrehozása résznél:
WinCvs most importálja a teljes könyvtárszerkezetet a CVS szerverre, az adott modul alá. Megjegyzendő, hogy semmi sem változik a helyi fileokon az importálás közben. Ez azt jelenti, hogy a helyi változat filejai nem lesznek verzió ellenörzés alatt. Hogy ellenörzés alá kerüljenek az importált hierarchia filejai hozzá kell jutnunk egy másolatukhoz a repository-ból a következőképpen:
WinCvs ezekután ad neked egy friss, verzió ellenőrzött másolatot a könyvtárhierarchiádról. [ CVS Doc: "Adding, removing, and renaming files and directories" ] Állományok és könyvtárak törléseEgy file törléséhez, először elő kell jegyezned a file-t, törlésre, és utána commit-olni a változást, a következőképpen:
Ezek az állományok mostmár törlődtek a repository-ból. Megjegyezzük, hogy a fileok fizikailag nem törlődtek, hanem inkább megjelölődtek a "dead" cimkével. Ezen a módon lehetséges visszatérni a file-okhoz, ha azt választod, hogy a modul egy régi verzióját akarod "checkout"-olni. A könyvtárak törlése viszont egy másik történet. A CVS opcionálisan törli az üres könyvtárakat amikor frissitjük neki a szülő könyvtárát. Ha meg akarsz szabadulni az üres könyvtáraktól, a következőt kell csinálnod:
A könyvtár törlődni fog ha az általa tartalmazott összes file előzőleg törölve lett, a helyi másolatból és a repositoryból is. [ CVS Doc: "Adding, removing, and renaming files and directories" ] Állományok és könyvtárak átnevezése, mozgatásaMozgatni és átnevezni fileokat közvetlenül nem lehetséges a CVS-ben. Ez az egyike a CVS rövidtávú terveinek. A mozgatás és átnevezés szimulálása a tórlés és hozzáadás müveleteivel viszont lehetséges. Lásd Állományok és könyvtárak hozzáadása és Állományok és könyvtárak törlése. [ CVS Doc: "Moving and renaming files" ] Elágazások (branching)Egy pozitív tulajdonsága a verzió ellenőrző rendszernek, hogy lehetőség van a változtatásokat a fejlesztés egy elkülönülő vonalába (ágába) elszigetelni. Ezt a vonalat hívják branch-nak. (Lásd: What branches are good for a CVS documentációban.) Hogy létrehozzunk egy új elágazást, a következőket kell tennünk:
Mostantól egy új ag van a repository-ban a megadott névvel. Megjegyzendő: Az elágazás csak a repository-ban jött létre! Hogy dolgozni kezdj az újonan létrehozott ágon, azt kell tenned, ami a Munkaág kiválasztása részben le van írva. [ CVS Doc: "Branching and merging" ] Munkaág kiválasztásaHogy elkezdhessük a munkát egy ágon az alapértelmezett fejlesztési vonal helyett, oda kell kötnünk a helyi másolatunkat az ághoz. Ez ahhoz szükséges, hogy biztosak lehessünk benne hogy a különböző események, mint a frissítés, commit-olás, stb. az ágon dolgozik, nem pedig a fő fejlesztési vonalon. Hogy átmozgasd a helyi másolatodat egy másik branch-ba, a következőt kell tenned:
WinCvs ezután elvégzi a szükséges változtatásokat a munkapéldányon, és ezzel átmozgatja a kívánt ágba. A frissítés itt magában foglalja a fileok hozzáadását vagy törlését. CVS tesz egy "sticky tag" cimkét azokra a fileokra, amelyek a branch-ban érintettek. Ezek a "sticky tag"-ek láthatóak, amikor kiadjuk a status parancsot egy filera, ahogyan az a Változtatások megtekintése részben le van írva. Elmozgatni a "sticky tag"-eket, és így visszatérni a fő fejlesztési vonalhoz a Visszatérés a fejlesztés fő ágára szakasz leírása alapján kell. [ CVS Doc: "Accessing branches" ] Branch egyesítéseHa megelégedtél a változtatásokkal, amelyeket az elágazáson végrehajtottál, valószínűleg szeretnéd elérhetővé tenni a fejlesztés fő ágán. Egy branch egyesítése egy másikkal a "merging" (összefűzés). Hogy összefüzzünk egy branch-et a következőt kell tennünk:
Bármely változtatás a branch-ből most már össze lesz fűzve a te helyi másolatoddal. Valószínűleg ezek után vissza akarod "commit"-olni a változtatásaidat a repository-ba, ezt megteheted a A változtatásaid elküldése a CVS-nek rész leírása alapján. Fontos megjegyzés: Az előbb megadott merge megpróbálja összefűzni a változásokat a branch kezdetétől. Ha már másodszorra végzed ezt a műveletet (hogy a legutőbbi merge utáni változásokat is belefűzd a helyi példányba), akkor ne a branch kezdetétől való mergelést válaszd, mert az majdnem mindíg bajhoz vezet. Hogy megkerüljük ezt a problémát, új "tag"-et kell adnod a branch-nak minden mergelés után, és használd ezt az új cimkét, amikor megnevezed az ágat, amit be akarsz mergelni. [ CVS Doc: "Merging an entire branch" ] Visszatérés a fejlesztés fő ágáraHa abba akarjuk hagyni a munkát egy ágon, és a helyi másolatunkkal vissza akarunk térni a fejlesztés fő ágára, akkor a WinCvs-sel törölni kell az összes "sticky tag"-et. Ahhoz, hogy ezeket töröljük, és így frissítsük a helyi másolatot a fö fejlesztési vonalra, a következőket kell tennünk:
A WinCvs most frissíti a helyi másolatot, úgy, hogy az az aktuális fejlesztés fő vonalával egyezzen meg. Az elágazás, amelyben voltunk, még mindíg létezik a repository-ban, és vissza tudunk oda térni a Munkaág kiválasztása pontban leírtak szerint. Ki szerkeszti ezt az állományt?Lehetőség van lekérni a CVS-től, hogy éppen ki szerkeszt egy adott file-t, de ez csak akkor működik, ha a fejlesztők bejelentik a CVS-nek hogy szerkeszteni szeretnék a file-t. Ezt hívják IR CVS modellnek (well, that's actually an internal joke at Computas), és el kell dönteni a project kezdetén, hogy akarjuk-e ezt használni. Hogy alkalmazzuk az IR CVS modellt, a fejlesztőknek a modult csak olvashatóra kell "check out"-olni. Ezt megtehetjük a menüponttal a fülén minden WinCvs ablaknak.A file szerkesztéséhez a következőt kell tennünk:
Amikor "commit"-oljuk a filet, a CVS szerver feltételezi, hogy már nem szerkesztjük tovább a filet, és a WinCvs újra csak olvashatóvá teszi a filet. Ha viszont nem változtattál semmit, akkor a "commit" nem mondja meg a CVS-nek, hogy befejezted a szerkesztést. Ebben az esetben a következőket kell tenned:
És most, visszatérünk az eredeti kérdéshez: "Ki szerkeszti ezt az állományt?" Hogy megkapjuk a szerkesztők listáját valamely file-ra, a következőket kell tennünk:
WinCvs ezután megjeleníti az ismert szerkesztők listáját az adott filenak. [ CVS Doc: "Multiple developers" ] Függelék A: FAQ
Függelék B: Miben különbözik a CVS a Microsoft Visual Source Safe-tőlA CVS és a WinCvs sok dologban különbözik a Visual Source Safe (VSS) -től. A leg szembetűnőbb különbség az lehet, hogy a CVS-nek nincs szüksége felhazsnálókra, hogy lock-olják a file-okat, amelyeken dolgoznak, míg a VSS-nél ez alapkövetelmény. Valójában, a CVS dokumentáció arra bátorítja a felhasználókat, hogy ne használják a file lockolást. Egy kitűnő példa, hogy különböző emberek szerkeszthetik ugyanazt a filet, ugyanabban az időben, a CVS mégis normálisan összefűzi a változtatásokat. Ha két vagy több fejlesztő ugyanazt a sort szerkesztette, akkor a CVS ütközést jelez, beszúrva a direktívákat a fileba, és hagyja, hogy a fejlesztők eldöntsék, hogy mit kell tenni. Az ilyen ütközések nagyon ritkák, általában ez a fejlesztők közti kommunikáció hiányának az eredménye (azaz két ember ugyanazt a hibát próbálja javítani.). A másik fontos különbség, hogy a VSS szerver nézőpontú, míg a WinCvs kliens nézőpontú. Gyakorlatilag ez azt jelenti, hogy a VSS-sel ellentétben a WinCvs nem árul el semmit a repositorybeli változásokról, amíg nem frissítünk, vagy le nem kérjük a státuszát az adott filenak. A változások a WinCvs file ablakában jelennek meg az utolsó "checkout", "update", vagy "commit" után. CVS nem olyan látványos, mint a VSS. Amikor a WinCvs-t használjuk, tisztává válik, hogy ez egy parancs sorban futó program, amelyről sok éve eldöntötte valaki, hogy ír hozzá GUI-t. Néhányan közülünk kedvelik a WinCvs egyszerű felfogását, amely az irányítás érzését adja a tapasztaltabb felhasználóknak. Mások viszont utálják. If you're one of the haters, feel free to improve the program and contribute your changes back to the community. :-) |
Fordította: bMatyi - e-mail: barakonyi@freemail.hu 000-04-28 Sverre -- mailto:shh@thathost.com |
Brought to you by Computas AS. Update 2003-06-13: I no longer work for Computas, and Computas no longer has this guide publicly available. The official site is now http://www.thathost.com/wincvs-howto/. Computas should still be credited, as they payed me to write this guide, and agreed to make it public. Download wincvs-howto.zip if you want local access. |
This guide is no longer maintained by the author. You'll find various updated offsprings with more or less proper credit of me and of Computas at the following locations: [Egil at Ikon], [G. Lawrence at AIMTec], [sourceforge] |