Înainte de a trebuie să înțeleagă ce este, ce sunt ei și de ce au venit să vorbească despre ceea ce un anumit sistem de control al versiunii. Acest curs este destinat pentru o introducere inițială a sistemelor de control al versiunii și de management, și la început voi vorbi despre originea de instrumente pentru controlul versiunilor, spune ce sisteme de control al versiunii sunt acum populare, și ceea ce au diferențe majore.
Despre controlul versiunilor
Ce este versiunea de control, și de ce ai nevoie de unul?
Poate că ar trebui să înceapă cu definirea sistemelor de control al versiunii (LES) - un sistem care înregistrează modificări într-unul sau mai multe fișiere, astfel încât, în viitor, puteți merge înapoi la anumite versiuni mai vechi ale acestor fișiere.
Recent, fișierele sunt rezultatul final pentru mai multe profesii (de exemplu, activități literare, activitatea științifică și, desigur, dezvoltare de software). Am petrecut o mulțime de timp și efort pentru dezvoltarea și susținerea acestor fișiere, și nimeni nu vrea să aibă să-și petreacă mai mult timp și efort pentru a restaura date pierdute din cauza oricăror modificări.
Imaginați-vă că un programator este în curs de dezvoltare un proiect constând dintr-un fișier mic (de altfel, un exemplu de foarte real, nu sintetic, întâlnit în viața reală). După lansarea primei versiuni a proiectului a fost confruntat cu o alegere dificilă: pentru a rezolva problemele raportate de către utilizatorii din prima versiune și, în același timp, pentru a dezvolta ceva nou pentru al doilea. Chiar dacă aveți doar pentru a corecta problemele care apar, este posibil ca, după orice modificare în proiect nu mai funcționează, și este necesar să se determine ceea ce a fost modificat pentru a face mai ușor pentru a izola problema. De asemenea, este de dorit să efectueze o revistă modificări și corecții pentru a face de mai multe ori aceeași muncă.
În cel mai simplu caz, problema de mai sus poate fi rezolvată prin stocarea mai multor copii ale fișierelor, de exemplu, unul pentru a corecta erorile din prima versiune a proiectului, iar al doilea pentru noi modificări. Deoarece schimbările sunt, de obicei, nu foarte mare în comparație cu dimensiunea fișierului, puteți stoca doar linia schimbat folosind utilitarul dif și mai târziu să le combine cu utilitarul patch-uri. Dar dacă proiectul este format din mai multe mii de fișiere și sute de oameni care lucrează pe ea? În cazul în care, în acest caz, metoda utilizată pentru a stoca copiile individuale ale fișierelor (sau chiar doar modificări) atunci proiectul a stagnat foarte repede. În capitolele următoare, de exemplu, voi folosi codul sursă de programe, dar de fapt sub control al versiunii, puteți plasa fișierele de aproape orice tip.
Dacă sunteți un designer grafic sau web și doriți să păstrați fiecare versiune a unei imagini sau aspect - și pe care le va dori, probabil, să - utilizarea unui sistem de control versiune este o decizie foarte înțeleaptă. SCR permite revenirea fișiere individuale la forma anterioară, a reveni la starea anterioară a întregului proiect, punctul de vedere, potrivit pentru a schimba ora pentru a determina care a efectuat ultima dată modificări în stațiile bruște unitate de lucru care și atunci când este introdus în codul o greșeală, și multe altele. În general, în cazul în care utilizează moneda greu, încă mizerie sau pierde fișiere, totul poate fi ușor restaurate. În plus, deasupra capului pentru ceea ce veți obține va fi foarte mică.
Sisteme de control al versiunii locale
Așa cum am menționat mai devreme - este un exemplu de un SUV local, este simplu: mulți oameni preferă să versiunea de control prin simpla copierea fișierelor într-un alt director (de obicei, prin adăugarea data curentă la numele directorului). Această abordare este foarte comună, deoarece este simplu, dar el dă de multe ori eșecuri. Este ușor să uiți că nu ești în acel director și aleatoriu schimba fișierul greșit sau să copiați fișierele nu sunt unde a vrut, și suprascrie fișierele. Pentru a rezolva această problemă, programatori mult timp în urmă a dezvoltat LES local, cu o bază de date simplă, care stochează toate modificările fișierele necesare
Una dintre cele mai populare valută străină acest tip este RCS (sistem Revizie de control, sistem de control de revizuire), care este încă instalat pe mai multe calculatoare. Chiar și într-un sistem de operare moderne, Mac OS X rcs utilitate este instalat cu Developer Tools. RCS a fost dezvoltat la începutul anilor 1980, Valterom Tichi (Walter F. Tichy). Sistemul vă permite să stocați numai o versiune a fișierului, astfel încât să gestioneze mai multe fișiere trebuie să manual. Pentru fiecare fișier sub controlul informațiilor de sistem despre versiunile sunt stocate într-un fișier cu numele fișierului original, la care se adaugă la sfârșitul caracterelor „v“. De exemplu, versiuni de fișier fisier.txt vor fi păstrate în fișierul file.txt v,. Acest utilitar se bazează pe lucrul cu seturi de patch-uri între perechile de versiuni (patch-uri - dosar care descrie diferențele între fișiere). Acest lucru vă permite să creați orice fișier în orice moment în timp, aplicarea în mod constant patch-uri. Pentru a stoca versiunea a sistemului utilizat de utilitati dif. Deși RCS îndeplinește cerințele minime pentru sistemul de control al versiunii, are următoarele dezavantaje principale, care au furnizat, de asemenea, un impuls pentru crearea sistemului următoarele:
- Lucrul cu un singur fișier, fiecare fișier ar trebui să fie controlate separat;
- Mecanismul Inconvenient de sistem multi-utilizator simultan, magazia este blocat până la doar blocul utilizator sa-l deschide;
- De la copii de rezervă nu va liber, risti sa pierzi totul.
Sisteme centralizate de control al versiunii
O altă provocare majoră a fost necesitatea de a colabora cu dezvoltatorii pentru alte computere. Pentru a rezolva aceasta, au fost create sistemul centralizat de control al versiunii (TSSKV). În astfel de sisteme, cum ar fi CVS, Subversion, iar perforce, există un server central care stochează toate fișierele sub controlul versiunilor, precum și un număr de clienți care primesc copii ale fișierelor de la ea. Timp de mulți ani a fost standardul pentru sistemele de control al versiunii.
Această abordare are multe avantaje, în special asupra LES locale. De exemplu, toată lumea știe cine face ce face în proiect. Administratorii au un control clar cine poate face ceea ce, și, desigur, pentru a administra TSSKV mult mai ușor decât bazele de date locale pe fiecare client. Cu toate acestea, în conformitate cu această abordare, există mai multe dezavantaje serioase. Cel mai evident - serverul centralizat este un punct slab al întregului sistem. Dacă serverul merge în jos timp de o oră, apoi o oră, dezvoltatorii nu pot comunica, și nimeni nu poate salva o versiune nouă a muncii lor. Dacă discul deteriorat cu o bază de date centrală și nu au o copie de siguranță, pierzi absolut totul - întreaga istorie a proiectului, probabil, cu excepția câtorva variante de lucru, supraviețuind pe computerele utilizatorilor.
CVS (Concurrent Versions System, comună versiunea sistemului) este în continuare sistemul cel mai utilizat pe scară largă, dar pierde rapid popularitatea acestuia din cauza deficiențelor pe care le voi discuta mai jos. Dick Grune (Dick Grune) CVS dezvoltat la mijlocul anilor 1980. CVS pentru a stoca fișiere individuale (precum RCS) utilizează fișiere în format RCS, dar vă permite să gestionați grupuri de fișiere localizate în directoare. CVS folosește, de asemenea, o arhitectură client-server, în care toate informațiile despre versiunile stocate pe server. Folosind o arhitectura client-server permite utilizarea CVS, chiar și echipe dispersate geografic de utilizatori în cazul în care fiecare utilizator are un director de lucru cu o copie a proiectului. După cum sugerează și numele, utilizatorii pot folosi sistemul împreună.
Posibile conflicte cu schimbarea aceluiași fișier sunt rezolvate prin aceea că sistemul vă permite să efectuați modificări numai în cea mai recentă versiune a fișierului. Astfel, este întotdeauna recomandat înainte de a turna modificările pentru a actualiza copia de lucru la dosarul cauzei posibile modificări conflictuale. Când actualizați sistemul face modificări în copia de lucru în mod automat și numai în cazul unor modificări conflictuale unul din fișierul pe care doriți să stabilească manual locul conflictului.
CVS permite, de asemenea, mai multe linii de dezvoltare a proiectului, cu ajutorul ramuri (ramuri) de dezvoltare. Astfel, după cum sa menționat mai sus, este posibil să se corecteze erorile din prima versiune a proiectului și, în paralel, pentru a dezvolta noi funcționalități.
CVS a fost folosit o mulțime de proiecte, dar cu siguranță nu a fost fără defecte sale, care mai târziu a condus la următoarele sistemului. Luați în considerare principalele dezavantaje:
- Având în vedere că versiunea stocată în fișierul RCS nu este posibil de a păstra directoarele versiune. Modul standard pentru a obține în jurul valorii de acest lucru - este de a salva un fișier (de exemplu, README.txt) în directorul;
- Mutarea sau redenumirea fișierelor nu este supus controlului versiunii. modul standard de a face acest lucru, mai întâi copiați fișierul, ștergeți mai vechi folosind comenzi ca cvs remove și apoi adăugați să-l cu un nume nou folosind cvs adăuga comanda;
Subversion
Sisteme de control al versiunii distribuite
Și în această situație, intră în joc la sistemul de control al versiunii distribuite (RSKV). În sisteme, cum ar fi Git, Mercurial, Bazaar sau clienții Darcs nu descarce doar ultima versiune a fișierului, și copiați complet întregul depozit. Prin urmare, atunci când serverul „pe moarte“, prin care lucrarea a fost întâmplă, orice depozit client poate fi copiate înapoi la server pentru a recupera baza de date. De fiecare dată când un client preia cea mai recentă versiune a fișierelor, aceasta se creează o copie completă a tuturor datelor.
În plus, cele mai multe dintre aceste sisteme se pot ocupa mai multe arhive de la distanță, astfel încât să puteți lucra simultan în moduri diferite, cu diferite grupuri de persoane într-un singur proiect. De exemplu, într-un singur proiect poate menține simultan mai multe tipuri de fluxuri de lucru, care nu pot fi sisteme centralizate.
De ce Sisteme distribuite?
Scurtă descriere a SUV-urilor populare distribuite