Felforgatás

felforgatás
Típusú központi verziókezelő rendszer [d] , Apache Foundation projekt [d] , ésnyílt forráskódú szoftver
Szerző CollabNet [d]
Fejlesztő Apache Software Foundation
Beírva C [4] [5] , Python [4] , C++ [6] [7] és Java [6] [7]
Operációs rendszer GNU/Linux [8] , Microsoft Windows [8] , macOS [8] és BSD [8]
Első kiadás 2000. október 20. [1]
legújabb verzió
Olvasható fájlformátumok SVN kiíratási formátum (v1) [d] , SVN kiíratási formátum (v2) [d] , SVN kiíratási formátum (v3) [d] és SVN kiíratási formátum (általános) [d]
Generált fájlformátumok SVN kiíratási formátum (v1) [d] , SVN kiíratási formátum (v2) [d] , SVN kiíratási formátum (v3) [d] és SVN kiíratási formátum (általános) [d]
Engedély Apache License 2.0 [9]
Weboldal subversion.apache.org
 Médiafájlok a Wikimedia Commons oldalon

A Subversion [10] (más néven " SVN " [11] ) egy ingyenes , központosított verziókezelő rendszer , amelyet hivatalosan 2004 -ben adott ki a CollabNet . 2010 óta a Subversion az Apache Software Foundation projektje, hivatalos neve Apache Subversion (bejegyzett védjegy [12] ).

A projekt célja a fejlesztés kezdetén az volt, hogy leváltsa [13] [14] az akkoriban elterjedt , mára már elavultnak számító Concurrent Versions System (CVS) [15] [16] [17] . A Subversion megvalósítja a CVS összes fő funkcióját, és mentes az utóbbi néhány hiányosságától.

A Subversion-t még mindig használják néhány nyílt forráskódú közösség (beleértve azokat is, amelyek korábban a CVS -t használták ), de szinte minden nagyobb projekt átkerült a DVCS -re . A Subversion utolsó felhasználói között a nyílt projektek között továbbra is a FreeBSD , de bejelentették a Gitre [18] , és például a Free Pascalra való átállást is . A Subversion-t elég régóta használják olyan ismert projektek, mint az Apache , GCC , FFmpeg , LLVM . A Subversion-t magánprojektekben és a vállalati világban is használják, de nehéz felmérni, hogy milyen széles körben. A Subversion tárhelyszolgáltatását , beleértve a nyílt forráskódú projekteket is, a SourceForge.net , a Tigris.org , a Google Code és a BountySource népszerű hosting projektjei is biztosítják .

2007- ben a Forrester elemzőcég a Subversion-t "az önálló szoftverkonfiguráció-kezelés (SCM) kategória egyedüli vezetőjének, valamint a szoftverkonfiguráció és -változáskezelés (SCCM) kategóriában erős közreműködőnek" minősítette , amikor összehasonlítja a különféle szoftverek előnyeit és hátrányait. rendszerek . [19]

A Linux -csomagok – Debian [20] és Ubuntu [21] disztribúciók – használatára vonatkozó statisztikák szerint a Subversion aktív felhasználóinak száma 2010 körül érte el a csúcsot, és 2016 óta csökkenni kezdett. Azonban még mindig több projekt használja a Subversion-t, mint a CVS -t , a Mercurialt és a Bazaart ( 2019 augusztusában ).

A hivatalos dokumentációt [22] az O'Reilly Media által kiadott könyv helyezi el , amely szabadon hozzáférhető [23] és a szerzők az SVN új verzióinak megjelenésekor adják hozzá. Számos nyelvre, köztük oroszra is kiadja fordításait, de annak ellenére, hogy a könyv angol nyelvű változatai már az 1.8-as és az 1.7-es verziókat is leírják, csak orosz nyelvű könyvek vannak, amelyek az 1.4-ig terjedő verziókat írják le [24] .

Történelem

A Subversion fejlesztése 2000 -ben kezdődött a CollabNet kezdeményezésére és anyagi támogatásával. A projekt kezdeményezői egy ingyenes verziókezelő rendszert szerettek volna létrehozni, amely alapvetően hasonló a CVS-hez, de mentes a hibáktól és a kellemetlenségektől . Abban az időben ebben az osztályban nem léteztek legjobb ingyenes licenccel rendelkező programok, a CVS volt a de facto szabvány a szabad szoftverfejlesztők körében. A Subversion fejlesztői azzal a szándékkal, hogy a már bevált koncepciókat kihasználva leegyszerűsítsék a fejlesztést, ugyanakkor sok CVS-felhasználó számára megkönnyítik az új rendszerre való átállást. [25]

Főbb események a Subversion fejlődéstörténetében.

Általános információk

Jellemzők

Munkamodell

A Subversion egy központosított rendszer (ellentétben az olyan elosztott rendszerekkel, mint a Git vagy a Mercurial ), ami azt jelenti, hogy az adatokat egyetlen adattárban tárolják. A tárhely lehet helyi lemezen vagy hálózati szerveren .

A Subversionban végzett munka nem sokban különbözik a többi központosított verziókezelő rendszerben végzett munkától. Az ügyfelek átmásolják a fájlokat a tárolóból, hogy helyi munkapéldányokat hozzanak létre, majd módosítsák a munkapéldányokat, és végrehajtsák a változtatásokat a tárolóban. Egyszerre több ügyfél is hozzáférhet a tárhelyhez. A Subversion elsősorban a másolás-módosítás-egyesítés modellt használja a fájlokon való együttműködéshez . Ezenkívül a nem egyesíthető fájlok (különféle bináris fájlformátumok) esetén használhatja a zárolás-módosítás-feloldó modellt .

Az új verziók mentésekor delta tömörítést alkalmazunk : a rendszer különbségeket talál az új és az előző verzió között, és csak azokat írja ki, elkerülve az adatok megkettőzését.

WebDAV hozzáférés használatakor az átlátható verziókezelés is támogatott – ha bármelyik WebDAV kliens megnyílik írásra, majd elment egy hálózati megosztáson tárolt fájlt, akkor automatikusan új verzió jön létre.

Repository típusok

A Subversion két lehetőséget kínál a tárolók rendszerezésére [40] . Az első típusú adattárak a Berkeley DB alapú adatbázisok tárolására szolgálnak, a második típusú tárolók speciális formátumú közönséges fájlok (az adathozzáférés saját könyvtáraik segítségével szerveződik, harmadik féltől származó adatbázisok használata nélkül). A Subversion fejlesztői a tárolást gyakran "fájlrendszernek" nevezik, ezért a második típust FSFS-nek hívják, ami egy (verziós) fájlrendszert ( angol fájlrendszer ) jelent a (normál) fájlrendszer tetején.  

Mindkét típusú adattár megfelelő rendszerezés esetén kellő megbízhatóságot biztosít [41] (a Berkeley DB fájlzárakat használ, így egyes hálózati fájlrendszereken nem használható, amelyek nem támogatják a zárolást), mindegyiknek megvannak a maga előnyei és hátrányai. Úgy gondolják, hogy az FSFS-t könnyebb megfelelően konfigurálni, kevesebb figyelmet igényel a rendszergazdától. Ezenkívül az 1.4-es kiadás előtt a Berkeley DB-t használó adattárak bizonyos feltételek mellett  úgynevezett ékelt állapotba kerülhetnek ; a működőképesség helyreállításához rendszergazdai beavatkozásra volt szükség.

Az 1.2-es kiadástól kezdve alapértelmezés szerint az FSFS-t használják az új tárolókhoz. Az 1.8-as kiadással a Berkeley DB használata elavulttá vált [37] . Előfordulhat, hogy a jövőbeli kiadásokban hozzáadott új szolgáltatások nem működnek a Berkeley DB-t használó kiszolgálókon. A Berkeley DB támogatása a jövőben megszűnhet.

Adattár hozzáférés

A Subversion a következő módokat kínálja a tároló eléréséhez:

