Adresa URL a depozitului la Subversion
În carte, pentru a identifica fișierele și directoarele din Subversion depozit URL-ul utilizat. Practic, intrarea regula standard, este utilizat în URL-ul acestora, pentru a permite nume de server și numărul de port ca parte a URL-ului:
Cu toate acestea, în procesarea sistemului URL Subversion, există unele nuanțe de a păstra în minte. De exemplu, în conformitate cu acordurile, URL-ul, utilizând metoda de acces de fișiere (această metodă este folosită pentru a avea acces la stocare locală), trebuie să includă fie un server localhost. sau nu conțin numele serverului:
În plus, cei care folosesc schema fișier: pe platforma Windows, trebuie să utilizați regulile informale „standard“ pentru înregistrarea la accesarea magaziei, care se află pe aceeași mașină, dar pe diferite discuri cu clientul. Ambele următoarele înregistrări vor funcționa; aici X - este numele unității pe care se află magazia:
În cea de a doua formă de intrare în bara verticală nu este privit ca un canal, trebuie să luați URL-ul în ghilimele. De asemenea, rețineți utilizarea slash-uri în URL-ul direct, în ciuda faptului că nativ (non-URL) sub forma unui traseu pe Windows utilizează backslash.
În cele din urmă, trebuie spus că clientul Subversion va codifica automat URL-ul în același mod, dacă este necesar, deoarece face browser-ul web. De exemplu, dacă o adresă URL conține un spațiu sau ASCII de caractere în majuscule:
... apoi Subversion ascund caractere nesigure și se comportă ca și cum ați fi scris:
În cazul în care există spații în URL-ul, luați în ghilimele, iar apoi shell-ul totul va trata ca un argument la programul SVN.
copii de lucru
Ai citit deja despre copii de lucru; Acum vom arăta modul în care creează clientul Subversion și le utilizează.
O copie de lucru Subversion este un arbore director obișnuit pe computer care conține un set de fișiere. Este posibil, la opțiunea de a edita aceste fișiere și, în cazul în care codul sursă, puteți compila mod obișnuit de la programul lor. Copia dvs. de lucru - este spațiul de lucru personal. Ca Subversion nu se amesteca cu modificările altora, și nu pune la dispoziția altor modificările făcute în timp ce nu o să-i spun. Puteți avea chiar mai multe copii de lucru ale aceluiași proiect.
Ca regulă generală, Subversion depozit conține fișierele (sau cod sursă) pentru mai multe proiecte; De obicei, fiecare proiect este reprezentat ca un subdirector al sistemului de fișiere depozit. În această abordare, copie de lucru a unui utilizator corespunde în mod normal, într-un subdirector separat de stocare.
De exemplu, să presupunem că aveți un depozit care conține două proiecte software: vopsea și calc. Fiecare proiect este în propriul său director așa cum se arată în Figura 1.6, „Sistemul de stocare de fișiere.“
Figura 1.6. Sistemul de stocare a fișierelor
Pentru a crea o copie de lucru, aveți nevoie pentru a obține oricare din magazin subdirectoare. (Puteți obține un termen suna ca ceva de-a face cu blocare sau rezervarea resurselor, dar nu este, pur și simplu, această comandă creează pentru tine o copie personală a proiectului.) De exemplu, dacă obțineți / calc. veți avea o copie de lucru ca aceasta:
O scrisoare spunând că Subversion adăugat acest element pentru a copia de lucru. Acum aveți o copie personală a registrului central de catalog / Calc, cu un adaos mic - director .svn. care conține, așa cum sa arătat mai sus, informațiile suplimentare necesare Subversion.
Obțineți acces la magazia Subversion poate fi o varietate de moduri - pe discul local, sau printr-o serie de protocoale de rețea. Locația de stocare este întotdeauna determinată utilizând URL-ul. Tabelul 1.1, «URL-ul pentru accesarea magaziei.“ Arată diferite circuite de potrivire a adreselor URL posibile metode de acces.
Tabelul 1.1. URL-ul pentru a avea acces la depozit.
Să presupunem că a face modificări la button.c. Deoarece directorul .svn amintește data modificării fișierului și conținutul originale, Subversion poate spune că ați modificat fișierul. Subversion nu publică modificările până când le spui să. Publicarea modificărilor este mai frecvent cunoscut sub numele de comiterea (sau verificarea în) modificări ale magaziei.
Acum, modificările la button.c. împreună cu o notă care descrie modificările (de exemplu: typo fix), angajat la magazia; Dacă un alt utilizator creează o copie de lucru a / calc. ei vor vedea modificările în cea mai recentă versiune a fișierului.
Să presupunem că aveți un partener, Sally, care a stabilit o copie de lucru a / calc în același timp cu tine. Când comite modificări ale button.c. copie de lucru Sally a rămas neschimbat din Subversion exemplare, la modifică cererea utilizatorului de lucru.
Pentru a aduce copie de lucru la zi Sally poate cere Subversion să actualizeze o copie de lucru, Subversion folosind comanda de actualizare. Acest lucru va permite modificările în copia ei de lucru, precum și toate celelalte modificări înregistrate după ce a creat o copie de lucru.
Concluzie comandă actualizare SVN spune că Subversion actualizat button.c conținutul. Rețineți că Sally nu indică ce fișierul de actualizare; pentru a determina fișierele pe care doriți să le aducă la zi, Subversion utilizează informațiile din directorul .svn. precum și informații din depozit.
SVN comite operație publică modificări la orice număr de operațiuni atomice unice de fișiere și directoare. În copia de lucru, puteți modifica conținutul fișierelor, de a crea, șterge, redenumi și copia fișiere și directoare, și apoi toate modificările pentru o singură tranzacție atomică.
Prin „tranzacție atomică“ se referă la următoarele: orice modificări aduse la magazia complet, sau acestea nu sunt făcute deloc. Subversion se comportă ținând cont de posibilele accidente de program, blocarea sistemului, probleme de rețea, precum și o acțiune de utilizator nevalid.
De fiecare dată când există o blocare, acest lucru creează o nouă stare a sistemului de fișiere, care se numește de editare. Fiecare revizuire este atribuit un număr unic, un număr mai mare de revizia precedentă. Pornirea edita magazia nou creat este numerotat 0 și constă din nimic altceva decât un director rădăcină gol.
Figura 1.7, „Storage“ ilustrează perfect magazin. Imaginați-vă o serie de numere de revizuire, începând cu 0, de la stânga la dreapta. Fiecare număr de revizuire are un copac fișier corespunzător, și fiecare arbore este un „instantaneu“ al modului în care magazia uitat după o comite.
Figura 1.7. depozit
Numerele de revizuire globale
Spre deosebire de majoritatea sistemelor de control al versiunii, numerele de revizuire Subversion lui se aplică tuturor. și nu doar într-un anumit fișier. Fiecare număr de revizuire corespunde unui arbore întreg dintr-un anumit depozit, după o schimbare comise. Cu alte cuvinte, editarea N reprezintă starea sistemului de fișiere depozit după fixarea N-lea. Când utilizatorii Subversion vorbesc despre „revizuire 5 foo.c». de fapt, este vorba despre o parte «foo.c la editarea 5.“ Rețineți că modificările de N și M ale unui fișier nu diferă în mod necesar! Multe sisteme de control al versiunii ispolyuzuyut pe numere de revizuire fișier, astfel încât această abordare la prima poate părea neobișnuită. (Fostele utilizatorii CVS pot solicita informații suplimentare în Anexa B, Subversion pentru utilizatorii CVS.)
Este important să ne amintim că copii de lucru nu corespund întotdeauna o singură revizuire în magazia; acestea pot conține fișiere din mai multe revizuiri diferite. De exemplu, puteți obține o copie de lucru de la un depozit de corecție a cărei cea mai recentă - 4:
În acest moment, directorul de lucru este pe deplin revizuirea consecventă 4 în magazia. Să presupunem că ați făcut modificări la button.c și comite modificările. În lipsa altor fixații va edita comite numărul 5, iar copia de lucru este după cum urmează:
Să presupunem că, după acest moment, Sally comite o integer.c schimbare. crearea de editare 6. Dacă utilizați SVN actualizare pentru a aduce de lucru copie la zi, atunci se va arata astfel:
modificările lui Sally la integer.c vor apărea în copia de lucru, și schimbarea la button.c, de asemenea, vor participa. În acest exemplu, textul Makefile din Edit 4, 5 și 6 sunt identice, dar revizuirea Subversion numărul 6 aplică pe copia de lucru Makefile. pentru a arăta că fișierul nu este depășit. Astfel, după ce efectuați o actualizare completă copia de lucru, acesta va respecta pe deplin starea actuală a depozitului.
Cum copii de lucru Urmărire Depozitului
În .svn directorul de serviciu / pentru fiecare magazine director de fișiere de lucru Subversion informații despre două proprietăți importante:
la ce revizuire fișierul de lucru se bazează (aceasta se numește un fișier de editare de lucru), și
temporară (accent pe ultima silabă) etichetă, care determină atunci când copia de lucru a fost actualizat ultima dată de depozit.
Folosind aceste informații la conectarea la magazia, Subversion poate spune care dintre următoarele patru state un fișier de lucru:
Nu m-am schimbat, și actuale
Fișierul este neschimbat în directorul de lucru, iar în magazin sunt, de asemenea, modificări la acel fișier de la înființarea revizuirii sale de lucru. SVN Echipa se angajează și să actualizeze SVN orice operatiune nu va face.
La nivel local sa schimbat, și actuale
Fișierul a fost schimbat în copia de lucru, dar seiful nu își modifică acel fișier a fost actualizată ultima dată copia de lucru. Există modificări locale, care nu au fost angajate la magazia, astfel încât SVN comite va efectua comite modificările, ca svn update nu va face nimic.
Neschimbat, și de data
La nivel local sa schimbat, și de data
Poate părea că monitoriza starea actuală a copiei de lucru este dificil. Acest lucru nu este așa. Pentru a cunoaște starea de orice element din copia dvs. de lucru, există comanda de stare SVN. Pentru mai multe informații despre această comandă, se referă la «SVN statut».
revizii amestecate în copii de lucru
Subversion încearcă să fie cât mai flexibil posibil. De exemplu, este posibil să aibă o copie de lucru care conține fișiere și directoare cu numere mixte de revizii de lucru. Dar, din păcate, această flexibilitate este uneori confuz pentru unii utilizatori noi. Dacă exemplele anterioare care arată revizuiri mixte, face să te simți o pierdere, este un ghid care explică de ce acest lucru este posibil și modul de utilizare este destinat pentru tine.
Actualizări și fixare sunt separate unul de altul
Principalul efect secundar al acestei reguli este că, copie de lucru ar trebui să efectueze o analiză suplimentară atunci când este amestecat revizuiri, și să fie atent cu orice amestec. Iar faptul că directoarele sunt supuse controlului versiunii face și mai greu de înțeles.
Să presupunem că aveți o copie de lucru în întregime de revizuire corespunzătoare 10. După modificărilor fișierelor foo.html. executați comanda SVN comite. care creează Editare magazia 15. După fixarea majoritatea noilor veniți se așteaptă ca toate vor avea o copie de lucru de editare 15, dar nu este. Între 10 și 15 revizii în magazin ar fi făcut orice număr de modificări. Deoarece actualizarea comanda SVN nu a fost efectuată, iar SVN comite nu încarcă modificări, clientul nu știe nimic despre schimbările sunt în magazin. Pe de altă parte, în cazul în care SVN comite comandă pentru a descărca automat cele mai recente modificări, întreaga copie de lucru ar putea fi de a desemna un număr corespunzător de modificări - 15. Cu toate acestea, aceasta ar încălca o regulă fundamentală că „transferul“ și „primirea“ sunt operațiuni independente. Prin urmare, tot ceea ce poate face clientul Subversion, acesta este marca un fișier - foo.html - revizuirea corespunzătoare 15. Restul copiei de lucru continuă să îndeplinească revizuire 10. Numai atunci când se efectuează actualizarea SVN se va descărca cele mai recente modificări și întreaga copie de lucru să fie marcate în mod corespunzător revizuire 15.
revizii mixte - acest lucru este normal
De multe ori, utilizatorii noi sunt complet conștienți că copia lor de lucru conține revizii mixte. Acest lucru poate fi confuz, deoarece multe comenzi de client sunt sensibile la revizuirea de lucru a elementului cu care funcționează. De exemplu, comanda jurnal SVN este folosit pentru a afișa istoricul modificărilor unui fișier sau director (a se vedea. «SVN log»). Atunci când utilizatorul invocă această comandă pe un obiect copie de lucru, el se așteaptă să vadă povestea completă a acestui obiect. Cu toate acestea, în cazul în care revizuirea de lucru a obiectului este destul de vechi (datorită faptului că actualizarea comanda SVN nu a fost efectuată pentru o lungă perioadă de timp) va fi afișat pentru istoria versiunea mai veche a obiectului.
revizii mixte - acest lucru este util
Dacă aveți un proiect foarte mare, s-ar putea găsi că este util uneori forțat să „întoarcere“ a copiei de lucru la un modificări anterioare; cum se face, veți afla în Capitolul 2, Subversion Tour. S-ar putea dori să testați o versiune anterioară a modulului situat într-un subdirector, sau pentru a afla exact când a apărut eroarea într-un anumit fișier. Acest lucru - „mașină a timpului“. aspectul unui sistem de control al versiunilor, care vă permite să se deplaseze în istoria oricărei părți a copia dvs. de lucru înainte și înapoi.
revizuirile mixte au limitări
Deși există restricții cu privire la ceea ce de lucru copie puteți utiliza modificările de amestecare au această flexibilitate.
În primul rând, nu puteți efectua eliminarea de fișier învechit sau director. Dacă seiful există o versiune mai nouă a elementului, încercați să eliminați vor fi respinse pentru a preveni posibilitatea distrugerii accidentale a modificărilor pe care nu le cunoașteți.
În al doilea rând, nu puteți detecta o schimbare de metadate pentru a nu actualizarea catalogului. Decernarea „proprietăți“ din elementele pe care le veți învăța în capitolul 3, utilizarea profesională a Subversion. revizuirea de lucru definește un set specific de director al elementelor sale constitutive și proprietăți, stabilind astfel modificări de proprietate director vechi poate distruge proprietăți, care nu știi.