WinCvs -- Napi használat

Avagy: Hogy használjuk a WinCvs-t megőrizve józan eszünket.


Panasztáblázat

  1. Bemutatkozás
  2. Szakkifejezések
  3. Uj Modul létrehozása
  4. Modul letöltése a CVS-ből
  5. Mások változtatásainak letöltése a CVS-ből
  6.   Ellentmondások (ütközések) feloldása
  7. A változtatásaid elküldése a CVS-nek
  8. Változtatások megtekintése
  9. Állományok felcimkézése (tag-elés)
  10. Állományok és könyvtárak hozzáadása
  11. Állományok és könyvtárak törlése
  12. Állományok és könyvtárak átnevezése, mozgatása
  13. Elágazások (branching)
  14.   Munkaág kiválasztása
  15.   Branch egyesítése
  16.   Visszatérés a fejlesztés fő ágára
  17. Ki szerkesztette ezt az állományt?
  18. Függelék A: FAQ
  19. Függelék B: Miben különbözik a CVS a Microsoft Visual Source Safe-től

Bemutatkozás

Ez 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. A dolgok így néznek ki 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óra itt adunk.

Szakkifejezések

Ezt 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.

Checkout
Általában arra használják, hogy kinyerjenek egy egész modult a repository-ból.
Commit
A módosításaid elküldése a repository-nak.
Export
Hivatkozás egy teljes modul kinyerésére a repository-ból, bármely CVS adminisztrációs file nélkül: Az exportált modulok nem lesznek CVS ellenörzés alatt.
Import
Általában arra használják, hogy létrehozzanak egy új modult a repository-ban, egy teljes könyvtár struktúra elküldésével.
Module
Könyvtárszerkezet. A software projecteknél általában egy modul létezik a repository-ban.
Release
A verziója egy teljes terméknek (programnak).
Revision
A versiója egy filenak.
Tag
A szimbólikus neve egy filecsoportnak, a fejlesztés egy adott időpontjában.
Update
Más felhasználók változtatásainak letöltése a repository-ból. Csak a helyi másolatot (munkapéldányt) frissíti.

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ása

Egy 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:

  1. Válasszuk a Cvs Admin -> Import module menüt.
  2. A felbukkanó könyvtár választó ablakban válasszuk ki a legfelső könyvtárszintjét a projectnek, amit importálni akarunk (project könyvtárat).
  3. A WinCvs will ekkor megpróbálja azonosítani a bináris fileokat, amelyek lehetnek a könyvtár szerkezetben (pl.:bmp képfile). Ha egy szűrő ablak nyílik meg, bizonyosodj meg róla, hogy a fileoknál a megfelelő text/binary beállítások vannak-e.
  4. Az Import settings ablakba írd be a modul nevét. Ez lesz a neve a legfelső könyvtárnak, amikor "check out"-oljuk a modult.
  5. Írd be a neved, vagy a vállalatod nevét (szóközök nélkül) a Vendor tag mezőbe.
  6. Írj start -ot a Release tag mezőbe.
  7. Nyomd meg az OK gombot.

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:

  1. Mozgassuk el az eredeti hierarchiát, azaz pl.: nevezzük át a project könyvtárát *.old-ra a Windows file explorer segítségével.
  2. "Checkout"-oljunk egy másolatot az uj modulról a következő útmutatás alapján: Modul letöltése a CVS-ből.
  3. Opcionálisan visszamásolhatjuk a mellékes fileokat, melyeket kimozgattunk importálás előtt.

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ől

Egy 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:

  1. Válasszuk a Cvs Admin -> Checkout module menüt.
  2. A felbukkanó file dialogban válasszuk ki azt a könyvtárat, ahová a modult el akarjuk helyezni. Az általad választoot könyvtárban létre fog jönni egy a modul nevét viselő könyvtár, így nyugodtan biztosíthatod azt a könyvtárat amelyben az összes projected van.
  3. A "checkout settings" ablak feltűnik. Az Enter the module name... mezőbe írjuk be a választott modul nevét. Megjegyezzük, hogy a modul nevek kis- és nagybetű érzékenyek.
  4. Válasszulk a Globals fület.
  5. Állítsuk be a Checkout read-only -t (csak olvasásra) aszerint, hogy a project vezető mit mond nekünk (lásd később).
  6. Nyomjuk meg az OK gombot.