Mindezek a módszerek mindkét típusú adattárral (FSFS és Berkeley DB) használhatók. Egyszerre különböző módszerek használhatók ugyanahhoz a tárolóhoz.

Alapfogalmak

Fájlrendszer

A felhasználó szemszögéből a Subversion adattár egy "kétdimenziós" fájlrendszer . A lerakatban lévő objektumokat ( fájlok és könyvtárak ) két " koordináta " azonosítja: egy név és egy változatszám . Más szavakkal, a tárház pillanatképek (revíziók) tömbje fájlok és könyvtárak fájáról, a verziószámmal indexelve. Minden ilyen pillanatkép egy normál (egydimenziós) fájlrendszer.

Ha egy objektum konkrét revízióját kell jelezni, akkor a következő alakú bejegyzést használjuk: имя@ревизия, például /main.c@29 a /main.c fájl a 29-es revízióban. A revíziónak a név tisztázására használt ilyen jelzését peg - nek nevezzük. revízió . 

ábrán. Az 1. ábra a fájlrendszer grafikus ábrázolását mutatja: a függőleges tengely a névkészletnek, a vízszintes tengely a revíziók halmazának felel meg.

Fájlnevek

Egy fájlrendszer objektum neve a Subversionban ugyanazok a szabályok szerint alakul, mint a UNIX-szerű operációs rendszerekben: csak egy gyökérkönyvtár van, az elérési út elemeket perjel („/”) választja el egymástól. A fájlrendszer-objektumok fájlok és könyvtárak (valamint szimbolikus hivatkozások , amelyeket a rendszer normál fájlokból emulál az attribútum beállításával svn:special).

Verziószámok

A Subversion verziószáma egy természetes szám (vagy 0 a legelső revízió esetén), amely a lerakat állapotszámára vonatkozik, amint az abban lévő adatok változnak. Minden sikeres véglegesítés pontosan egy új revíziót hoz létre a lerakatban, így az N. revízió a lerakat állapota az N. véglegesítés után.

A Subversionban a revízió nem egy fájl, hanem a teljes tár egészének állapotát jellemzi. Például a 32-es változat (az ábrán pontozva) négy fájl és két könyvtár állapota, amelyek akkoriban léteztek a lerakatban.

A revíziószám analóg az idővel abban az értelemben, hogy az alacsonyabb revíziószámok a repository korábbi állapotainak, a magasabb verziószámok pedig a későbbieknek felelnek meg.

  • A minimális revíziószám 0 (nulla) a repository kezdeti állapotának felel meg, amikor még nem történt változtatás. A nulladik változatban a lerakat csak egy üres gyökérkönyvtárat tartalmaz.
  • A maximális revíziószám a lerakat legutóbbi állapotának felel meg, vagyis az utolsó szerkesztés véglegesítése utáni állapotnak. A legfrissebb verziószám megadása helyett használhatja a kulcsszót HEAD(fejrevízió); ez azért hasznos, mert a fej revíziószáma minden véglegesítéssel növekszik.

A revíziószám egyfajta időbélyegnek tekinthető az adattár történetében. Ezenkívül minden revíziószámnak van egy abszolút értéke, amely a revízió végrehajtásának idejéhez van társítva ( tulajdonság svn:date ). A revíziószám megadása azonban kényelmesebb, mint az idő megadása, mivel az időzónákkal nem lehet összetéveszteni, a számbevitel rövidebb, a revíziószám pedig nem módosítható.

Működési és alapvető átdolgozások

A változatszámot két különböző kontextusban használják :

  • operatív revízió ( angolul  operative revision );
  • core revision ( eng.  peg revision ).

Egy revíziót operatívnak nevezünk, ha megadja azt a revíziót vagy a revíziók tartományát, amelyre a műveletet alkalmazni kell , például:

svn log -r 199:230 http://some.path

Ebben a példában a parancs svn loga revíziók tartományára kerül végrehajtásra 199:230, amely az online változatok tartománya.

Azonban csak a fájlnév és az online változat megadása néha félreérthetően a lerakatobjektumokra mutathat. ábrán látható helyzetben például. 2, kétértelműség adódik a következő parancs futtatásakor:

svn log -r 29:33 http://some.path/bar.txt

A parancs megadja az online revíziók tartományát ( 29:33), de az ábrán kékkel és zölddel kiemelt területek ugyanúgy tekinthetők a /bar.txtrevíziós tartományban lévő fájl előzményeinek 29:33. Ilyen esetekben meg kell adni a pivot revíziót is a kétértelműség feloldása érdekében. Az alapváltozat a fájlrendszer-objektum URL -címe mellett megadott változatszám (a " URL@ревизия" jelöléssel). A név az angol peg szóból származik , amelyet "rúdnak" vagy "pegnek" lehet fordítani. A pivot revízió megjelöli az állapotok láncát, amelyhez a megadott pár tartozik URL@ревизия, és így egyedileg azonosítja azt a tárolóobjektumot, amelyre a parancsot alkalmazni kell. Az alábbi példában az első parancs az ábrán kékkel kiemelt történetet, a második parancs pedig a zölddel kiemelt történetet nyomtatja ki:

svn log -r 29:33 http://some.path/file.txt@32 svn log -r 29:33 http://some.path/bar.txt@34

Az érdekelt tárgy legfrissebb állapotát kell megadni alaprevízióként. Ennek az az oka, hogy az állapotláncot egyedileg „vissza”, de nem „előre” követik. Például a http://some.path/foo.txt@31 pivot változatú URL két állapotlánchoz tartozik (zölddel és szürkével kiemelve). E két lánc közül a megadott URL a szürke láncot címezi meg, vagyis amikor az alapváltozattól "előre" lép, a másolási műveletek figyelmen kívül maradnak.

Műveletek a fájlrendszeren

A Subversion lerakatában [42] található fájlrendszer-objektumokon a következő műveletek hajthatók végre (lásd 1. ábra). A zárójelek a művelet rövid elnevezését jelzik a parancs jelölésében svn status.

  • (A) függelék . Objektum hozzáadása a fájlrendszerhez. A hozzáadott objektumnak nincs felülvizsgálati előzménye. Példa a képen:
  • A fájl a 27-es verzióban /main.clett hozzáadva .
  • Módosítás (M). Objektum módosítása, például egy fájl tartalmának módosítása vagy egy fájl vagy könyvtár tulajdonságainak módosítása. Példa a képen:
  • A fájl /main.ca 28-as verzióban módosult .
  • Eltávolítás (D). Fájl eltávolítása a fejből és az azt követő revíziók. Ebben az esetben a fájl a korábbi verziókban marad. Példa a képen:
  • A fájlt /main.celtávolították a 30-as verzióban .
  • Kiegészítés előzményekkel (A+). Egy objektum másolását jelöli a tárolófájlrendszeren belül, vagyis az objektumot a következő имя_источника@ревизия_источникаhelyre másolja имя_копии@HEAD. A másolt objektum a revíziók történetét a forrástól a másolás pillanatáig örökli (az előzmények öröklődését az ábrán pontozott hivatkozások mutatják). Példák az ábrán:
  • a 29-es változatban a címtárat a könyvtárból /tags/R1másolták ki /trunk@27;
  • a 31-es revízióban a fájl /main.cmásolása a -ból /main.c@29, azaz önmagának egy korábbi revíziójából történt, így a korábban törölt (a 30-as verzióban) fájl visszaállításra került a revíziók előzményeinek megőrzése mellett.
  • Csere (R+). Abban az esetben fordul elő, ha egy revízióban egy objektum eltávolítása (D) és egy azonos nevű objektum előzményekkel való kiegészítése (A+) is megtörtént. Bár a név változatlan marad a csere művelet során, a Subversion a csere előtti és utáni objektumot két különböző objektumként kezeli, eltérő revíziós előzményekkel (a régiek története a csere pontján ér véget, az új története a másolja a forrást, és folytatódik). Példa a képen:
  • a 30-as verzióban a fájl /file.txthelyére a következő került : a régi fájlt /file.txttörölték, és egy új, azonos nevű fájlt másoltak a /bar.txt@29.

