Svn aprašymas. SVN komandos

Ši straipsnių serija skirta naudojimo įvadui SVN, paprasto vartotojo požiūriu. Straipsnis buvo parašytas siekiant padėti mano kolegoms greitai išmokti ir naudotis SVN. Taigi pradėkime nuo pagrindų.

Įvadas

Subversion ( SVN) yra nemokama atvirojo kodo versijų valdymo sistema. SVN leidžia tvarkyti failus ir katalogus bei laikui bėgant padarytus jų pakeitimus. SVN suteikia šias funkcijas:

  1. Katalogų pakeitimų kontrolė. SVN naudoja "virtualus" failų sistema su versijų kūrimo galimybėmis, kurios laikui bėgant gali stebėti visų katalogų struktūrų pokyčius
  2. Tikra istorija versijos. SVN leidžia pridėti, ištrinti, kopijuoti ir pervardyti failus ir katalogus. Tokiu atveju kiekvienas naujai pridėtas failas pradeda gyvuoti švarus šiferis, išsaugodami savo pakeitimų istoriją
  3. Atominis pasikeitimų įsipareigojimas. Kiekvienas pakeitimų rinkinys arba visiškai patenka į saugyklą, arba iš viso ten nepatenka. Tie. jei atliekant projekto pakeitimus įvyko klaida apdorojant failą, viso projekto pakeitimai nebus atlikti
  4. Metaduomenys su versijomis. Kiekvienas failas ir katalogas turi savo ypatybių rinkinį, kurį nurodo pavadinimas ir reikšmė. Galite sukurti ir išsaugoti visas reikalingas nuosavybės pavadinimų poras ir jų vertes. Failų ypatybės yra tokios pat versijos kaip ir jų turinys
  5. Vieningas būdas dirbti su duomenimis. SVN aptinka skirtumus tarp failų naudodamas specialų dvejetainį algoritmą, kuris vienodai veikia ir su tekstiniais, ir su dvejetainiais failais. Failai įrašomi į saugyklą suglaudinta forma, nepaisant jų tipo, o skirtumai tarp atskirų versijų gali būti perduodami tinkle abiem kryptimis
  6. Veiksmingos šakos ir žymos. SVN sukuria šakas ir žymas tiesiog nukopijuodamas projektą, naudodamas mechanizmą, panašų į kietąsias nuorodas failų sistemose. Dėl šios priežasties šakų ir žymų kūrimo operacijos užtrunka mažai laiko.


Pagrindinių terminų sąrašas

  1. Saugykla(saugykla) yra centralizuota šaltinio kodų, darbo medžiagos ir dokumentacijos saugykla. Bet koks klientų skaičius prisijungia prie saugyklos ir skaito arba rašo šiuos failus
  2. Darbinė kopija/darbinė kopija(WC) yra įprastas kompiuterio katalogų medis, kuriame yra failų rinkinys, skirtas darbui su projektu. Darbinės kopijos pakeitimai nepasiekiami kitiems saugyklos naudotojams, kol jie nėra patvirtinti.
  3. Bagažinė— pagrindinė plėtros kryptis
  4. Filialas(„Šaka“) - plėtros kryptis, kuri egzistuoja nepriklausomai nuo kitos krypties, bet turi bendra istorija. Atšaka visada prasideda kaip kažko kopija ir juda nuo to taško, kurdama savo istoriją
  5. Žyma(„Etiketė“) – aiškiai parinkta projekto failų versija sukuriant atskirą aplanką tam tikras momentas laiko.
  6. Peržiūra— saugyklos peržiūros numeris, saugykloje taisymo numeris yra unikali reikšmė
  7. Patikra- komanda, kuri atlieka pirminį projekto priėmimą iš saugyklos WC.
  8. Įsipareigokite- komanda, kuri atlieka projekto failų, esančių WC, pakeitimus saugykloje.
  9. Atnaujinti- komanda, kuri atnaujina projekto failus WC iš saugyklos
  10. Grįžti- komanda, kuri anuliuoja bet kokius projekto failų pakeitimus WC, remiantis saugyklos versijos numeriu.
  11. Sujungti- komanda, kuri sujungia failus iš skirtingų projekto šakų ir įdeda sujungimo rezultatą į WC.
  12. Konfliktas- situacija, kuri susidaro atliekant pakeitimus, kai tuos pačius failus pakeitė keli kūrėjai.
  13. Išspręsti- kylančių konfliktų sprendimo taisyklių rinkinys.
  14. Importuoti- komanda greitai nukopijuoti failų medį į saugyklą.
  15. Eksportuoti- projekto eksportavimo komanda skiriasi nuo patikros tuo, kad nesukuria paslaugų informacijos projekto aplankuose.
  16. Jungiklis- komanda, kuri perjungia WC į kitą plėtros šaką.
  17. Sukurti, Pridėti, Ištrinti, Kopijuoti, Judėti, Pervardyti- komandos, skirtos failams ir aplankams tvarkyti saugykloje arba WC.