Ha a státuszod olyan, hogy a Checkout read-only -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 Ki szerkeszti ezt az állományt? részt.

[ CVS Doc: "checkout -- Check out sources for editing" ]

Mások változtatásainak letöltése a CVS-ből

Alkalomadtá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:

  1. Válasszuk ki a könyvtárat, file-t, vagy file-okat amelyeket frissíteni akarunk.
  2. Jobb egérgombbal kattintsunk a kiválasztásra, és válasszuk sz Update selection menüpontot.
  3. Győződjünk meg róla, hogy a Create missing directories that exist in the repository be van jelölve.
  4. Nyomjuk meg az OK gombot.

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" ]
[ CVS Doc: "update -- Bring work tree in sync with repository" ]

Ellentmondások (ütközések) feloldása

Tö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:

<<<<<<< filename
    your changes
=======
    code merged from repository
>>>>>>> revision

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-nek

A 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.

  1. Commit-olás előtt frissítést (update) kell végezned, hogy megbizonyosodj arról, hogy nincsenek ütközések. Lásd a Mások változtatásainak letöltése a CVS-ből részt.
  2. Jelöld ki a könyvtárat, file-t vagy file-kat, amikt commit-olni akarsz.
  3. Jobb egérgombbal kattintsunk a kiválasztásra, és válasszuk a Commit selection menüpontot.
  4. A Commit settings ablakban adjunk meg egy log üzenetet. Ez a lépés opcionális, de erősen ajánlott, hogy szánjunk egy kis időt egy rövid leírásra arról, hogy mi változott.
  5. Nyomjuk meg az OK gombot.

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ése

WinCvs-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.

  1. Válasszuk ki a könyvtárat, file-t vagy file-okat, amelyekről többet szeretnénk megtudni.
  2. A jobb egérgombbal kattintsunk a kiválasztásra, és válasszunk egyet a Diff selection, Log selection, Status selection or Graph selection menüpontok közül.
  3. Ha ablak ugrik elő, adjunk meg minden szükséges információt, és nyomjuk meg az OK gombot.

Itt egy rövid magyarázat arról, hogy milyen outputot remélhetünk a különböző státusz parancsoktól.

Diff
Összehasonlithatjuk vele a helyi másolatunkat ugyanezen file bármely verziójával a repository-ból. Használható különböző verziók összehasonlítására a repository-ban. A kimenet < vagy > jelekkel kezdődő sorokból áll, szimbolizálva azt, hogy melyik sorokat kellene törölnöd, vagy hozzáadnod, ahhoz, hogy a te verziódból az összehasonlított verzióhoz juss.
Log
Megmutatja a log uzenetet, dátumot, "tag"-et, szerzőt, stb. minden verziójára az adott filenak. (anélkül, hogy limitálnád mely verzióét akarod látni).
Status
Megjeleníti a módosítási státuszát az adott filenak, azaz, hogy vajon módosult-e a file helyben, vagy a repository-ban. Megmutatja a helyi és a CVS-beli file verziószámát és a tag-eket is, ha van.
Graph
Eléggé profi tulajdonság, amely megmutatja egy file verzió gráfját. Nagyon hasznos amikor van egy vagy több elágazás az adott file verzió históriájában. A helyi verzió meg van jelölve egy dokumentum ikonnal. A gráfon a shift segítségével ki tudsz választani két verziót és meg tudod nézni köztük a különbséget (diffelni tudod őket).

[ CVS Doc: "diff -- Show differences between revisions" ]
[ CVS Doc: "log -- Print out log information for files" ]

Á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:

  1. Jelöljük ki a könyvtárat, file-t vagy file-okat, amelyeket fel akarunk cimkézni.
  2. Jobb egérgombbal kattintsunk a kijelölésre, és válasszuk a Tag selection -> Create a tag menüpontot.
  3. Adjunk meg egy cimkét a New tag name input mezőben. (Lásd alább a kikötéseket a "tag" névre.)
  4. Nyomd meg az OK gombot.

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.