Módosítások végrehajtása

Munkapéldány

A munkapéldány a Subversion kliensprogram által létrehozott adattárból származó adatrész helyi másolata, amely magán az adatokon kívül néhány szolgáltatási információt is tartalmaz (rejtett könyvtárak néven .svn). A szervizinformációk a munkapéldány megfelelő működéséhez szükségesek; a szerviz adatokon nem lehet változtatni. Az adattárból munkapéldányként lehívható legkisebb adategység egy könyvtár. Előfordulhat, hogy egy könyvtár tartalma nem bontható ki teljesen: például az egyes fájlok vagy alkönyvtárak kizárhatók. Nem lehetséges azonban egyetlen fájlt sem kivenni a tárolóból munkapéldányként.

A Subversion 1.6 és korábbi munkapéldányok bármely alkönyvtára egyben teljes munkapéldány is, mert minden könyvtár tartalmazza a háztartási adatait (könyvtárak .svn). Az 1.7-es verzió óta minden munkapéldánynak csak egy könyvtára .svnvan a könyvtárának gyökerében.

A munkapéldány önálló abban az értelemben, hogy a Subversion nem tárol a munkapéldányhoz kapcsolódó adatokat azon kívül. Ezért egy munkapéldány birtokában több másolatot is készíthet egyszerű másolással, hálózati forgalom ráfordítása nélkül.

A munkapéldány szolgáltatási könyvtáraiban többek között az úgynevezett tiszta másolat ( eng.  pristine copy ) tárolódik - a munkapéldány fájljai változatlan formában, ahogyan azokat a repository-ból kivonták (svn esetében ez egy BASE nevű változat). A tiszta másolat lehetővé teszi a helyi módosítások gyors megtekintését és visszaállítását anélkül, hogy hozzáférne a tárhoz. A lemezen lévő munkapéldány mérete azonban körülbelül kétszer akkora (adat + adatok tiszta másolata), mint magának az adatnak a mérete. Ez a megközelítés annak a ténynek köszönhető, hogy a lemez erőforrások olcsóbbak és könnyebben hozzáférhetők, mint az adathálózati erőforrások .

Általában a munkapéldány létrehozása az első és szükséges lépés a helyi változtatások végrehajtásához, mert csak a munkapéldányon végrehajtott módosítások véglegesíthetők a lerakatban. Ez alól kivételt képeznek azok a műveletek, amelyek munkapéldány létrehozása nélkül közvetlenül végrehajthatók a tárolón.

Tranzakciók

A Subversionban a tárolás az ACID tulajdonságkészletből származó atomitási és izolációs tulajdonságokkal rendelkező tranzakciók formájában szerveződik . Így a verziókezelő rendszer garantálja a repository integritását, konzisztenciáját és bármikor elérhetőségét.

  • A commitok atomossága ( eng.  atomic commits ) - a több fájlban vagy könyvtárban bekövetkezett változások egyetlen tranzakcióban rögzítésre kerülnek, miközben egy revíziót generálnak. Sikertelen véglegesítés esetén, bármilyen meghibásodás vagy hiba esetén a rendszer garantálja, hogy a repository nem kerül részben módosított állapotba - vagy minden változás bekerül a repository-ba, vagy (hiba esetén) - egyik sem.
  • Az elkülönítés biztosítja, hogy a tranzakción belüli közbenső tárolási állapotok ne legyenek láthatók más tranzakciók és felhasználók számára. Például, ha egy felhasználó egy tranzakció során több fájl változását javítja, akkor a többi felhasználó nem láthat olyan tárolási állapotot, amelyben a fájlok egy része már megváltozott, mások pedig nem.

Ezek a tulajdonságok nem garantáltak a Subversion munkapéldányainál – a tárolókkal ellentétben lehet köztes vagy zárolt állapotban, ha összeomlik vagy megszakad (vagyis egy paranccsal vissza kell állítani, svn cleanupvagy újra létre kell hozni a folytatás előtt).

Helyi és távoli parancsűrlapok

Az összes Subversion kliens parancs a következő csoportokba osztható:

  • a munkapéldány módosítása;
  • tárolás módosítása;
  • a munkapéldány és az adattár módosítása;
  • nem módosít semmit.

Társzerkezet

Projektstruktúra a repositoryban

Formálisan a Subversion nem ír elő semmilyen korlátozást a projekt fájlszerkezetére vonatkozóan – ez bármi lehet a fájlrendszerben lévő objektumok elnevezésére vonatkozó szabályok keretein belül. Vannak azonban irányelvek, amelyek megkönnyítik az ágakkal és címkékkel való munkát. A legegyszerűbb esetben ajánlatos legalább három alkönyvtárat létrehozni a tároló gyökérkönyvtárában:

/. trunk branches tags

A projekt teljes fájlstruktúráját (a fő fejlesztési sort) az alkönyvtárnak kell tartalmaznia trunk, az alkönyvtárnak tartalmaznia kell a projekt ágait és  a címkéket . Például a következő lerakatkönyvtár-struktúra: branchestags

/. trunk branches branch_1 tags tag_1 tag_2

feltételezi, hogy a projektnek ( trunk) egy „ ” ága és két „ ” és „ ” branch_1címkéje van . Ezen könyvtárak mindegyike ( , , és ) tartalmazza a projekt megfelelő verziójának másolatát. tag_1tag_2trunkbranch_1tag_1tag_2

Ha több (al)projekt van a repositoryban, akkor minden (al)projekthez a következő alkönyvtár-struktúra jön létre:

/. project1 trunk branches tags project2 trunk branches tags

Vagyis a gyökérkönyvtár projektkönyvtárakat tartalmaz, és mindegyiknek megvan a saját trunk, branches, tags, amely csak ehhez a projekthez kapcsolódik. A leírt tárolási címtár-struktúrák csak példák, a gyakorlatban a tárolást az adott esetnek leginkább megfelelő módon lehet megszervezni. [43] [44]

Több projekt tárolásának másik módja több adattár létrehozása. Az egymással semmilyen kapcsolatban nem álló projekteket különböző tárhelyekben kell elhelyezni, mivel a másolási, áthelyezési és összevonási műveletek nem hajthatók végre a tárolók között. Szükség esetén több lerakat összevonható egybe a revíziók előzményeinek megőrzésével ( svnadmin loadparaméteres paranccsal történő importálással --parent-dir).

Ágak

A Subversion egy "fájl" modellt használ (ugyanaz, mint a Perforce [45] ) az elágazások és címkék megvalósításához, azaz az ág csak egy könyvtár (könyvtár helyett egyetlen fájlból is készíthet elágazást). A parancs új ágat hoz létre svn copy. Elágazás bármely lerakatkönyvtárban létrehozható, de célszerű követni a fent leírt konvenciókat az új ágak létrehozására vonatkozóan. Az ágakkal kapcsolatos további információkért lásd: Elágazás és összevonás .

Címkék

A címke létrehozása szintén a paranccsal történik svn copy, azaz technikailag ugyanaz, mint egy elágazás. Az egyetlen különbség a felhasználás módjában van: feltételezzük, hogy senki nem fogja megváltoztatni a címkén szereplő adatokat (módosításokat végrehajtani rajta). Például a 2. ábrán. 1 címke a 29-es változatban készült: a 27-es változat könyvtára /trunka név alatt másolva /tags/R1. Ha most nem változtatja meg a könyvtár adatait /tags/R1, akkor az örökre a címtár pontos másolata marad /trunk@27, vagyis egy címke lesz .

A Subversionban használt címkék fogalma eltér a többi verzióvezérlő rendszerben használt címkék koncepciójától. A címke általában egy szimbolikus név, amely egy fájlkészletet és azok állapotát szólítja meg. A Subversionban egy címke fájlkészletet és azok állapotát másolja . A Subversion címkéinek másolása megvannak a maga előnyei és hátrányai.