Programinė įranga

Darbas su saugykla SVN peržiūrėta remiantis programinė įranga TortoiseSVN

Ištrauka

Svn patikra [-depth ARG] [--ignore-externals] [-r rev] URL PATH

Jei žymimasis laukelis pažymėtas Praleisti išorinį

Jei nuskaitote konkrečią versiją, nurodykite ją po URL naudodami parametrą -r.

Atnaujinti

Svn informacija URL_working_copy svn atnaujinimas [-r rev] PATH

Atnaujinami keli elementai šiuo metu Subversion nėra atominė operacija. Todėl TortoiseSVN pirmiausia saugykloje suranda pagrindinę versiją (HEAD), o tada atnaujina visus elementus, kad būtų išvengta darbo kopijos su mišriomis pataisomis.

Jei atnaujinti pasirinktas tik vienas elementas arba pasirinkti elementai yra ne visi iš tos pačios saugyklos, TortoiseSVN tiesiog atnaujina pirmąją versiją.

Čia nenaudojamos jokios komandinės eilutės parinktys. Atnaujinti iki pataisos taip pat įgyvendina atnaujinimo komandą, bet siūlo daugiau galimybių.

Atnaujinti iki pataisos

Svn informacija URL_working_copy SVN atnaujinimas [-r rev] [-depth ARG] [--Ignore-externals] PATH

Gylio kombinuotojo laukelio elementai yra susiję su -gylio argumentu.

Jei žymimasis laukelis pažymėtas Praleisti išorinį, naudokite parinktį --ignore-externals.

Pataisyti

TortoiseSVN įvykdymo dialoge naudojamos kelios Subversion komandos. Pirmasis etapas yra būsenos patikrinimas, kuriuo nustatomi jūsų darbinės kopijos elementai, kurie gali būti padaryti. Galite naršyti šį sąrašą, palyginti failus su jų baze ir pasirinkti elementus, kuriuos norite įtraukti į įsipareigojimą.

Svn būsena -v PATH

Jei žymimasis laukelis pažymėtas

Jei pažymėsite neversijuotus failus ir aplankus, tie elementai pirmiausia bus įtraukti į jūsų darbinę kopiją.

Svn pridėti PATH...

Spustelėjus Gerai, Subversion pradeda vykdyti įpareigojimus. Jei paliksite visus failų žymimuosius laukelius numatytoje būsenoje, TortoiseSVN naudos vieną rekursinį darbinės kopijos patvirtinimą. Jei panaikinote kai kurių failų žymėjimą, tuomet turi būti naudojamas nerekursyvus įvykdymas (-N) ir kiekvienas kelias turi būti nurodytas atskirai commit komandinėje eilutėje.

Svn commit -m "Žurnalo pranešimas" [-depth ARG] [--no-unlock] PATH...

LogMessage čia rodo žurnalo pranešimo įvesties lauko turinį. Jis gali būti tuščias.

Skirtumas

Svn diff PATH

Jei naudojate komandą Diff iš pagrindinio kontekstinio meniu, palyginsite pakeistą failą su pagrindine jo versija. Aukščiau pateiktos komandos ICS išvestis taip pat daro tai ir sukuria išvestį kombinuotų skirtumų formatu. Tačiau TortoiseSVN to nenaudoja. TortoiseSVN naudoja TortoiseMerge (arba jūsų pasirinktą diff programą), kad vizualiai parodytų tekstinių failų skirtumus, todėl nėra tiesioginio atitikmens SVN.