[ CVS Doc: "Tags -- Symbolic revisions" ]

Állományok és könyvtárak hozzáadása

Amikor 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:

  1. Jelöld ki a könyvtárat, file-t vagy file-okat, amelyeket hozzá akarsz adni.
  2. A jobb egérgombbal kattints a kijelölésre, és válaszd az Add selection vagy az Add selection binary menüpontot. Használd a binárist a nem text fileokhoz, különben a fileok hibásak lesznek a CVS-ben!
  3. Így a file-ok még csak meg vannak jelölve hozzáadásra, commit-olnod kell őket, hogy bekerüljenek a repository-ba. Lásd A változtatásaid elküldése a CVS-nek menüpontot, ha nem tudod hogyan kell commit-olni.

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:

  1. Válaszd a Cvs Admin -> Import module menüt.
  2. A felbukkanó ablakban válaszd ki a könyvtárat, amelyhez hozzá akarod adni az új könyvtárat.
  3. WinCvs most megpróbálja beazonosítani a bináris file-okat amelyek a könyvtárszerkezetben vannak. Ha egy szürő ablak jelenik meg, ellenőrizd, hogy a fileokhoz javasolt text/binary beállítások helyesek-e.
  4. Az Import settings ablakban írd be a modul nevét, amelyhez a könyvtárat hozzá akarod adni. Ha a module neve: MyProject, és a source/utils alkönyvtárat akarod hozzáadni, akkor a MyProject/source/utils -t írd a Select the module name... input mezőbe.
  5. Írd be a neved, vagy a vállalatod nevét (szóközök nélkül) a Vendor tag mezőbe.
  6. Írj start -ot a Release tag mezőbe.
  7. Nyomd meg az OK gombot.

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:

  1. Mozgassuk el az eredeti hierarchiát, azaz pl.: nevezzük át az importált könyvtárat *.old-ra...
  2. A WinCvs-ben válasszuk ki azt a könyvtárat amit az előbb hozzáadtunk. Jobb klikk, és válasszuk az Update selection menüpontot.
  3. Győződjünk meg róla, hogy a Create missing directories that exist in the repository be van jelölve.
  4. Nyomjuk meg az OK gombot.

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ése

Egy 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:

  1. Jelöld ki a file-t, vagy file-okat, amelyeket törölni akarsz.
  2. A jobb egérgombbal kattints a kijelölésre és válaszd a Remove selection menüpontot.
  3. Ekkor a fileok még csak ki vannak jelölve törlésre, commitolnod kell őket, hogy törlődjenek a repository-ból. Lásd A változtatásaid elküldése a CVS-nek menüpontot, ha nem tudod hogyan kell commit-olni.

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:

  1. Jelöld ki a szülő könyvtárát annak a könyvtárnak, amelyet törölni akarsz.
  2. Jobb egérgombbal klikkelj a kijelölésre, és válaszd az Update selection menüpontot.
  3. Válaszd a Globals fület.
  4. Győződj meg róla, hogy a Prune (remove) empty directories meg van jelölve (ez az alapbeállítása).
  5. Nyomd meg az OK gombot.

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ása

Mozgatni é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:

  1. Jelöljük ki a könyvtárat, vagy fileokat, amelyeken elágazást szeretnénk csinálni.
  2. Jobb egérgombbal klikkeljünk a kijelölésre, és válasszuk a Tag selection -> Create a branch menüpontot.
  3. A New branch name input mezőben adjunk meg egy cimkét, amelyet a branch esetében használni akarunk. Lásd az Állományok felcimkézése szakaszt hogy tudd milyen karaktereket használhatsz egy érvényes névhez.
  4. Jelöld be a Check that the files are unmodified before branching checkboxot.
  5. Nyomd meg az OK gombot.

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ása