Előnyök:

  • a címke látható a címtárstruktúrában, kényelmesen, faszerűen rendezheti a címkéket.

Hibák:

  • nehéz kideríteni, hogy a fájl mely címkéket adta meg (ugyanez a könyvtár esetében is);
  • ha a hozzáférési jogok egyedileg vannak beállítva [46] a könyvtárakhoz, akkor a címke nem örökli ezeket a jogokat;
  • a címke tartalma módosítható;
  • Ha munkapéldányt hoz létre egy címkéből, és bármilyen változtatást végrehajt ezen a munkapéldányon, akkor ez magát a címkét módosítja, nem pedig a megjelölt adatokat. A "címkéből" való munka helyes módja az, ha nem a címkéből készítünk munkamásolatot, hanem abból, hogy mi a címke forrása .

Tulajdonságok

A Subversion egyik fontos tulajdonsága a tulajdonságok, azaz a név = érték szövegpárok támogatása , amelyek az áruházban lévő objektumokon állíthatók be. A tulajdonságok két különböző környezetben használatosak: fájlrendszer-objektumokhoz és változatokhoz.

A fájlrendszer-objektumok tulajdonságai

A tárolóban lévő minden fájlhoz vagy könyvtárhoz hozzá lehet rendelni egy tulajdonságkészletet. A tulajdonságváltozások ugyanúgy tárolódnak az előzményekben, mint a fájlrendszer módosításai. A felhasználók bármilyen néven beállíthatnak tulajdonságokat; van egy előre meghatározott segédprogram-tulajdonságkészlet is, amelyeket a Subversion ügyfélprogram használ (a segédprogram-tulajdonságok neve előtt az "svn:" szerepel).

Fájl tulajdonságai svn:executable Futtathatóvá teszi a fájlt (munkamásolatokhoz a UNIX család operációs rendszerei alatt ). svn:mime-type Tárolja a fájl MIME típusát. Befolyásolja a fájlkülönbségeket mutató parancsok működését és az egyesítési módosításokat (egyesítést). svn:keywords Kulcsszavak listája ( eng.  kulcsszavak ), amelyeket a fájlban a megfelelő értékekkel helyettesítünk. Ahhoz, hogy a helyettesítés megtörténjen, a kulcsszónak jelen kell lennie a fájlban $keyword$. A fájl értékeinek automatikus frissítésére szolgál, amelyek verzióról verzióra változnak (például a verziószám). svn:eol-style Megadja a szövegfájlban lévő sorvégi ( EOL ) karakterek konvertálására vonatkozó szabályt .  Olyan esetekben használatos, amikor a fájlnak meghatározott EOL karaktertípussal kell rendelkeznie. Általában "natív" használatos – ebben az esetben a sorvégi karakterek típusa megegyezik az operációs rendszerben elfogadott típussal, amelyben a munkapéldányt létrehozzák. svn:needs-lock Azt jelzi, hogy a fájl csak olvasható lesz, amikor lekéri a tárhelyről. Ezt a tulajdonságot a blokkoló mechanizmussal együtt kell használni . A fájl írásának megtagadása emlékeztet arra, hogy a fájl zárolását a szerkesztés előtt szerezze be: a zárolás megszerzésekor a Subversion kliensprogram automatikusan írhatóvá teszi a fájlt (a zárolás újbóli feloldásával a fájl nem módosítható). A zárak a tulajdonság beállítása nélkül is használhatók. Ez azonban nem ajánlott, mert fennáll annak a veszélye, hogy egy másik felhasználó elkezdheti szerkeszteni a zárolt fájlt, és ez csak a változtatások végrehajtása után derül ki. svn:special A tulajdonságot nem a felhasználók állíthatják be vagy módosíthatják. Jelenleg szimbolikus hivatkozások tárolására szolgál a tárolóban. Amikor egy szimbolikus hivatkozást adunk egy tárhoz, egy fájl jön létre a tárolóban a svn:special. Amikor ezt a fájlt kiveszi egy UNIX - szerű rendszeren, a Subversion kliensprogram visszaalakítja hivatkozássá. svn:mergeinfo Információkat tárol arról, hogy mely útvonalak egyesültek ebbe a fájlba. A tulajdonságot az 1.5-ös verzióban vezették be, az egyesítés nyomon követésére szolgál .  Ez egy fájlnév: revision_range formátumú karakterláncok halmaza . Itt a fájlnév  annak a fájlnak vagy könyvtárnak a teljes neve (a lerakat fájlrendszerének gyökérkönyvtárának elérési útjával), amelyből a revíziók meghatározott tartománya egyesült. A sorok automatikusan frissülnek az egyesítési műveletek során; A későbbi egyesítéseknél a Subversion figyelembe veszi a korábban hozzáadott sorokat, elkerülve ezzel ugyanazon változtatások ismételt összevonását. Nem ajánlott manuálisan módosítani a tulajdonságot – ez megszakíthatja az egyesítés nyomon követési mechanizmusát.svn:mergeinfo Könyvtár tulajdonságai svn:ignore Azon fájl- és könyvtárnévminták listája, amelyeket a Subversion ügyfélprogram figyelmen kívül hagy ebben a könyvtárban. Ez a tulajdonság hasonló a .cvsignoreCVS-ben lévő fájlhoz . Általános szabály, hogy a tulajdonság úgy van beállítva, hogy az ügyfélprogram „nem látja” a különböző programok által automatikusan létrehozott fájlokat és könyvtárakat, amelyeket nem szabad verziózni (például objektumfájlok , ideiglenes fájlok stb.). Ez a tulajdonság nem vonatkozik az alkönyvtárakra. svn:externals Lehetővé teszi egy könyvtárkészlet automatikus kibontását egy munkapéldányba az URL -címük megadásával (akár egy másik tárolóból is). svn:mergeinfo Ugyanaz, mint a fájloknál . Revízió tulajdonságai

A második típusú objektum, amelyhez tulajdonságok léteznek, maguk a revíziók. Ebben az esetben a tulajdonságnevek is bármiek lehetnek; néhány "svn:" előtaggal ellátott tulajdonság különleges jelentéssel bír. A revíziók és a fájlrendszer-objektumok tulajdonságai között az a különbség, hogy az előbbire a verzióelőzmény fogalma nem alkalmazható (mivel egy változathoz egy adott tulajdonságérték van hozzárendelve). Más szavakkal, a revízió tulajdonságai módosíthatók, de a régi érték elveszik. Alapértelmezés szerint a változat tulajdonságainak módosítása le van tiltva; hogy az adminisztrátor létrehozzon egy szkriptet ( eng.  hook ) az esemény kezelésére pre-revprop-change.

svn:date A revízió létrehozásának dátuma és időpontja. svn:author Annak a felhasználónak a neve, aki végrehajtotta az ebben a változatban szereplő változtatásokat. svn:log Az ebben a revízióban végrehajtott változtatások leírása (a felhasználó által a változtatások végrehajtásakor megadott szöveg).

A revízió tulajdonságait általában csak az adattár adminisztrátora módosítja a hibás adatok kijavítása érdekében. Például, ha a felhasználó elfelejtett szöveges leírást megadni a változtatások végrehajtása során, akkor a rendszergazda létrehozhatja ezt a leírást a szerkesztésével svn:log.

A Subversion használata

Munkaciklus