Taip pat galite palyginti bet kuriuos du failus naudodami TortoiseSVN, neatsižvelgiant į tai, ar jų versija valdoma. TortoiseSVN tiesiog įveda šiuos du failus į pasirinktą diferencijavimo programą ir leidžia nustatyti, kur yra skirtumai.

Žurnalas

Svn log -v -r 0:N --riba 100 [--stop-on-copy] PATH arba svn log -v -r M:N [--stop-on-copy] PATH

Pagal numatytuosius nustatymus TortoiseSVN bando išgauti 100 žurnalo pranešimų naudodamas --limit metodą. Jei įrenginiai yra priversti naudoti senas API, tada antroji forma naudojama 100 versijų žurnalo pranešimams iš saugyklos gauti.

Jei žymimasis laukelis pažymėtas Sustokite ties kopijavimu / pervardijimu, naudokite parinktį --stop-on-copy.

Pakeitimų tikrinimas

Svn status -v PATH arba svn status -u -v PATH

Pradinė būsenos patikra žiūri tik į jūsų darbinę kopiją. Jei paspausite Patikrinkite saugyklą, tada saugykla taip pat patikrinama, kurie failai bus pakeisti atnaujinus, ir tam reikia parinkties -u.

Jei žymimasis laukelis pažymėtas Rodyti neversijuotus failus, TortoiseSVN taip pat rodys neversijuotus failus ir aplankus darbo kopijų hierarchijoje, laikydamasis ignoravimo taisyklių. Ši konkreti savybė neturi tiesioginio atitikmens Subversion, nes svn statuso komanda nepatenka į neversijuotus aplankus.

Peržiūros grafikas

Taisymo grafikas yra tik „TortoiseSVN“ teikiama funkcija. Komandinės eilutės kliente nėra ekvivalento.

Ką daro TortoiseSVN:

Svn informacija URL_working_copy svn log -v URL

kur yra URL šaknis saugyklą, o tada analizuoja grąžintus duomenis.

Saugyklos naršyklė

Svn informacija Working_copy URL Svn sąrašas [-r rev] -v URL

Norėdami apibrėžti saugyklos šaknį, galite naudoti svn info: tai aukščiausias lygis, rodomas saugyklos naršyklėje. Jūs negalite pakilti aukščiau šio lygio. Be to, ši komanda grąžina visą užrakto informaciją, rodomą „Storage Explorer“.

Iškvietus svn sąrašą bus pateiktas aplanko turinys pagal nurodytą URL ir taisymą.

Redaguoti konfliktus

Ši komanda neturi atitikmens ICS. Jis iškviečia TortoiseMerge arba išorinį trijų krypčių skirtumo / sujungimo įrankį, kad peržiūrėtų konflikte dalyvaujančius failus ir pasirinktų eilutes, kurios turėtų būti naudojamos.

Įsikūrė

Svn išsprendė PATH

Pervardyti

Svn pervardyti CURRENT_PATH NEW_PATH

Ištrinti

Svn ištrinti PATH

Pašalinti pakeitimus

Svn būsena -v PATH

Pirmasis etapas yra būsenos patikrinimas, identifikuojant elementus darbinėje kopijoje, kurių pakeitimai gali būti pašalinti. Galite peržiūrėti sąrašą, palyginti failus su duomenų baze ir pasirinkti elementus, kurių pakeitimus norite pašalinti.

Spustelėjus Gerai, Subversion pašalins pakeitimus. Jei paliksite visas failų pasirinkimo vėliavėles numatytoje būsenoje, TortoiseSVN naudos vieną rekursinį (-R) darbo kopijos pakeitimų anuliavimą. Jei panaikinsite kai kurių failų žymėjimą, kiekvienas kelias turi būti nurodytas atskirai komandinėje eilutėje, kad būtų pašalinti pakeitimai.

Svn revert [-R] PATH...

Valymas

Svn valymo PATH

Blokuoti

Svn būsena -v PATH

Pirmasis etapas yra būsenos patikrinimas, kuris identifikuoja jūsų darbinėje kopijoje esančius failus, kurie gali būti užrakinti. Galite pasirinkti elementus, kuriuos norite blokuoti.

Svn lock -m "LockMessage" [--force] PATH...