Hogy 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:

  1. Jelöljük ki a legfelső könyvtárszintjét a projectnek. (Ha pontosan tudjuk, hogy mely könyvtárak és file-ok a részei az elágazásnak, akkor elegendő azokat kiválasztani.)
  2. Jobb egérgombbal klikkeljünk a kijelölésre, és válasszuk az Update selection menüpontot.
  3. Győződjünk meg róla, hogy a Create missing directories that exist in the repository be van jelölve.
  4. Válasszuk a Sticky options fület.
  5. jelöljük ki a Retrieve rev./tag/branch checkbox-ot.
  6. A Retrieve rev./tag/branch input mezőben adjuk meg a nevét a branch-nak amelyet ki szeretnénk választani.
  7. Nyomjuk meg az OK gombot.

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ése

Ha 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:

  1. Mozgassuk a helyi másolatunkat abba az ágba, amelybe be akarjuk "merge"-elni a változásokat. Lásd a Munkaág kiválasztása vagy a Visszatérés a fejlesztés fő ágára részeket.
  2. Válaszd ki a legfelső könyvtárát a projectnek. (Ha pontosan tudod mely könyvtárak és file-ok a részei a branch-nak, elegendő azokat kiválasztani.)
  3. Jobb egérgombbal klikkelj a kijelölésre, és válaszd az Update selection menüpontot.
  4. Győződj meg róla, hogy a Create missing directories that exist in the repository be van jelölve.
  5. Válaszd a Merge options fület.
  6. Klikkelj az Only this rev./tag gombra.
  7. Az Only this rev./tag input mezőben add meg a nevét a branchnak, amit össze akarsz fűzni a helyi másolatoddal.
  8. Nyomd meg az OK gombot.

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ára

Ha 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:

  1. Jelöljük ki a legfelső könyvtárszintjét a projectnek. (Ha pontosan tudjuk, hogy mely könyvtárak és file-ok a részei az elágazásnak, akkor elegendő azokat kiválasztani.)
  2. Jobb egérgombbal klikkeljünk a kijelölésre, és válasszuk az Update selection menüpontot.
  3. Győződjünk meg róla, hogy a Create missing directories that exist in the repository be van jelölve.
  4. Kattintsunk a Reset any sticky date/tag/'-k' options checkbox-ra.
  5. Nyomjuk meg az OK gombot.

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.

[ CVS Doc: "Sticky tags" ]

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 Checkout read-only menüponttal a Globals fülén minden WinCvs ablaknak.

A file szerkesztéséhez a következőt kell tennünk:

  1. Jelöljük ki a file-t amit szerkeszteni akarunk.
  2. Jobb egérgombbal kattintsunk a kijelölésre, és válasszuk a Monitors selection -> Edit selection menüpontot. (Használhatjuk a parancsikont is a toolbar-on.) A csak olvasható cimke eltűnik, és a CVS szerver bejegyzi, hogy szerkesztjük a filet.
  3. Ezek után szerkeszthetjük a filet.
  4. Majd "commit"-oljuk a file-t A változtatásaid elküldése a CVS-nek rész alapján.

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:

  1. Jelöld ki a file-t, amit megjelöltél szerkesztésre.
  2. Jobb égérgombbal kattints a kijelölésre, és válaszd a Monitors selection -> Unedit selection menüpontot. (Használhatjuk a parancsikont is a toolbar-on.)

É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:

  1. Jelöld ki a file-t amelyre kíváncsi vagy.
  2. Jobb egérgombbal kattints a kijelölésre, és válaszd a Monitors selection -> Editors of selection menüpontot.

WinCvs ezután megjeleníti az ismert szerkesztők listáját az adott filenak.

[ CVS Doc: "Multiple developers" ]

Függelék A: FAQ

  1. Mit mutatnak a misztikus levelek frissítés közben?

    Lásd a frissítés kimenetét a CVS manuálban.

  2. Az óra a szerveren rossz! Az Id cimkék és logok rossz időt mutatnak!

    Ez egy "feature". CVS mindíg az UTC-t (United Time Convention) használja logolásra.

Függelék B: Miben különbözik a CVS a Microsoft Visual Source Safe-től

A 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
The original CVS doc 1.10.6 that we reference is written by Per Cederquist et al. You may find its source on the official CVS site.

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]