Egy tipikus munkafolyamat-iteráció Subversionnal a következő lépéseket tartalmazza.

  • Munkapéldány frissítése a lerakatból ( svn update) vagy létrehozása ( svn checkout).
  • A munkapéldány megváltoztatása. A könyvtárak és a fájlokkal kapcsolatos információk módosítása Subversion eszközökkel történik, de a Subversion semmilyen módon nem vesz részt a fájlok (tartalmának) megváltoztatásában - a változtatásokat az erre a célra kialakított programok ( szövegszerkesztők , fejlesztőeszközök stb.) hajtják végre:
    • új (még nem véglegesített a repository) fájlokat és könyvtárakat kell hozzáadni (parancs svn add), azaz át kell vinni a verziókezelés alá;
    • ha a munkapéldányában lévő fájlt vagy könyvtárat törölni , átnevezni , áthelyezni vagy másolni kell, akkor a Subversion szolgáltatásait kell használnia ( svn mkdir, svn delete, svn move, svn copy);
    • megtekintheti a munkapéldány állapotát és a helyi (még nem véglegesített) változtatásokat ( svn info, svn status, svn diff);
    • minden sikertelen helyi módosítás visszaállítható ( svn revert).
  • Ha szükséges, egy további frissítés, hogy megkapja a többi felhasználó által a lerakatra vonatkozó változtatásokat, és egyesítse ezeket a módosításokat a sajátjával ( svn update).
  • A változtatások (és/vagy az eredmények egyesítése) véglegesítése a lerakatban ( svn commit).

Elágazás

Az elágazás fontos szempont a verziókezelő rendszerek működésében, mivel a tipikus verziókezelési technikák [47] (legalábbis a szoftverfejlesztésben ) elágazások használatát foglalják magukban. A Subversion meglehetősen fejlett elágazási és egyesítési képességekkel rendelkezik (azonban nem támogatja az átnevezett fájlok és könyvtárak egyesítését).

ábrán. A 3. ábra hagyományosan egy példát mutat be az ágak fejlődésére az adattárban. A zöld szín a projektfejlesztés fő vonalát mutatja ( eng.  mainline, trunk ), sárga - ágak, kék - címkék, bíbor - egy olyan ág, amelynek fejlesztése megszakadt. A piros nyilak az összevonási változásokat mutatják.

Elágazások létrehozása

A parancs egy új ágat (valamint egy címkétsvn copy ) hoz létre, amely másolatot hoz létre a tárolóban a forrás revíziós előzményeinek öröklésével ( A+ művelet ). Mindig a parancs "távoli" formáját kell használnia ágak létrehozásához svn copy, például:

svn másolat http://.../trunk/dir http://.../branches/branch_name -m "A könyvtár ágának létrehozása"

Az eredményül kapott másolat egy ág (vagy egy címke, attól függően, hogy hogyan dolgozik vele) lesz. A jövőben az ágon végrehajtott módosítások végrehajthatók azon a forráson, amelyből az ágat létrehozták, a változtatások ilyen terjesztését összevonásnak nevezzük . 

A Subversion másolási műveletei olcsók ( eng.  cheap copy ), azaz kis fix idő- és lemezterületet igényelnek. A tároló úgy van kialakítva [48] , hogy a másolás során ne az adatok duplikálódnak, hanem a forrásra mutató hivatkozás jöjjön létre (hasonlóan a hard linkhez ), azonban ez a mechanizmus tisztán belső – a felhasználó oldaláról nézve. nézetben egy másolat létrehozása történik. Az elágazás nagy hatékonyságának köszönhetően az elágazások tetszőleges gyakorisággal hozhatók létre (azonban az összevonás  - az elágazás szükséges kiegészítése - lassabb a Subversionban, mint más modern verzióvezérlő rendszerekben).

Munka ágakkal

Általánosságban elmondható, hogy az ágon végzett munka nem különbözik a fő fejlesztési vonalon ( törzs ) végzett munkától. Konkrét parancsok csak az egynél több ágat érintő tevékenységekhez szükségesek. Ezek a parancsok a következőket tartalmazzák (az ág létrehozása parancson kívül svn copy):

  • svn switch - meglévő munkapéldány átváltása másik ágra. Az átállás úgy változtatja meg a munkapéldány rezsijét, mintha a munkapéldányt svn checkoutabból a fiókból szerezték volna be, amelyre átkapcsolták. Ebben az esetben a hálózati forgalom mennyisége kisebb, mint a -val svn checkout, mivel csak a munkapéldány és a cél ág adatai közötti különbség kerül átvitelre;
  • svn merge - változáskészlet másolása az ágak között - összevonáshoz használható.

Az ágakkal való munkavégzés teljes ciklusa általában a következő lépéseket tartalmazza:

  • ág létrehozása ( svn copy);
  • meglévő munkapéldány átváltása ágra ( svn switch) vagy új munkapéldány létrehozása feltöltéssel ( svn checkout);
  • fájlok és könyvtárak megváltoztatása a munkapéldányban, ezen változtatások végrehajtása ( svn commit);
  • svn mergeaz elágazás ( , ) utáni szülő ág friss módosításainak másolása az ágba svn commit;
  • ágról szülőágra másolja a változásokat ( svn merge, svn commit);
  • egy ág ( svn delete) törlése, ha az életciklusa véget ért.

Egyesülés

Változások másolása ágak között

Az összevonás a Subversionban egy másik (vagy ugyanazon) ágon végrehajtott változtatások halmazának egy ágára történő alkalmazása. Az egyesítés végrehajtásához egy parancsot kell használnia svn merge - ez egy változáskészletet alkalmaz egy munkapéldányra; akkor végre kell hajtania a változtatásokat ( svn commit).

A terminológia összevonása kissé zavaró. Az összevonás kifejezés nem teljesen pontos, mivel az ágak összevonásáról nincs szó . Ezenkívül nem szabad egyenlőségjelet tenni az egyesítés és a parancs között: egyrészt az összevonáshoz (a mellett ) konfliktusfeloldást és véglegesítést kell végrehajtania, másrészt az alkalmazás nem korlátozódik az összevonásra.  svn mergesvn mergesvn merge

Az svn merge parancs egyéb felhasználási módjai

A parancs svn mergenem csak egyesítésre használható. Valójában a parancs megváltoztatja a munkapéldányt a tárolóban lévő két könyvtár vagy fájl különbségével , ezért ez svn mergeegy univerzális eszköz a változtatások átvitelére. Íme néhány példa a parancs használatára svn merge:

  • a már végrehajtott változtatások visszaállítása, beleértve a felülvizsgálatok egész sorát;
  • kényelmes nézet (a munkapéldány változásainak formájában) az adattár két állapota közötti különbségről.

Tár létrehozása

A parancs egy tároló létrehozására szolgál svnadmin create. Ez a művelet egy üres tárolót hoz létre a megadott könyvtárban.

Subversion és CVS

Összehasonlítás

Az alábbiakban a Subversion és a CVS rendszerek paramétereinek összehasonlítása látható, mivel a Subversion pontosan a CVS továbbfejlesztéseként van pozicionálva. Az összehasonlítás csak azokra a paraméterekre vonatkozik, amelyekben ezek a rendszerek különböznek egymástól. Összességében a Subversion minden tekintetben felülmúlja a CVS-t, kivéve a hagyományos értelemben vett címkéket (vagyis a fájlrendszer-objektumokat megszólító címkéket).