LockMessage yra užrakto pranešimo lauko turinys. Jis gali būti tuščias.

Jei žymimasis laukelis pažymėtas Perimti spynas, naudokite parinktį --force.

Atblokavimas

Svn atrakinimo PATH

Filialas / etiketė

Svn kopija -m "Žurnalo" URL URL arba svn kopija -m "Žurnalo pranešimas" arba svn kopija -m "Žurnalo pranešimas" KELIO URL

Dialogo lange Filialas / Etiketė kopijuoja į saugyklą. Yra 3 perjungiami mygtukai:

  • Pagrindinė saugyklos versija (HEAD)
  • Nurodyta versija saugykloje
  • Darbinė kopija

kurios atitinka tris aukščiau pateiktas komandų eilutės parinktis.

Įvadas

Subversion pagalbos funkcija ( svn pagalba) pateikia galimų komandų santrauką. Išsamesnės informacijos galite rasti internetinėje „Subversion“ knygoje adresu http://svnbook.red-bean.com/en/1.2/index.html.

3 skyrius yra ypač naudingas. Toliau pateikiamas pagrindinis komandų rinkinys, kurį visi redaktoriai naudos dažnai. Kai kurios komandos turi dvi formas, ilgas

ir trumpas. Abi nurodytos aprašyme. svn dif . Tai naudinga dviem skirtingais tikslais. Pirma, tie, kurie neturi rašymo prieigos prie BLFS SVN serverio, gali jį naudoti kurdami pataisas, skirtas siųsti į BLFS-Dev adresų sąrašą. Norėdami tai padaryti, tiesiog redaguokite failus vietinėje smėlio dėžėje ir paleiskite svn diff > FILE.patch iš jūsų BLFS katalogo šaknies. Tada galite pridėti šį failą prie pranešimo, esančio BLFS-Dev adresų sąraše, kur kas nors, turintis redagavimo teises, gali jį pasiimti ir pritaikyti knygai. Antrasis naudojimo būdas yra sužinoti, kas pasikeitė tarp dviejų versijų, naudojant: svn diff -r revision1:revision2 FILENAME

pridėti – prideda failus, katalogus ir simbolines nuorodas, pažymi, kad vėliau būtų galima įtraukti į saugyklą. Pažymėjus jie atsisiunčiami ir pridedami prie saugyklos pirmą kartą atlikus pakeitimus. Jei ką nors pridėjote, bet apsigalvojote prieš jį prisegdami, galite pašalinti pridėjimo ženklą naudodami svn revert antrinę komandą.
svn pridėti PATH...
$svn pridėti testdir

kaltinti (pagirti, komentuoti, ann) – eilutė po eilutės rodo nurodytų failų ar URL autorių ir redaktorių. Kiekviena teksto eilutė prasideda autoriaus vardu (vartotojo vardu) ir taisymo numeriu. Tai rodo, kas ir kada paskutinį kartą pakeitė šią eilutę.
svn kaltina TARGET[@REV]…
$ svn kaltė http://svn.red-bean.com/repos/test/readme.txt

cat – spausdina nurodytų failų arba URL turinį. Norėdami pateikti katalogų turinį, naudokite svn list.
svn cat TARGET[@REV]…
$ svn katė http://svn.red-bean.com/repos/test/readme.txt

checkout (co) – sukuria darbinę kopiją pagal saugykloje esančius duomenis. Jei PATH praleistas, pagrindinis URL pavadinimas bus naudojamas kaip darbinės kopijos katalogo pavadinimas. Jei pateikiami keli URL, atitinkamos kopijos bus sukurtos PATH pakatalogyje, kiekvienas savo kataloge, gautame iš pagrindinio URL pavadinimo.
svn patikros URL[@REV]…
svn patikra svn://svn.ru2web.ru/ru2web/branches/www-01/ /usr/home/vasia/ru2web.ru/app/

valymas – rekursyviai išvalo darbinę kopiją, pašalindamas užraktus, likusius po neužbaigtų operacijų. Kai tik pamatysite klaidą „darbinė kopija užrakinta“, paleiskite šią antrinę komandą, kad pašalintumėte senus užraktus ir pakeistumėte darbinę kopiją į veikiančią būseną.

