Bevezetés a CVS
A CVS könyvtárfája történelem forrása, a munka egy sorozata változásokat. CVS jelöl minden egyes változik az idő, amikor ez történt, és a felhasználó nevét, hogy a változások. Általában egy személy, akinek a változást, és egy szöveges leírást az okokat, amelyek a változás. Tekintettel arra, hogy információt, CVS tud válaszolni olyan kérdésekre, mint
- Ki készítette ezt a változást?
- Mikor ők teszik?
- Miért tennének ilyet?
- Milyen más változások történtek ugyanabban az időben?
Mielőtt rátérnénk túl sok homályos fogalmak és koncepciók nézzük át az alapvető CVS parancsokat.
CVS tárolja az összes változások a projekt egy könyvtárfa úgynevezett adattár (repository). Mielőtt elkezdené a CVS, akkor be kell állítani a CVSROOT környezeti változót, hogy rámutat arra, hogy a tároló könyvtár. Aki felelős konfiguráció-menedzsment a projekt, valószínűleg tudja, hogy tartalmaznia kell ezt a változó; Még az is lehetséges, hogy a változó CVSROOT már telepítve van világszerte.
Mindenesetre, a tároló rendszer a / usr / src / master”. Ebben az esetben meg kell adnunk a parancsot
`Setenv CVSROOT / usr / src / master '
Ha a héj - csh vagy annak leszármazottai, vagy
`CVSROOT = / usr / src / mester kiviteli CVSROOT '
ha Bash vagy más változat liboy Bourne shell.
Ha elfelejtette ezt, CVS panaszkodni fog, ha megpróbálja futtatni:
CVS nem tud dolgozni a rendes könyvtárfákban; éppen ellenkezőleg, meg kell dolgozni egy olyan könyvtárba, hogy a CVS hoz létre az Ön számára. Ugyanígy, ahogy írok egy könyvet a könyvtárból, mielőtt magával viheti, akkor használd ezt a parancsot `cvs checkout”. hogy a CVS dolgozó könyvtárfába. Tegyük fel például, hogy dolgozik egy projekten, a `httpc”. triviális HTTP kliens:
A `cvs checkout httpc„azt jelenti:”Vegye ki a forrás fa a neve` httpc”a tárolóból meghatározott környezeti variable` CVSROOT".
CVS hozza a fa egy alkönyvtárban `httpc”.
A legtöbb ilyen fájlok - működő példány a források `httpc”. Azonban az alkönyvtár úgynevezett `CVS„(felső) egy más célja van. CVS arra használja, hogy tárolja további információt minden fájl a könyvtárban, hogy meghatározzák milyen változtatásokat tettek velük azóta, mint ellenőriztük.
Miután CVS létrehozott egy működő könyvtár fa, lehet szerkeszteni a szokásos módon, fordítás és tesztelés a fájlokat benne - ez csak egy fájlt.
Tegyük fel például, azt akarjuk, hogy összeállítja a projekt, amit az imént tanult:
Úgy tűnik, `httpc.c„még nem portolták az operációs rendszer. Azt kell, hogy a leadott az egyik érv, hogy csatlakozzon. Ehhez meg kell változtatni a 48 helyett
Most fordítsd sikeresnek kell lennie:
. Itt a szöveg a ciklikus Software honlap.
Mivel minden fejlesztő használja a saját üzemi könyvtár, változik, hogy az az Ön katalógusok nem automatikusan láthatók mások a csapat. CVS nem teszi közzé a módosításokat, amíg ő befejezi. Ha tesztelni, hogy milyen változtatásokat kell elkövetni (véglegesítés), hogy a tároló, és azokat elérhetővé mások számára. Bemutatásra kerül a cvs commit parancsot.
Azonban, ha egy másik fejlesztő változott ugyanaz a fájl, akkor, és talán még változott az ugyanabban a sorban? Kinek változások fognak használni? A szokásos válasz erre a kérdésre nem lehet automatikusan, CVS biztosan nem illetékes az ilyen döntés meghozatalára.
Ezért, mielőtt kötelezettséget a változtatásokat, a CVS megköveteli a források össze kell hangolni a módosítások tették a többi csoportban. cvs update parancs gondoskodik erről:
Mivel a CVS csatlakozott valaki másnak a módosításokat a forráskódot, meg kell győződnie arról, hogy azok továbbra is működnek:
Most, hogy a források a kollégákkal és tesztelték őket, akkor készek elkötelezni a változásokat a tároló és azok láthatóvá tétele más fejlesztők. Az egyetlen fájl megváltozott - ez `httpc.c”. de minden esetben, nyugodtan futni cvs update. CVS-ből kap egy listát a módosított fájlokat:
Ahogy az várható volt, az egyetlen fájl, amely megemlíti a CVS - ez `httpc.c„; CVS mondta, hogy a fájl tartalmazza változásokat, amelyek még nem állapítottak meg. Azt is rögzíti azokat az alábbiak szerint:
Vegyük észre, hogy most már elkötelezett a változtatásokat, azok láthatóvá tétele más csoport tagjai. Ha egy másik fejlesztő futtatja cvs update. CVS egyesülni fog a változásokat a fájlokat a munka könyvtárba.
Most érdemes tudni, hogy mi változik a többi fejlesztő tett `httpc.c”. Látni, hogy a naplóbejegyzések egy adott fájlt, akkor használja a cvs log parancsot.
A legtöbb szöveg itt lehet figyelmen kívül hagyni; kell csak figyelni, hogy egy sor naplóbejegyzések után az első sorban a kötőjelet. A naplóbejegyzések jelennek fordított időrendi sorrendben, azon a feltételezésen alapul, hogy a legutóbbi változások általában sokkal érdekesebb. Minden bejegyzés írja le az egyik változás, hogy a fájlt, és bontható alkotóelemei a következők:
Mielőtt rátérnénk a tény, hogy kaptak parancsot, hogy mit jelent az egyes része.
-c Meghatározza használni az emberi olvasható formátumban termelését. (Vajon miért nem az alapértelmezett beállítás) (1). -r 1.6 -r 1.7 Jelzi a CVS, meg kell, hogy adja ki a szükséges változtatásokat, hogy kapcsolja felülvizsgálata 1.6-s változata 1.7. Kérheti széleskörű változásokat; például -r 1.6 -r 1.8 kijelzők által végrehajtott módosítások Fred, a változások egy kicsit később. (Azt is kérheti, hogy a változások jelennek meg hátra - mintha felemelte - megadásával változathoz visszafelé :. -r 1.7 -r 1.6 Ez furcsán hangzik, de néha hasznos.) Httpc.c fájlnevet feldolgozás . Ha nem adja meg, a CVS jelentést az egész könyvtárat.
Ez az, amit ad a parancsot:
Ez igényel némi erőfeszítést, hogy megszokja az ilyen adatszolgáltatásra, de mindenképpen megéri (2).
Az érdekes rész kezdődik az első két sor kezdődő *** és ---; leírják a régi és az új fájlokat lehet összehasonlítani. A többi két szelet (darab), amelyek mindegyike kezdődik egy sor csillag. Itt az első „darab”:
Itt a második „darab”:
Ez leírja a hozzáadásával két vonal, amint azt a '+”. CVS kihagyja a régi szöveg - lett volna felesleges. Leírni a törölt sorok ebben a formátumban.
Mint a Unix diff parancs. kimenete cvs diff általában úgynevezett patch (javítás), mert a fejlesztők hagyományosan használt formátum terjeszteni hibajavításokat vagy apró újítást tartalmaz. Patch egészen olvasható és nem tartalmaz elegendő információt, hogy alkalmazza a változtatásokat, amelyeket tartalmaz, hogy egy szöveges fájlt. Tény, hogy a tapasz parancs UNIX környezetben foltokban teszi, hogy pontosan.
CVS foglalkozik hozzáadásával és fájlok törlése, valamint egyéb változások rögzítése az ilyen események a történelem fájlt. Akkor nézd meg, mint ha CVS üzletek katalógusok története a történelem fájlokat.
CVS nem feltételezi, hogy az újonnan létrehozott fájlok legyen az ellenőrzése alatt; ez nem igaz, sok esetben. Például nem kell rögzíteni változások kifogás fájlok és futtatható, mert a tartalma mindig újra a forrás fájlok (remélhetőleg). Ehelyett, amikor létrehoz egy új fájlt, cvs update lesz az lobogója `. „Mindaddig, amíg nem mondja meg a CVS, mit szándékozik tenni vele.
Ahhoz, hogy hozzá egy fájlt egy projekt, akkor először létre kell hozni, majd használja a cvs add. megjelölni azt felül. Aztán a következő alkalommal cvs commit CVS hozzá a fájlt a tárolóból. Például így felvehet egy README fájlt httpc projekt:
CVS kezeli a törölt fájlokat ugyanaz. Ha törli a fájlt, és `cvs update”. CVS nem feltételezi, hogy a törölni kívánt fájlt a projektből. Ehelyett, ez nem valami jóindulatú - visszaállítja az utolsó mentett fájl verzióját a tárolóban, és jelzi a lobogója U. ugyanúgy, mint bármely más frissítést. (Ez azt jelenti, hogy ha meg akarjuk szüntetni a fájl változások a munka könyvtár, akkor egyszerűen vegye ki, és hagyja, hogy `cvs update„parancs segítségével újjá.)
Törölni egy fájlt a projekt, akkor először el kell távolítania, majd a parancs `cvs rm”. hogy jelölje meg törlésre. A következő alkalommal, hogy `cvs commit„parancs eltávolítja a fájlt a tárolóból.
Elkövetése megjelölt fájl, amit egy `cvs rm„nem teszi tönkre a történelem ezt a fájlt - ez csak egy újabb kiadás --- »nem létezik«. Az adattár még mindig tartalmaz valamennyi nyilvántartást a fájlt, és elérheti őket tetszés szerint - például a `cvs diff„or` cvs log”.
Fájlok átnevezésére, több stratégiákat; --- a legegyszerűbb átnevezni egy fájlt a munka könyvtárba, majd futtassa `cvs rm„a régi nevű and` cvs add”egy újat. A hátránya ennek a megoldásnak, hogy a naplóbejegyzések a tartalmát a régi fájl nem kerülnek át az új fájlt. Más stratégiákat, amelyek segítségével elkerülni ezt, de más, furcsa problémákat.
Felveheti könyvtárak ugyanolyan közönséges fájlok.
Mint már említettük, `cvs update paranccsal változásokat tartalmaz, amit más fejlesztők a forráskód a munkakönyvtárban. Ha egy fájlt szerkeszt ugyanakkor valaki, CVS egyesíteni a módosításait.
Elég nehéz elképzelni, hogy ez hogyan működik, amikor a változások történtek különböző részein a fájlt, de mi van, ha mindkét megváltoztatta az ugyanabban a sorban? CVS kéri ezt a helyzetet a konfliktus, és hogy oldja meg.
Ebben az esetben egy másik fejlesztő változott ugyanaz a fájl részén, hogy te, így CVS panaszkodik konfliktus. Ahelyett, hogy a nyomtatott M httpc.c. ahogy lenni szokott, a CVS nyomatok C httpc.c. ami azt jelenti, van egy konfliktus a fájlban.
Ha úgy dönt, hogy hogyan oldja meg a konfliktust, távolítsa el a markerek a kódot, és szerkeszteni. Ebben az esetben, mivel a hibakezelés határozottan jobb, csak csepp valaki másnak a verzió, így a következő kódot:
Most teszteljük a változásokat, és rögzítse őket:
Fontos megérteni, hogy mi a CVS tartja konfliktus. CVS nem érti a szemantika a program kezeli a forráskód, mint egy fa a szöveges fájlokat. Ha egy fejlesztő hozzáad egy új érv, hogy egy funkciót, és rögzíti a hívó, míg egy másik fejlesztő egyidejűleg hozzáad egy új hívást ezt a funkciót, és nem adja át az új érv, amely minden bizonnyal egy konfliktus - a két változás összeegyeztethetetlen -, de CVS nem jelenti azt. Ő megértése konfliktusok szigorúan szöveges.
A gyakorlatban azonban a konfliktusok ritkák. A tünetek általában azért, mert két ember próbál megbirkózni ezzel a problémával, hogy nem a kölcsönhatás a fejlesztők, vagy nem értenek egyet a tervezési program. Megfelelő a feladatok megosztása a fejlesztő csökkenti annak valószínűségét, konfliktusokat.
Sok verziókövető rendszerek lehetővé teszik a fejlesztő számára zár egy fájlt, így mások nem, hogy megváltoztatja azt, ameddig a saját változtatások nem kerülnek rögzítésre. Annak ellenére, hogy a zár megfelelő bizonyos helyzetekben, hogy nem mindig a jobb megközelítés, mint a megközelítés CVS. Változások általában egyesült rendesen, és a fejlesztők néha elfelejti, hogy távolítsa el a zárat, mindkét esetben explicit zár szükségtelen késéseket okoznak. Továbbá, zárak megakadályozzák csak szöveges konfliktusok - nem tudnak mit kezdeni a szemantikai összeférhetetlenség a fajta fent leírt - amikor két fejlesztők szerkeszteni különböző fájlokat.
Vajon ez miért nem -u. Kb. Trans.
Sokkal jobb, hogy használja a -u. Kb. Trans.