Paraméter felforgatás CVS
Képességek
Katalógusok Nem csak a fájlok, hanem a könyvtárak verzióit is követi. A címtárverziókat nem követi nyomon a rendszer, vagyis a címtárszerkezet ugyanaz (az, ami jelenleg a tárolóban létezik) minden revíziónál és minden ágnál. Ha megváltoztatjuk a könyvtárszerkezetet, akkor a régi állapotok kibontásakor a fájlok helyes (régi) revízióit kapjuk, de rossz (a kibontáskor meglévő) könyvtárstruktúrában.
Tranzakciók A többfájlos véglegesítések atomitása. Az atomitás csak az egyfájlos véglegesítés szintjén van. Valójában a több fájl módosításának végrehajtása az egyes fájlokra vonatkozó véglegesítések sorozatára bontható. Ha egy ilyen véglegesítési sorozat megszakad, akkor a fájlok egy része véglegesen marad, míg mások nem véglegesítve maradnak.
Változáskészletek Változáskészletek támogatottak .  _ A módosításkészletek nem támogatottak.
Fájlnév módosítások Támogatja a fájlok és könyvtárak másolását, áthelyezését és átnevezését a változástörténet elvesztése nélkül. Fájlok másolása, áthelyezése, átnevezése során az új nevű fájlnak nincs előzménye, vagyis teljesen megszakad a kapcsolat a régi névvel és annak verzióelőzményeivel. Ugyanez vonatkozik a könyvtárban lévő fájlokra, amikor módosítja a nevét [49] .
tulajdonságait Minden fájlhoz és könyvtárhoz tetszőleges tulajdonságkészlet tartozhat, amely egy névből és egy értékből áll. A tulajdonságok szintén verziókezelés alatt állnak. A tulajdonságok nem támogatottak.
Zárak Az opcionális fájlzárolás támogatott (az 1.2-es verzió óta). A zárolások nem támogatottak, de létezik egy hasonló mechanizmus, az úgynevezett nyomkövetés .
ágak Az ágak ( elágazás , lásd Szójegyzék ) az elérési út térben vannak megvalósítva. Ez azt jelenti, hogy egy elágazás létrehozásához a könyvtár átmásolódik (a másolat lesz az ág). Az ilyen másolatok készítése gyors és nem erőforrásigényes művelet, mivel az adatok nem duplikálódnak , helyette egy új verzió kerül rögzítésre, amely csak a fájlok helyében tér el az előzőtől. Az ágak a "harmadik dimenzióban" valósulnak meg. Ez azt jelenti, hogy egy ágon lévő fájl három paraméterrel van megcímezve: elérési út a fájlrendszerben, revízió (vagy a revízió jelzésének más módja, például idő), ág neve .
Címkék Nincsenek címkék ( tag , lásd szótár ) mint olyanok. Ehelyett egy könyvtárhierarchiát használnak – külön könyvtár jön létre a címkéhez (valamint az ághoz). A címke egy olyan ág, amelyen a megállapodás szerint nem történik további módosítás. A címke a fájlok és könyvtárak címkézett állapotának másolata . A címkék támogatottak. A címke a fájlok címkézett állapotára vonatkozik.
Hatékonyság
Kliens-szerver csere A kliens és a szerver közötti verziófrissítések csak a fájlkülönbségeket továbbítják, ami jelentősen csökkentheti a hálózati forgalmat. A különbségek átkerülnek a szerverről a kliensre, és a teljes objektum átkerül a kliensről a szerverre.
Binárisok Egyformán hatékonyan működik szöveges és bináris fájlokkal is . A bináris fájlokkal való munka kevésbé hatékony: minden új verzió teljes egészében a lerakatban tárolódik.
Elágazások és címkék létrehozása Kis fix időt és lemezterületet igényel. Az időköltségek magasak (az érintett fájlok számától függően). Az ágak és címkenevek redundánsan tárolódnak (minden érintett fájlban).
Rezsi munkapéldányban A munkapéldány szolgáltatási könyvtárai tiszta másolatot tárolnak. Ezért a helyi változtatások böngészése és visszagörgetése gyors (anélkül, hogy a tárhelyre kerülne), de a lemezen lévő munkapéldány mérete körülbelül kétszer akkora, mint magának az adatnak a mérete. A tiszta másolat nem kerül tárolásra, a munkapéldány mérete megközelítőleg megegyezik az adatok méretével. Ennek eredményeként a helyi módosítások megtekintési és visszaállítási műveletei hozzáférést igényelnek a lerakathoz, és lassúak.
Memóriafogyasztás a szerveren Kevesebb [50] . Több.

Migráció CVS-ről Subversionra

Repository Conversion

Létezik egy cvs2svn program, amely egy CVS-tárat kész Subversion-tárrá (vagy git -tárolóvá ) vagy szövegkiírattá konvertál, amelyet azután a tárolóba importálhatunk a svnadmin. Ezzel egyidejűleg a cvs2svn elmenti a CVS repository-ban található összes információt: elágazásokat, címkéket, változásleírásokat, szerzők neveit, véglegesítési dátumokat. Ezen túlmenően, a különböző fájlokban végrehajtott változtatások egy változatba konvertálódnak.

Használati különbségek Fájlkezelési különbségek

A CVS-ben a fájlok és könyvtárak áthelyezése (átnevezése) és másolása egy objektum új névvel való újbóli hozzáadásával és (áthelyezéskor és átnevezéskor) a régi objektum törlésével történik. Ezzel a munkával a lerakatban lévő fájlok és könyvtárak újból jönnek létre, és elvesztik változástörténetüket. A Subversionnak a move ( movevagy mv) és a copy ( copy) parancsokat kell használnia ezeknek a műveleteknek a végrehajtásához. Használatuk megőrzi a változtatások előzményeit, és lehetővé teszi a szükségtelen műveletek elkerülését (főleg, ha könyvtárakkal vagy akár fájlrendszer-ágakkal foglalkozunk).

A CVS-től eltérően néhány működő másolási műveletet (például egy fájl törlését és áthelyezését) maga a Subversion kezeli. A munkamásolat-fájlokkal való munkavégzés során leírt és egyéb különbségeket a következő táblázat foglalja össze (a műveletet commit, ahol mindkét esetben szükséges, kihagyjuk):