Jei dėl kokių nors priežasčių nepavyko atlikti svn naujinimo komandos dėl problemų su veikiančia išorine diff programa (pavyzdžiui, joje spustelėjau kažką ne taip arba įvyko tinklo gedimas), turite nustatyti parametrą –diff3-cmd į leisti nuvalyti kopiją, kad būtų užbaigti visi sujungimai naudojant išorinę diferencijavimo programą. Taip pat galite nurodyti konfigūracijos katalogą naudodami parinktį –config-dir, tačiau būkite atsargūs ir nenaudokite šių parinkčių per daug.

commit (ci) – siunčia pakeitimus, kuriuos atlikote darbinėje kopijoje, į saugyklą, kad jie būtų ten įrašyti. Jei nenaudosite parinkties –file arba –message, svn paleis išorinę redaktorių, kad sukurtų komentarą. Perskaitykite editor-cmd parametro aprašymą „Config“.
svn commit išsiųs visas rekursyviai rastas užrakto etiketes į saugyklą ir atrakins šias etiketes atitinkančius išteklius, jei parametras –no-unlock nebuvo nurodytas. „Paieškos sritis“ nurodoma nurodant PATH.
svn įsipareigojimas

kopija (cp) – kopijuoja failą į darbinę kopiją arba į saugyklą. SRC ir DST gali būti keliai darbinėje kopijoje arba URL saugykloje.
svn kopija SRC DST

ištrinti (del, remove, rm) – elemento ištrynimas iš darbinės kopijos ar saugyklos.
svn ištrinti PATH...
svn ištrinti URL...

diff (di) – rodo skirtumus tarp darbinės kopijos ir saugyklos.
$ svn diff http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500

eksportuoti – eksportuoti švarų katalogų medį (be .svn aplankų).

pagalba (?, h) – Pagalba.

importuoti – neversijuotą failą arba medį įkelia į saugyklą.
svn importo URL

informacija – rodyti informaciją apie vietinį arba nuotolinį elementą.
svn informacija

sąrašas (ls) – saugykloje esančių katalogų sąrašas.
svnlist...]
$ svn sąrašas http://svn.red-bean.com/repos/test/support

užraktas – užrakinkite darbinę kopiją saugykloje, kad joks kitas vartotojas negalėtų keisti nurodyto kelio.
svn lock TARGET…
$ svn lock tree.jpg house.jpg

žurnalas – rodyti žurnalo pranešimus.
svnlog
svn žurnalo URL
$svnlog

sujungti – taikyti skirtumus tarp dviejų šaltinių.
$ svn merge -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch

mkdir – sukurkite katalogą versijų valdomoje saugykloje.
$svn mkdir newdir

perkelti (mv, pervardyti, ren) – perkelti failą arba katalogą.
svn move SRC DST

propdel (pdel, pd) – pašalinkite ypatybes iš failų, katalogų ar pataisų.
svn propdel PROPNAME
svn propdel PROPNAME –revprop -r REV

propedit (pedit, pe)
propget (pget, pg)
proplist (plist, pl)
propset (pset, ps)

išspręsta – pašalinkite „konfliktus“ iš darbinės failų ar katalogų kopijos.
svn išsprendė PATH…

grąžinti – grąžinti visus vietinius pakeitimus.
$ svn revert myprj.phtml

status (stat, st) – failų ar katalogų darbinės kopijos būsena.
$svn būsena wc

jungiklis (sw) – atnaujinkite darbinę kopiją į kitą URL.

atrakinti – atrakina darbinę kopiją.

atnaujinti (aukštyn) – atnaujinkite savo darbinę kopiją.

Subversion (SVN – Concurrent Versions System) yra centralizuota versijų valdymo sistema. Sukurtas kaip pakaitalas CVS, turi tą patį funkcionalumą, tačiau neturi daugelio trūkumų. Taip pat žiūrėkite: SVN knyga.

SVN serverio nustatymas

SVN saugykla, paprasčiausiai, šiame pavyzdyje, katalogas, /home/svn/, turi egzistuoti: # svnadmin create --fs-type fsfs /home/svn/project1 Prie saugyklos galite prisijungti šiais būdais:

  • file://- Tiesioginė prieiga per failų sistemą naudojant SVN klientas. Privilegijos turi būti tinkamai nustatytos vietinėje failų sistemoje.
  • svn:// arba svn+ssh://- Nuotolinė prieiga prie SVN serveris (taip pat pagal protokolą SSH). Reikalingos teisės vietinėje failų sistemoje, numatytasis prievadas: 2690/tcp.
  • http:// Nuotolinė prieiga per webdav naudojant apache. Šis metodas nereikalauja vietinių vartotojų.
Importuokite ir patikrinkite esamą projektą naudodami vietinę failų sistemą. Nebūtina eiti į darbo katalogą, galite tiesiog nurodyti visą kelią: # svn import /project1/ file:///home/svn/project1/trunk -m "Pradinis importas" # svn checkout file:// /home/svn/projektas1

Nuotolinė prieiga per SSH protokolą

Nuotolinė prieiga per protokolą SSH nereikalauja jokių papildomų nustatymų, tiesiog pakeiskite file://įjungta svn+ssh/hostname. Pavyzdžiui: # svn checkout svn+ssh://hostname/home/svn/project1 Kaip ir vietinės prieigos atveju, vartotojas turi turėti paskyrą, kad galėtų pasiekti per protokolą SSH prie serverio ir teisingai sukonfigūruoti skaitymo / rašymo leidimai. Šis metodas gali būti tinkamas mažoms vartotojų grupėms, grupės vartotojai yra saugyklos savininkai, pavyzdžiui: # groupadd subversion # groupmod -A user1 subversion # chown -R root:subversion /home/svn # chmod -R 770 /namai/svn

Nuotolinė prieiga per HTTP (apache)

Nuotolinė prieiga per HTTP(HTTPS), tinkamas sprendimas nuotolinėms vartotojų grupėms. Šis metodas naudoja žiniatinklio serverio autentifikavimą Apache(ne vietinės sąskaitos). Čia yra tipinė konfigūracija: LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so # Tik prieigos kontrolei DAV svn # URL "/svn/foo" bus susietas su saugyklos keliu /home/svn/foo SVNParentPath /home/svn AuthType Basic AuthName "Subversijos saugykla" AuthzSVNAccessFile /etc/apachepaacl2/sv. svn-passwd Reikalauti galiojančio vartotojo serverio Apache turi turėti visišką prieigą prie saugyklos: # chown -R www:www /home/svn Sukurti vartotoją naudojant htpasswd: # htpasswd -c /etc/svn-passwd user1 #-c Sukurti failą

Prieigos valdymo svn.acl pavyzdys

# Numatytoji skaitymo prieiga. "* =" pagal numatytuosius nustatymus neturės prieigos[/] * = r project1-developers = Joe, Jack, Jane # Suteikite kūrėjams rašymo leidimus@project1-developers=rw

Kai kurios komandos, skirtos valdyti SVN saugyklą

Taip pat žr. Subversion greitųjų nuorodų kortelę. Tortoise SVN, gera Windows sąsaja.

Importuoti

Importuoti į saugyklą naujas projektas kuriuose yra katalogų ir failų, galite naudoti komandą importuoti. Ta pati komanda taip pat naudojama norint įtraukti katalogą su jo turiniu į jau esamą projektą. # svn padėti importuoti # Pagalba pagal komandą# Pridėkite naują katalogą ir jo turinį į projekto1 src katalogą.

# svn import /project1/newdir http://host.url/svn/project1/trunk/src -m "add newdir"

Įprastos SVN komandos # svn co http://host.url/svn/project1/trunk # Pateikite užsakymą naujausia versija# Žymos ir šakos sukuriamos naudojant kopijavimą # svn mkdir http://host.url/svn/project1/tags/# Sukurkite žymų katalogą # svn copy -m "Žyma rc1 rel." http://host.url/svn/project1/trunk \ http://host.url/svn/project1/tags/1.0rc1 # svn būsena [--verbose]# Patikrinkite failų būseną darbiniame kataloge # svn pridėti src/file.h src/file.cpp# Pridėkite du failus # svn commit -m "Pridėtas naujas klasės failas"# Siųsti pakeitimus žinute # svn ls http://host.url/svn/project1/tags/# Visų žymų sąrašas # svn move foo.c bar.c# Perkelti (pervardyti) failus