Művelet CVS felforgatás Megjegyzések
Fájl törlése rm fájl
cvs rm fájl
svn rm file a fájlt nem kell először manuálisan törölni
Fájlok törlése maszkkal rm *
cvs rm fájl1 fájl2 ...
svn rm * a fájlokat nem kell előzetesen kézzel törölni,
nem kell minden fájlt felsorolni
Átnevezés/Áthelyezés mv fájl1 fájl2
cvs rm fájl1
cvs fájl hozzáadása2
svn mv file1 file2 a fájlt nem kell kézzel áthelyezni,
a fájlelőzmények megmaradnak
másolás cp file1 file2
cvs add file2
svn copy file1 file2 a fájlt nem kell manuálisan átmásolni,
a fájltörténet megmarad (elágazva)
Könyvtár hozzáadása (létrehozása). mkdir dir
cvs add dir
svn mkdir dir
svn commit
a könyvtárat nem lehet manuálisan létrehozni,
miután a könyvtár hozzáadása szükségescommit
Könyvtár hozzáadása fájlokkal cvs add dir
cd dir
cvs add file1 file2
svn add dir a könyvtár hozzáadódik a benne lévő fájlokkal
Könyvtár átnevezése fájlokkal
(nincs alkönyvtár)
mkdir dir2
cvs add dir2
mv dir1/* dir2
cvs rm dir1/file1 dir1/file2 ...
cvs add dir2/*
svn mv dir1 dir2 nincs szükség könyvtárak létrehozására és hozzáadására,
nem kell manuálisan áthelyezni a fájlokat
, nincs szükség az összes fájl listázására
. A fájltörténet mentésre kerül
A fájlrendszer egy ágának átnevezése
(könyvtárak fájlokkal és alkönyvtárak)
ismételje meg a fenti parancsokat
minden egyes beágyazási szinthez
vagy alkönyvtárhoz [51]
svn mv dir1 dir2 lásd fent
nem függ a szintek és könyvtárak számától
Tárolási állapot címzése

A Subversionban nem szükséges címkéket létrehozni vagy dátumot/időt használni az adattár állapotának kezelésére, egyszerű esetekben (például egy bizonyos véglegesítés utáni verzió beszerzéséhez) egyszerűbb lesz megadni a szükséges verziószámot .

Belső szerkezet

Szintek

A Subversion több szintre osztott könyvtárak halmazaként készült. Mindegyikük egy adott feladatot hajt végre, és lehetővé teszi a fejlesztők számára, hogy saját eszközöket hozzanak létre, a bonyolultságtól és a feladattól függően.

fs A legalacsonyabb szint; verziójú fájlrendszert valósít meg, amely adatokat tárol. Repos A fájlrendszerben megvalósított tárhely szintje. Ezen a szinten számos segédfunkciót implementálnak, és támogatja a kezelők ( angol  hooks ) elindítását is, vagyis olyan szkripteket, amelyek egy esemény bekövetkeztekor indulnak el. Az Fs és Repos szintek együttesen alkotják a fájlrendszer interfészt . mod_dav_svn WebDAV / Delta-V hozzáférést biztosít az Apache 2 - n keresztül. Ra Tárolási hozzáférést valósít meg (helyi és távoli is). Ettől a szinttől kezdve a tárhelyre URL-en keresztül lehet hivatkozni, pl.
  • file:///path/helyi hozzáféréshez,
  • http://host/path/ vagy https://host/path/ a WebDAV hozzáféréshez, vagy
  • svn://host/path/ vagy az SVN protokollon keresztüli eléréshez.svn+ssh://host/path/
Ügyfél, WC A legmagasabb szint. Elvonja a tárhoz való hozzáférést, és tipikus ügyfélfeladatokat hajt végre, például felhasználói hitelesítést vagy verzió-összehasonlítást. Az Ügyfél a Wc könyvtárat használja a helyi munkapéldány kezelésére.

Kliens konfiguráció

A Subversion szabványos ügyfélsegédprogramját, az SVN-t környezeti változók és a felhasználó saját könyvtárában egy alkönyvtárban létrehozott INI-fájlok.subversion konfigurálják (a konfiguráció helye a Windows rendszereken, a fájlokban vagy a rendszerleíró adatbázisban a rendszerbeállításoktól függ). A konfigurációban az SVN az SSL-tanúsítványokat, bejelentkezési adatokat, jelszavakat stb. is gyorsítótárazza (hacsak nincs letiltva a konfigurációban) a Subversion szerverek eléréséhez.

A könyvtár tartalma .subversion:

  • fájl servers - információkat tartalmaz a távoli tárolóhoz való hálózati csatlakozási módokról;
  • fájl config – egyéb konfigurációs információkat tartalmaz [52]
  • könyvtár auth - kiszolgálók, tanúsítványok, bejelentkezési adatok és jelszavak gyorsítótárát tartalmazza
  • fájl README.txt - SVN konfigurációs dokumentáció

Hátrányok

Problémák a fájlok átnevezésekor

Előfordulhat, hogy a Subversion nem mindig kezeli megfelelően a fájl átnevezéseket, ha a fájl tartalma az átnevezéssel egyidejűleg megváltozik. Problémák adódhatnak akkor is, ha a helyi másolatban átnevezett fájlt valaki más módosítja a tárolóban. A problémák némelyikét az 1.5-ös verzió javította, de ez a megoldás még nem készült el. [53]

Gyenge támogatás a fióktelepek összevonásához

A fiókegyesítési műveleteket is a Subversion gyenge pontjának tekintik. Az 1.5-ös verzió előtt a felhasználóknak minden ilyen műveletet manuálisan kellett nyomon követniük részletes változásnapló-bejegyzések segítségével. Az 1.5-ös verzió óta bevezették az automatikus egyesítés-követés alapszintű támogatását, amelyet a fejlesztők a későbbi kiadásokban továbbfejlesztenek [54] . A Subversion jelenleg elég jól támogatja a gyakori összevonási forgatókönyveket; bonyolultabb esetekben problémák adódhatnak. Javasoljuk [55] , hogy a munkafolyamatot úgy szervezzék meg, hogy elkerüljék a problémás forgatókönyveket. Az átnevezett fájlok és könyvtárak egyesítése nem támogatott.

Nem sikerült törölni az adatokat a tárhelyről

A Subversion lerakatba helyezett információk örökre ott maradnak: egy fájl törölhető az aktuális változatnál, de mindig vissza lehet állítani a lerakatból a korábbi változatok valamelyikét, amelyben a fájl létezett. Bár a korábbi verziók megőrzése valójában a verziókezelő rendszerek használatának célja, néha teljesen el kell távolítani a tévesen odahelyezett információkat. A Subversion erre semmilyen natív módot nem ad [56] ; az egyetlen lehetőség egy tárolási kiírat létrehozása, feldolgozása a szabványos svndumpfilter segédprogrammal, majd a tároló visszaállítása a kiíratból. Vannak harmadik féltől származó programok is, amelyek automatizálják ezt a folyamatot, de mindenesetre ehhez a művelethez a tárolóhoz való hozzáférés ideiglenes felfüggesztésére és egy olyan rendszergazda beavatkozására van szükség, aki elég magas jogosultságokkal rendelkezik ahhoz, hogy teljesen törölje a régi tárolót, és cserélje ki egy újjal. egy.

További szoftverek

  • Ügyfelek :
    • A RapidSVN  egy többplatformos Subversion C++ kliens ;
    • A SmartSVN  egy többplatformos Subversion Java kliens ;
    • A TortoiseSVN egy Windows Intéző kiterjesztéseként  megvalósított Subversion kliens ;
    • A RabbitVCS  egy Subversion kliens, amelyet a Linux fájlkezelő (korábban NautilusSVN) kiterjesztéseként valósítottak meg;
    • A KDESvn egy grafikus Subversion kliens, amely a KDE Software Compilation alkalmazáscsomag része;
    • A VisualSVN  a Microsoft Visual Studio kiterjesztése .
  • Pluginok :
  • Webes felületek :
    • A Trac  egy Wiki technológián alapuló eszköz,
    • Redmine  - emellett nyomon követi a hibákat,
    • Az USVN  az SVN-re specializálódott segédprogram adattárak létrehozására és hozzáférésének kezelésére.
    • ViewVC ,
    • websvn ,
    • SVNManager  – PHP segédprogram adattárak kezeléséhez (létrehozás, törlés, betöltés és eltávolítás; felhasználók és csoportok kezelése),
    • A Submin  egy segédprogram adattárak és felhasználók kezelésére, beleértve a lerakat egyes könyvtáraihoz való hozzáférés szabályozását,
    • A cSvn  egy többplatformos Subversion C kliens .
  • Összehasonlító táblázat: webes felületek:

Név

Leírás

Nyelv

DB

Engedély

Weboldal

Frissítés

Változat

Trac

Wiki technológián alapuló eszköz

Piton

SQLite, PostgreSQL, MySQL és MariaDB

Módosított BSD licenc

trac.edgewall.org Archiválva : 2013. április 8. a Wayback Machine -nél

2017.06.21

1.2.2

Redmine

további hibakövetés

rubin

MySQL, PostgreSQL, SQLite, Oracle.

GNU általános nyilvános licenc

redmine.org Archiválva : 2011. április 27. a Wayback Machine -nél

2018.12.09

4.0.0

USVN

SVN-re specializálódott segédprogram a lerakatokhoz való hozzáférés létrehozásához és kezeléséhez

PHP

MySQL, SQLite

CeCill (GPL-kompatibilis licenc).

www.usvn.info Archiválva : 2011. május 12. a Wayback Machine -nél

2012.01.13

1.0.6

ViewVC

felhasználókezelés nélkül, nem igényel DAV támogatást a webszervertől.

Piton

MySQL

Kéttagú Berkeley-stílusban

www.viewvc.org Archiválva : 2011. május 4. a Wayback Machine -nél

2010.12.02

1.1.8

WebSVN

böngészési felület az SVN-hez

PHP

XML

GNU GPL

websvn.tigris.org Archivált : 2006. június 12. a Wayback Machine -nél

2010.10.12

2.3.2

SVNManager

segédprogram adattárak kezeléséhez (létrehozás, törlés, be- és kirakodás; felhasználók és csoportok kezelése)

PHP

MySQL vagy SQLite

svnmanager.sourceforge.net Archiválva : 2011. április 30. a Wayback Machine -nél

2012.01.28

1.09

Beküldés (MIT)

segédprogram adattárak és felhasználók kezeléséhez, beleértve a lerakatban lévő egyes könyvtárak hozzáférés-vezérlésének kezelését

Piton

MIT/X archiválva : 2011. június 6. a Wayback Machine -nél

2012.12.24

2.1

cSvn

webes felület a Subversion adattárak megtekintéséhez

C

RADIX-1.0

csvn.radix.pro Archiválva : 2022. március 16. a Wayback Machine -nél

2020.11.17

0.1.3

Jegyzetek

  1. https://subversion.apache.org/docs/release-notes/release-history.html
  2. Megjelent az Apache Subversion 1.10.8  - 2022 .
  3. Megjelent az Apache Subversion 1.14.2  – 2022 .
  4. 1 2 A szubverziós nyílt forráskódú projekt az Open Hubon: Nyelvek oldala - 2006.
  5. https://projects.apache.org/json/projects/subversion.json
  6. 1 2 Open Hub – 2006.
  7. 1 2 https://www.openhub.net/p/subversion/analyses/latest/languages_summary
  8. 1 2 3 4 Ingyenes szoftverek könyvtára
  9. http://subversion.tigris.org/license-1.html
  10. Az angol subversion szó kétféleképpen fordítható - "megdönt" ( subversion ) és "felforgatás" ( al - verzió )
  11. A csomag részét képező parancssor ügyfélprogramjának nevével
  12. Apache védjegylista . Letöltve: 2015. október 10. Az eredetiből archiválva : 2015. október 7..
  13. A Subversion funkciók archiválva 2011. április 8-án a Wayback Machine -nél 
  14. The Risks of Distributed Version Control Archivált : 2011. július 15., a Wayback Machine , Ben Collins-   Sussman
  15. Megjelent a CVS, a Subversion pedig archiválva : 2010. március 25.  (angol) Red Hat magazin, 2005. augusztus
  16. CVS - sourceforge Archiválva : 2010. június 10.
  17. CVS - verziókezelő rendszer . Letöltve: 2010. június 30. Az eredetiből archiválva : 2010. július 8..
  18. HEADS UP: A FreeBSD src repo ezen a  hétvégén átáll a git-re . lists.freebsd.org (2020. december 17.). Letöltve: 2020. december 22. Az eredetiből archiválva : 2020. december 18.
  19. The Forrester Wave: Software Change and Configuration Management, Q2 2007 (hivatkozás nem érhető el) . Forrester Research . Az eredetiből archiválva : 2011. augusztus 25. 
  20. Népszerűségi versenystatisztikák a bzr, git, git-core, mercurial, subversion számára . Letöltve: 2010. június 24. Az eredetiből archiválva : 2014. április 6..
  21. Archivált másolat . Letöltve: 2010. június 24. Az eredetiből archiválva : 2011. július 17..
  22. lásd: http://subversion.apache.org/docs/ Archivált : 2010. június 17. a Wayback Machine -nél  
  23. Ben Collins-Sussman, Brian W. Fitzpatrick és C. Michael Pilato. Verzióvezérlés a  Subversion segítségével . Letöltve: 2019. november 27. Az eredetiből archiválva : 2010. augusztus 8..
  24. Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato. Verzióvezérlés a Subversionban . Letöltve: 2019. november 27. Az eredetiből archiválva : 2019. november 18.
  25. Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato. A Subversion története / Verzióvezérlés a Subversionban (hivatkozás nem érhető el) (2007). — Subversion 1.4-hez. Letöltve: 2010. július 21. Az eredetiből archiválva : 2011. augusztus 25.. 
  26. Változásnapló archiválva : 2010. június 18. a Wayback Machine -nél 
  27. Goliath Business News archiválva : 2008. december 5.
  28. Subversion 1.1 Kiadási megjegyzések . Letöltve: 2010. június 18. Az eredetiből archiválva : 2010. június 17..
  29. Subversion 1.2 Kiadási megjegyzések . Letöltve: 2010. június 18. Az eredetiből archiválva : 2010. június 17..
  30. Subversion 1.3 Kiadási megjegyzések . Letöltve: 2010. június 19. Az eredetiből archiválva : 2010. június 17..
  31. Subversion 1.4 Kiadási megjegyzések . Letöltve: 2010. június 18. Az eredetiből archiválva : 2010. június 17..
  32. Subversion 1.5 kiadási megjegyzések . Letöltve: 2010. június 18. Archiválva az eredetiből: 2016. július 2.
  33. Subversion 1.6 Kiadási megjegyzések . Letöltve: 2010. június 18. Az eredetiből archiválva : 2010. június 17..
  34. A Subversion átkerült az Apache Software Foundation irányítása alá. Archiválva : 2010. február 23., a Wayback Machine , nixp.ru
  35. Subversion & the Move to the Apache Software Foundation  (downlink) , (videoüzenet a Subversion Corporation elnökétől)
  36. Apache Subversion 1.7 Kiadási megjegyzések . Letöltve: 2011. október 12. Az eredetiből archiválva : 2011. október 12..
  37. 12 Subversion 1.8 Kiadási megjegyzések . Letöltve: 2013. július 9. Az eredetiből archiválva : 2013. július 10.
  38. ↑ A szimbolikus hivatkozásokkal végzett munka csak UNIX rendszereken működő munkapéldányokon támogatott
  39. 1 2 Az ágak és címkék a Subversionban nem független tárdimenziók. Tekintse meg a The Key Concepts Behind Branching archivált 2015. október 5-én a Wayback Machine -nél
  40. A repository és repository kifejezések szinonimák.
  41. 5. fejezet. Adattáradminisztráció archiválva : 2017. november 9. a Wayback Machine -en a Subversion Version Control alkalmazásban
  42. ↑ A műveletek a tárolási fájlrendszer szempontjából vannak felsorolva . Egy munkapéldányban az objektumokon végzett műveletek némileg eltérőek. A munkapéldányon végrehajtott változtatások azonban a véglegesítés után az itt leírt műveleteket váltják ki a lerakatban. Például egy parancs a munkapéldányban műveleteket hajt végre a tárolón.svn moveDA+
  43. C++ projektstruktúra Subversion és Mxx_ru használatával Archiválva : 2008. február 19. a Wayback Machine -en .
  44. Összetett projektek tárolása egy adattárban és több projekt egyszerre címkézése Archiválva : 2008. augusztus 4. a Wayback Machine -en .
  45. Fájlok közötti elágazás a Perforce-ban Archiválva : 2007. július 14.
  46. Elérési út alapú engedélyezés . Hozzáférés dátuma: 2008. május 27. Az eredetiből archiválva : 2008. október 7..
  47. Tipikus példák archiválva 2008. december 3-án a Wayback Machine -nél , a Subversion Version Control 1.4-es verziójában.
  48. Bubble-Up Method archiválva : 2010. június 17. a Wayback Machine -nél 
  49. ↑ A CVS-ben egy könyvtárat a fájlrendszer segítségével közvetlenül át lehet helyezni a tárolóba , miközben a benne lévő fájlok nem veszítik el előzményeiket. Ez a módosítás azonban hatással lesz az adott könyvtárban lévő fájlok összes változatára és ágára (mivel a könyvtáraknak egyáltalán nincs verzióinformációja a CVS-ben).
  50. Subversion GYIK . Letöltve: 2010. április 14. Az eredetiből archiválva : 2010. április 15..
  51. Jobb megoldás lehet a CVS tároló feltörése - nevezze át a könyvtárat közvetlenül a szerveren lévő tárolóra
  52. Futásidejű konfigurációs terület. A Subversion-élmény testreszabása (lefelé irányuló kapcsolat) . Letöltve: 2010. szeptember 16. Az eredetiből archiválva : 2011. augusztus 25.. 
  53. Másolással/mozgatással kapcsolatos fejlesztések a Subversion 1.5-ben . Letöltve: 2008. június 24. Az eredetiből archiválva : 2008. június 24..
  54. Egyesítés nyomon követése (alapvető) . Letöltve: 2008. június 24. Az eredetiből archiválva : 2008. június 24..
  55. Subversion merge reintegrate Archivált 2009. augusztus 31. a Wayback Machine -nél 
  56. svn obliterate . Letöltve: 2008. július 21. Az eredetiből archiválva : 2002. november 22..

Linkek