Nə üçün versiyaya nəzarət sisteminə ehtiyacınız var? Versiyaya nəzarət sistemləri nədir və onlara nə üçün lazımdır? CVS, Subversion və Perforce kimi sistemlər bütün faylları versiya nəzarəti altında saxlayan mərkəzi serverə və bir sıra müştərilərə malikdir.

Salam, Habr. Mən bir çox məqalələrdə tükənmiş bir mövzuya, daha dəqiq desək, versiyaya nəzarət sistemlərinin (bundan sonra VCS) əsasən qeyri-standart (deyərdim ki, çeşidlənməmiş) istifadəsini təsvir etmək qərarına gəldim. Hörmətli proqramçılar, gəlin çürük pomidorları gizlədək və davam edək, çünki bu məqalə sizin üçün deyil. Bəli, hamınız artıq Git, SVN, CVS-in bütün incəliklərini öyrənmisiniz və bir çox başqa sözlər bilirsiniz. Gəlin, sadə insanlar, sabit valyutadan istifadənin bütün üstünlükləri ilə tanış olaq.
Sərbəst valyuta sistemi ilə tanış olmaq istəyən hər kəsi, eləcə də bu və ya digər şəkildə sürətlə dəyişən məlumatlarla məşğul olanların hamısını dəvət edirəm.

Bu niyə lazımdır?

Mən özüm texniki universitetin tələbəsiyəm və demək olar ki, daim sənədlərlə (mətnlər, rəsmlər, rəsmlər) işləyirəm, onları gündə üç (on, yüz) dəfə dəyişirəm. Bəzən belə çıxır ki, redaktələr zamanı edilir keçən həftə, bir həftə əvvəlki vəziyyətdə sənədləri ləğv etmək və geri qaytarmaq lazımdır. Yalnız bir neçə düzəliş edilsə yaxşıdır, bu halda Ctrl+Z-də əlli vuruş kömək edə bilər. Bununla belə, bu həftə ərzində sənədlə az-çox aktiv iş aparılıbsa, “bir həftə əvvəl edilən mühüm redaktədən əvvəl” statusu sadəcə bərpa etmək mümkün olmayacaq. Bunu etmək üçün sizə "vacib redaktədən əvvəl" sənədin bir nüsxəsi, həmçinin "digər mühüm redaktədən əvvəl", "şübhəli redaktədən əvvəl" və "ən çox tələb olunan redaktədən əvvəl" onlarla daha çox nüsxə lazımdır. çox güman ki, ləğv edilməlidir." Prinsipcə, bu yanaşma mümkündür və çoxları tərəfindən tətbiq olunur. Son vaxtlara qədər mən özüm tuturdum mühüm versiyalar faylları "tarix_vaxt" prefiksləri ilə saxladım və deyəsən, razı qaldım. Bu metodun üstünlüyü onun sadəliyi, dezavantajı işləyən qovluqların "şişməsi" və istifadə üçün əlverişsiz olmasıdır. Və əgər onlardan birincisi bir şəkildə həll edilə bilərsə (böyük sabit disklər və 7zip), o zaman narahatlıq üçün bir şey etmək lazım idi.

Bununla bağlı nə edilə bilər və ya SLE nədir

Vikipediyadan bir abzas götürək: “Versiyaya nəzarət sistemi (İngilis Versiyasına Nəzarət Sistemindən, VCS və ya Revision Control System-dən) dəyişən məlumatlarla işləməyi asanlaşdıran proqramdır. Versiyaya nəzarət sistemi eyni sənədin bir neçə versiyasını saxlamağa və lazım gələrsə, daha çoxuna qayıtmağa imkan verir əvvəlki versiyalar, bu və ya digər dəyişikliyi kimin və nə vaxt etdiyini müəyyənləşdirin və daha çox.” Bu, Vikipediyanın özünün işləmə tərzinə bənzəyir – bütün redaktələri olan məqalələrin bütün versiyaları öyrənilə bilər.
Beləliklə, faylların bir çox versiyasını saxlamağınız lazım olan bir vəziyyətdə VCS-dən istifadə etmək sizə lazım olan şeydir. Bu yanaşmanın üstünlükləri arasında istifadənin asanlığı və pulsuz qənaət daxildir disk sahəsi sözdə delta sıxılma sayəsində (faylların özləri müxtəlif versiyalarda saxlanmadıqda, lakin saxlanılan məlumatların miqdarını azaldan versiyadan versiyaya dəyişdikdə). Gəlin cəhd edək.

Sərt valyutanın hansı növləri var?

Eyni Vikipediya təklif edir ki, sərt valyuta sistemləri mərkəzləşdirilmiş və paylanmış ola bilər, böyük və kiçik, zəng və fit səsləri ilə və ya olmadan. Bizi bu xüsusilə maraqlandırmır, çünki istifadə edəcəyik (by ən azı, birinci) valyuta mübadiləsi sisteminin funksionallığının yalnız bir hissəsi. Gəlin bu funksionallığı nəzərdən keçirək.
Demək olar ki, bütün VCS-lər işlədiyimiz faylların bütün versiyalarının saxlandığı bir növ yaddaşdır. Burada saxlanılan faylların versiyalarının ən çox istifadəçi tərəfindən müəyyən edildiyini aydınlaşdırmaq lazımdır. Deyək ki, onlarla kiçik redaktə etdik və qərara gəldik ki, fəaliyyətimizin nəticələrini bir depoda saxlamağın vaxtı gəldi. Ctrl+S düymələrini vaxtaşırı basmaqla ağla bənzətmə gəlir, yeganə fərq odur ki, faylın bu versiyasına gələcəkdə daxil olmaq mümkündür. Təbii ki, bir addımda yaddaşa istədiyiniz qədər faylın versiyasını əlavə edə bilərsiniz. Bu hərəkət sadə şəkildə "təhlükəsizlik" və ya "dəyişikliklər etmək" adlanır.
İstənilən vaxt siz repozitoriyaya yenisini əlavə edə və ya silə bilərsiniz (repozitoriya ağıllıca belə adlanır). mövcud fayl, və VCS nə vaxt və nə əlavə etdiyimizi/sildiyimizi "xatırlayacaq". Və tapşırıqlar zamanı şərhlər sayəsində siz bu xüsusi öhdəliyin nə üçün yerinə yetirildiyini də təsvir edə bilərsiniz (“orada bir lütf əlavə edildi”/“oradan lazım olan bir parça çıxarıldı”).
Nəhayət ki, bir həftə əvvəlki versiyaya qayıtmağın vaxtının gəldiyini başa düşdükdə, bütün dəyişikliklər tariximiz var. Və burada nə edəcəyimizi seçə bilərik. Lazımi parçanı köhnə fayldan köçürmək və cari versiyaya yapışdırmaq lazımdırsa, sadəcə köhnə faylı yaddaşdan çıxarın və ondan lazım olanı kopyalayın. Tamamilə geri dönmək və işləməyə davam etmək lazımdırsa köhnə versiya SKV yenidən köməyimizə gəlir - bir həftə əvvəl versiyaları geri çəkərək "təslim etdiyimiz" hər şeyi saxlayaraq, əvvəlki versiyaya qayıda və sözdə yeni filial ("filial") yarada bilərsiniz. Beləliklə, layihə versiyalarının tarixi qrafik olaraq ağac kimi təqdim edilə bilər - "köklərdən" (layihənin başlanğıcı) "budaqlara" (uğurlu və uğursuz redaktələrə). Bundan əlavə, bir "filial" da süni şəkildə yaradıla bilər, məsələn, eyni mənbə fayllarından ikisini inkişaf etdirməyə qərar verdiyimiz halda müxtəlif versiyalar– birincidə bəzi çubuqlar üzərində işləyirik, ikincidə digərləri üzərində işləyirik. Üstəlik, əgər işləyən fayllar varsa mətn sənədləri(və bəzilərində) müxtəlif filialları birinə - sözdə birləşməyə birləşdirmək mümkündür. İndi təsəvvür edək ki, layihə üzərində bir neçə nəfər işləyir və hər kəs öz “babyası” üzərində işləyir. Bu vəziyyətdə ümumi bir depoya sahib olmaq inkişafı çox asanlaşdırır.

Nəzəriyyədən təcrübəyə və ya SLE-dən istifadə etməyə başlayın

Beləliklə, ümid edirəm ki, sizi SLE-dən istifadə etməyin yaxşı bir şey olduğuna inandırdım. Yalnız VCS-dən necə istifadə edəcəyinizi öyrənmək qalır. Bizim edəcəyimiz budur.
Bir-birindən fərqlənən müxtəlif versiya idarəetmə sistemləri var müxtəlif aspektləri istifadə edin. İşin incəlikləri bizi (ən azı ilk vaxtlar) maraqlandırmadığı üçün müxtəlif sistemlər, gəlin onlardan ən sadə və dostcasına diqqət edək. Mənim təvazökar fikrimcə, belə bir sistem, qəribə də olsa, Mercurial - "üçün hazırlanmış çarpaz platforma paylanmış versiyaya nəzarət sistemidir. səmərəli işçox böyük kod depoları ilə" TortoiseHg qrafik qabığı ilə. Sistem Windows, Linux və Mac OS X altında istifadə edilə bilər.
İcazə verin, Windows-da sistemlə işləməyi təsvir edəcəyəm dərhal rezervasiya edim. Linux-u mənimsəyənlər üçün hər şeyi analogiya ilə öyrənmək çətin olmayacaq.
Bundan əlavə, eyni zamanda onunla işləməyi öyrənəcəyik pulsuz hosting Mercurial repositories - bitbucket.org, əgər siz tək bir layihə üzərində işləmirsinizsə və ya çox rahatdırsa, İnternet vasitəsilə layihənin bütün versiyalarına daxil olmaq istəyirsinizsə lazımdır. Əslində, əvvəllər istifadə etmisinizsə, bu, əlverişli bir dropbox əvəzidir.
Əvvəlcə Mercurial + TortoiseHg-ni buradan quraşdırın: tortoisehg.bitbucket.org.
Bu sistem konsolda işləyir, ona görə də istifadə rahatlığı üçün bir neçə * yazacağıq. bat faylı ov tipik əməliyyatlar üçün.
Bütün əməliyyatlar hg əmri ilə yerinə yetirilir. Parametrlər olmadan çağırılır, əsas əmrlərin siyahısını göstərir.
Repozitor bizim seçdiyimiz istənilən kataloqdur (“C:\project\” qovluğundan istifadə edəcəyəm), orada gələcək layihəmizin bütün faylları saxlanılmalıdır. Əlbəttə ki, heç kim bir kompüterdə bir neçə repozitoriyanın olmasını qadağan etmir.
Sistemin bir anbar yaratmaq istədiyimizi "başa düşməsi" üçün əmri icra edirik:
hg init c:\project
bundan sonra, əgər əvvəllər yaradılmayıbsa, “c:\project\” qovluğu və Mercurialın bütün xidmət məlumatlarını saxlayacağı “c:\project\.hg\” qovluğu yaradılacaq.
Dərhal xatırlayırıq ki, kompüterimizdə təkcə yerli repozitoriya deyil, həm də bütün dəyişikliklərimizi göndərəcəyimiz uzaq bir anbar əldə etmək istəyirik (və ya ağıllı adamların dediyi kimi, dəyişiklikləri uzaq bir depoya "itələyin". İngilis "push"). Bunu etmək üçün bitbucket.org saytına daxil olun, qeydiyyatdan keçin və ilk repozitoriyanızı yaradın (Repositories - Create new repository). Repozitoriyaya ad verin (mən onu konkret olmaq üçün remote_project adlandıracağam) və "Repository Yarat" üzərinə klikləyin.
İndi bizim iki repozitorumuz var - yerli "c:\project\" qovluğunda və uzaqdan biri, "bitbucket.org/your_account_name/remote_project/" ünvanında yerləşir, burada sizin_hesab_adınız bitbucket-də qeydiyyatdan keçərkən qeyd olunandır, remote_project - yaradılan zaman seçilmiş deponun adıdır.
Kəşfiyyata davam etmək üçün yerli depomuza nəyisə itələməliyik. Sadəcə orada (mənim vəziyyətimdə, “c:\project\” qovluğunda) gələcək layihənizin istənilən faylını yaradın və ya hazırkı layihənizi oraya köçürün.
İndi, dəqiq desək, Mercurial-a deməliyik: "biz layihə qovluğuna belə və belə faylları və bir neçə yeni qovluq əlavə etdik", bunun üçün "hg əlavə et" əmri verilir. Bununla belə, başqa bir yanaşma daha rahatdır - növbəti öhdəlikdə Mercurial-a deyəcəyik ki, layihə qovluğundan bütün yeni yaradılmış faylları götürsün və silinənləri unutsun, bu, “hg add c:\project\new_document” etməkdən daha asandır. .doc" hər dəfə yeni sənəd yaratdığınız zaman "
Beləliklə, ilk öhdəliyimizə keçək. Aşağıdakı əmrlə yerinə yetirilir:
hg commit –A –m “comment tocommit”
Gəlin hər şeyə qaydasında baxaq. Biz depoda olanda əmr daxil edilməlidir (yəni ilk olaraq “cd c:\project”i icra etməliyik). "-A" seçimi Mercurial üçün yeni yaradılmış faylları "götürmək" üçün lazımdır (yuxarıya baxın), "-m" seçimi öhdəliyə şərh əlavə etməyə imkan verir. Bu şərhlər TortoiseHg-də və bitbucket.org-da layihə səhifəsində versiyalara (və ya dəyişikliklər dəstləri - dəyişikliklər siyahılarına) baxarkən göstəriləcək. Bu və ya digər redaktənin nə vaxt edildiyini xatırlayaraq, sonradan əziyyət çəkməmək üçün mənalı şərhlər vermək çox vacibdir.
İndi depomuz layihəmizin ilkin versiyasını saxlayır. Cari versiyanı saxlamağın vaxtının gəldiyinə qərar verdikdən sonra bütün sonrakı öhdəliklər eyni şəkildə yerinə yetirilir.
Tamamlanmış öhdəliyi komanda ilə uzaq depoya "itələmək" olar:
hg push https://bitbucket.org/your_account_name/remote_project
Bu halda, siz də depoya uyğun qovluqda olmalısınız. Əmri daxil etdikdən sonra sizdən bitbucket.org saytındakı hesabımızın adı və şifrəsi istəniləcək ki, onları hər təkanla daxil etməmək üçün əmri aşağıdakılarla əvəz etmək olar:
hg push hg push https://hesabınızın_adınız:hesabınızı[email protected]/your_account_name/remote_project
Bütün əmrləri *.bat faylına yazacağımız üçün, bu halda parol saxlanılacaq açıq forma, bu bir az təhlükəsizlik riskidir, lakin mənim üçün məqbuldur.
Beləliklə, rahatlıq üçün biz birbaşa əlaqə sahəsində commit.bat, push.bat və commit&push.bat fayllarını aşağıdakı məzmunla yaradırıq:
[commit.bat faylının məzmunu]
ƏGƏR !%1==! çıxın 1
cd C:\layihə
hg commit -A -m "%*"
çıxın0
:çıxış1
əks-səda "ARG ƏMƏR XƏTTİ YOX!"
:çıxış0
Arqumentlərlə adlandırılan bu fayl layihəni şərhlərə daxil edilmiş arqumentlərlə öhdəliyə götürəcək. Nümunə: “commit.bat my first commit” əmrini yerinə yetirin və “ilk öhdəliyim” şərhi ilə öhdəlik götürün. FAR-da bunun üçün Ctrl+Enter kombinasiyasından istifadə etmək rahatdır.
[push.bat faylının məzmunu]
cd C:\layihə
hg push https://hesabınızın_adınız:hesabınızı[email protected]/your_account_name/remote_project
Bu fayl uzaq depoya itələyəcək.
[commit&push.bat faylının məzmunu]
ƏGƏR !%1==! çıxın 1
cd C:\layihə
hg commit -A -m "%*"
çıxın0
:çıxış1
əks-səda "ARG ƏMƏR XƏTTİ YOX!"
:çıxış0
zəng edin./push.bat
Arqumentlərlə çağırılan bu fayl, öhdəliyə şərhlərdə daxil edilmiş arqumentlərlə layihənin ardıcıl öhdəliyi və təkanını həyata keçirəcək.
Bundan əlavə, kiçik aralıq öhdəliklər üçün commit_date_time.bat faylı yaratmağı tövsiyə edirəm:
[commit_date_time.bat faylının məzmunu]
cd C:\layihə
hg commit -A -m "%DATE% %TIME%"
Bu fayl tez-tez əlverişli olan şərh kimi cari tarix və saatı qeyd edəcək.
Hər kəs edilən redaktələrin intensivliyindən və mürəkkəbliyindən asılı olaraq, tapşırıqların tezliyi və təkanları fərdi olaraq qərar verir. Baxmayaraq ki, "daha tez-tez daha yaxşıdır" qaydasına riayət etmək tövsiyə olunur.
Repozitoriya faylı/qovluğu üzərinə sağ klikləməklə, siz Repository Explorer-ı (TortoiseHg - Repository Explorer) işə sala bilərsiniz ki, bu da bütün öhdəliklərimizi onlara şərhlərlə təqdim edir. Bu pəncərə bizim deponun ağac strukturunu göstərir; buradan siz öhdəliyi yerinə yetirə, əvvəlki versiyalara geri çəkə bilərsiniz (backouts) və digər əməliyyatları.
Bitbucket.org/your_account_name/remote_project saytında oxşar dəyişikliklər dəsti var və siz layihənin istənilən versiyasını bir arxivə yükləyə bilərsiniz, bu da bəzən çox rahatdır.
Ümumiyyətlə, bunu Merkurial ilə ilk tanışlığımın sonu hesab edirəm. Daha çoxu üçün ətraflı məlumat bu ünvandan əldə etmək olar: translated.by/you/mercurial-the-definitive-guide/into-ru/trans/

Bu məqalə kimin üçündür?

Yəqin ki, başlamalı olduğum şeylə bitirəcəyəm – bu məqalə kimin üçündür? Cavab sadədir - sabit valyutadan necə istifadə etməyi öyrənmək istəyənlər üçün. Mən bir neçə dizayneri, mühəndisi və hətta yazıçını VCS-ə bağlaya bildim. Siz də cəhd edin - bu, yəqin ki, işinizi xeyli asanlaşdıracaq.

P.S. “Versiya İdarəetmə Sistemləri” bloquna köçürüldü.

Teqlər: Teqlər əlavə edin

Versiyaya nəzarət sistemi ( Versiyaya Nəzarət Sistemi, VCS) sənədlərdə dəyişiklikləri izləməyə, lazım gəldikdə onları geri qaytarmağa, kimin və nə vaxt düzəlişlər etdiyini müəyyən etməyə və s. imkan verən proqramdır. Məqalədə növləri müzakirə olunur VCS, onların fəaliyyət prinsipləri, habelə nümunələr proqram məhsulları.

Versiyaya nəzarət sistemi nədir?

Yəqin ki, hər kəs bir layihə üzərində işləyərkən dəyişiklik etmək zərurəti yarandıqda vəziyyətlə tanışdır, lakin eyni zamanda işlək versiyanı saxlamaq lazımdır, bu halda, bir qayda olaraq, yeni bir qovluq yaradılır, böyük ehtimalla adı tarix və ya kiçik qeyd əlavə edilməklə “Yeni Qovluq” olacaq, işlək versiya layihə və bununla bağlı artıq iş aparılır. Zamanla bu cür qovluqların sayı əhəmiyyətli dərəcədə arta bilər ki, bu da əvvəlki versiyalara qayıtmaqda, dəyişiklikləri izləməkdə və s. çətinliklər yaradır. Bir layihə üzərində birdən çox adam işləyəndə bu vəziyyət daha da pisləşir.

Bu cür problemləri həll etmək üçün bir versiyaya nəzarət sistemi istifadə olunur, bu, həm fərdi, həm də komanda şəklində bir layihə üzərində rahat işləməyə imkan verir; VCS fayllardakı dəyişiklikləri izləyir, yeni yaratmaq və layihənin mövcud filiallarını birləşdirmək imkanlarını təmin edir, istifadəçinin layihəyə girişinə nəzarət edir, düzəlişləri geri qaytarmağa və layihəyə kimin, nə vaxt və hansı dəyişikliklərin edildiyini müəyyən etməyə imkan verir. Əsas konsepsiya VCS depodur ( anbar) – dəyişiklikləri izlənilən layihə faylları və qovluqlarının xüsusi saxlanması. Tərtibatçının ixtiyarında sözdə "işləyən nüsxə" var ( işləyən nüsxə) bilavasitə işlədiyi layihənin. İş nüsxəsi vaxtaşırı repozitoriya ilə sinxronlaşdırılmalıdır, bu əməliyyat istifadəçinin iş nüsxəsində etdiyi dəyişiklikləri ona göndərməyi nəzərdə tutur (bu əməliyyat deyilir törətmək) və iş nüsxəsinin yenilənməsi, bu müddət ərzində depodan ən son versiya istifadəçiyə yüklənir (bu proses adlanır yeniləmə).

Mərkəzləşdirilmiş və paylanmış versiyaya nəzarət sistemləri

Versiya idarəetmə sistemlərini iki qrupa bölmək olar: paylanmış və mərkəzləşdirilmiş.

Mərkəzləşdirilmiş versiyaya nəzarət sistemləri

MərkəzləşdirilmişVersiyaya nəzarət sistemləri müştəri-server proqramlarıdır, burada layihə deposu bir nüsxədə mövcuddur və serverdə saxlanılır. O, xüsusi müştəri proqramı vasitəsilə əldə edilib.Bu cür proqram məhsullarına misal olaraq: CVS, Təxribat.

CVS (Paralel versiyalar sistemi, Sinxron versiyalar sistemi) keçən əsrin 80-ci illərinin sonlarında yaranan tərtibatçılar arasında geniş yayılmış ilk sistemlərdən biridir; Hal-hazırda bu məhsul hazırlanmır, bu, ilk növbədə, faylların adının dəyişdirilməsinin mümkünsüzlüyü, səmərəsiz saxlama, praktiki olaraq bir sıra əsas çatışmazlıqlarla bağlıdır. tam yoxluğu bütövlüyünə nəzarət.

Təxribat (SVN) – əvəz etmək üçün yaradılmış versiyaya nəzarət sistemi CVS. SVN 2004-cü ildə hazırlanmış və bu gün də istifadə olunur. ilə müqayisədə bir çox üstünlüklərə baxmayaraq CVS saat SVN Yenə də çatışmazlıqlar var, məsələn, adının dəyişdirilməsi ilə bağlı problemlər, məlumatların depodan silinə bilməməsi, filialların birləşməsinin işində problemlər və s. Ümumiyyətlə SVN ilə müqayisədə irəliyə doğru əhəmiyyətli bir addım idi (və qalır). CVS.

Paylanmış versiyaya nəzarət sistemləri

Paylanmış versiyaya nəzarət sistemləri ( Paylanmış Versiya İdarəetmə Sistemi, DVCS) bu sistemlə işləyən hər bir tərtibatçı üçün bir depo (onun surətini) saxlamağa imkan verir. Bu halda, yerli olanlardan dəyişikliklərin göndəriləcəyi və onunla birlikdə bu yerli depoların sinxronlaşdırılacağı mərkəzi repozitoriya (şərti olaraq) seçə bilərsiniz. Belə bir sistemlə işləyərkən istifadəçilər vaxtaşırı öz yerli depolarını mərkəzi ilə sinxronlaşdırır və bilavasitə yerli surəti ilə işləyirlər. Yerli nüsxədə kifayət qədər dəyişikliklər etdikdən sonra onlar (dəyişikliklər) serverə göndərilir. Bu halda, server ən çox şərti olaraq seçilir, çünki əksəriyyətdə DVCS"mərkəzi depoya malik xüsusi server" kimi bir şey yoxdur.

Bu yanaşmanın böyük üstünlüyü layihə üzərində işləyərkən tərtibatçının müstəqilliyi, çevikliyidir ümumi sistem və hər bir tərtibatçının mərkəzi deponun yerli nüsxəsinə malik olmasını təmin etməklə etibarlılığı artırdı. Ən məşhur ikisi DVCS- Bu GitMerkuri.

ilə başlayaq Merkuri, bu sistem pulsuzdur DVCS, elə qurulmuşdur ki, bununla işləmək üçün mərkəzi depo anlayışı yoxdur VCS istifadə olunur (adətən) konsol yardım proqramı hg. Merkuri budaqlanma, birləşmə, digər depolarla sinxronizasiya kimi versiyaya nəzarət sisteminin bütün imkanlarına malikdir. Bu layihə istifadə və dəstək çoxlu sayda onların arasında əsas tərtibatçılar Mozilla, OpenOffice, OpenJDK və bir çox başqaları. Məhsulun özü yazılıb Python və ən müasir versiyalarda mövcuddur əməliyyat sistemləri (Windows, MacOS, Linux), ilə də əhəmiyyətli sayda kommunal xidmətlər var qrafik interfeys ilə işləmək Merkuri. Əsas rəqib Merkuri paylanmış versiya idarəetmə sistemləri bazarındadır Git, bu günə qədər liderlik yarışında qalib gəlmişdir.

Git– əməliyyat sisteminin nüvəsi üzərində işləmək üçün Linus Torvalds tərəfindən hazırlanmış paylanmış versiya idarəetmə sistemi Linux. arasında böyük layihələr, daxilində istifadə olunur git, nüvəni seçə bilərik Linux, Qt, Android. Git pulsuz və lisenziya əsasında paylanır GNU GPL 2 və eləcə də Merkuri, demək olar ki, bütün əməliyyat sistemlərində mövcuddur. Özlərinə görə əsas imkanlar git oxşar Merkuri(və qeyriləri DVCS), lakin bir sıra üstünlüklər sayəsində ( yüksək sürət iş, başqaları ilə inteqrasiya etmək bacarığı VCS, istifadəçi dostu interfeys) və bu sistem ətrafında formalaşmış çox fəal icma, git paylanmış versiyaya nəzarət sistemlərində bazar lideri oldu.kimi sistemlərin böyük populyarlığına baxmayaraq qeyd etmək lazımdır git, iri korporasiyalar kimi Google, istifadə edin VCS.

Bu, versiyaya nəzarət sistemləri haqqında giriş mühazirəsi idi. Aşağıda, bütün təqdimat yalnız aid olacaq git.

İstəsəniz video mühazirələrdən öyrənin, onda biz əla kurs tövsiyə edirik git-dan GeekBrains , getmək keçid və kursu “Kurslar” bölməsində tapın Git. Sürətli başlanğıc". O pulsuz, sadəcə saytda qeydiyyatdan keçmək lazımdır. Bu resursla daha yaxından tanış olmağı məsləhət görürük, orada daha çox maraqlı şeylər var!

Proqram təminatının inkişafı ilə bağlı əla yeni biznes ideyanız varmı?Texnoloji cəhətdən mürəkkəb bir həll hazırlamağa ehtiyacınız varmı? Yoxsa eyni tapşırıq üzərində işləyən böyük bir proqramçı komandanız var? Sonra bu üç sözü xatırlayın:versiyaya nəzarət sistemi .

Versiyaya nəzarət sistemi (cvs), 2017 - Müqayisə edin: Git, SVN, Mercurial

, və ya vcs- bu, bir çox insan işlədiyi zaman bir layihənin dağılmasına mane olan şeydir. Proqramçılar, menecerlər, kopirayterlər bir-birinə müdaxilə etmədən və düzəldilə bilməyən zərərlərə yol vermədən hər biri öz əsəri üzərində işləyə bilər.

Əgər konsepsiya ilə hələ tanış deyilsinizsəversiyaya nəzarət sistemləri, sonra burada hər şey çox aydın şəkildə göstərilir.

Və ya GitHub-dan videoya baxın.

Beləliklə, layihəniz üçün hansı versiyaya nəzarət sistemi uyğundur?

Seçiminizi asanlaşdırmaq üçün bir neçə məşhur həlli müqayisə etdik.

Bu yüksək ixtisaslaşmış texniki mövzudur. Rəyimizi hər kəs üçün başa düşülən etməyə çalışdıq. Ancaq proqramlaşdırma təcrübəniz yoxdursa, qərar qəbul etməzdən əvvəl inkişaf departamentinizlə məsləhətləşin.

Versiya nəzarət sistemləri, o cümlədən tanınmış SVN (Subversion) və Git, əvvəlcə inkişaf qruplarına işləmək imkanı vermək üçün yaradılmışdır. birgə layihələrçaşqınlıq yaratmadan. Nəzarət sistemində kod filiallarını müstəqil izləmək və onlara qeydləri öyrənmək lazım deyil. Bunun əvəzinə, hər şeyin təşkil edildiyi və strukturlaşdırıldığı bir mərkəzi depo istifadə olunur. Burada faylları yeniləmək, şərhlər əlavə etmək və hətta layihə filiallarını birləşdirmək rahatdır.

Nə ilə bağlı fikirlərversiyaya nəzarət sistemiən yaxşı, çox dəyişir və bu gətirib çıxarır qızğın mübahisə proqramçılar arasında. Seçmək və öyrənməkversiyaya nəzarət sistemlərilayihəniz üçün xüsusi bir həllin faydalarının çox vaxt subyektiv olduğunu unutmayın. Məsələn, proqramçının şəxsi üstünlükləri və ya məsələn, performans, IDE plaginlərinin imkanları və s.

Versiya idarəetmə sistemləri arasındakı əsas fərq onların müştəri-server və ya mərkəzləşdirilməmiş olmasıdır (p2p). Onların kodun gəldiyi və qayıtdığı mərkəzi depo (server) varmı? dəyişikliklər edilib. Yoxsa həmyaşıdları vasitəsilə yenilənən yerli yaddaşdakı bir nüsxədir: daha çox mərkəzləşdirilməmiş şəbəkə, sinxronizasiya, yamaqların mübadiləsi (dəyişmə dəstləri) və cari kodu saxlamaq üçün istifadə olunur.

Sürəti, funksionallığı və müəyyən bir işə giriş / mənimsəmə həddini də nəzərə almağa dəyər.nəzarət sistemləri. Ən ümumi olanlara baxaqversiyaya nəzarət sistemlərivə proqramçıların müəyyən həlləri üstün tutmasının səbəbləri.

Sinxron versiya sistemi (CVS)

CVS 1980-ci illərdə ortaya çıxdı və hələ də həm kommersiya məhsulu tərtibatçıları, həm də açıq mənbə tərtibatçıları arasında populyardır.

CVS şərtlərlə paylanırGNU Açıq Lisenziya Müqaviləsi və serverdən geri götürməyə imkan verir tələb olunan versiya layihə -"çıxış" (çıxarış) , və sonra onu yenidən serverə göndərin, "qeydiyyat" (qaytarma),edilən dəyişikliklərlə.

Əvvəlcə CVS versiya münaqişələrinin qarşısını almaq üçün yaradılmışdır. Bütün iştirakçılara işləmək üçün kodun yalnız ən son versiyası təqdim edildi. Bu, ilk versiya idarəetmə sistemi idi. Başqaları onu döyməzdən əvvəl istifadəçi repozitoriyada tez bir zamanda dəyişikliklər etməli idi.

İndi CVS kod filialları ilə layihələr üzərində işləmək üçün dəstək var. Bu, bir neçə məhsul variantı ilə nəticələnir fərqli xüsusiyyətlər, sonradan birləşdirilə bilər.

CVS serverləri adətən Unix altında çalışır, lakin CVS -müştərilər digər məşhur əməliyyat sistemlərində də mövcuddur. CVS - "yetkin", zamanla sınaqdan keçirilmişdirversiyaya nəzarət sistemi. Hələ də açıq mənbə sistemidir, lakin bu gün yeni funksiyalar olduqca nadir hallarda əlavə olunur.

Eyni zamanda, CVSNT ayrı bir layihəyə ayrılmış bir versiyadır CVS üçün Windows serverləri, - indi funksionallığını kifayət qədər fəal şəkildə genişləndirir.

Üstünlükləri:

  • Onilliklər ərzində bazarda olan zamanla sınaqdan keçirilmiş texnologiya.

Qüsurlar:

  • Faylların adının dəyişdirilməsi və ya köçürülməsi tarixdə əks olunmur
  • Fayllara simvolik bağlantılarla əlaqəli təhlükəsizlik riskləri
  • Kodların pozulmasına səbəb ola biləcək atom əməliyyatlarına dəstək yoxdur
  • Filiallarla əməliyyatlar proqram kodu baha, bu kiminəzarət sistemikod filialları ilə uzunmüddətli layihələr üçün nəzərdə tutulmayıb

Apache Subversion (SVN)

SVN alternativ kimi yaradılmışdır CVS çatışmazlıqları düzəltmək üçün CVS və eyni zamanda onunla yüksək uyğunluğu təmin edir.

CVS kimi SVN pulsuz sistemdir versiyaya nəzarət açıq mənbə. Yeganə fərq odur ki, o, Apache lisenziyası altında yayılır, altında deyilAçıq Lisenziya müqaviləsi GNU.

Verilənlər bazasının bütövlüyünü qorumaq üçün SVN sözdə atom əməliyyatlarından istifadə edir. Yeni versiya buraxıldıqda, düzəlişlərin hamısı və ya heç biri son məhsula tətbiq edilmir. Beləliklə, kod bir-birinə uyğun gəlməyən və xətalara səbəb olan xaotik qismən redaktələrdən qorunur.

Bir çox tərtibatçı buna keçdiSVN çünki yeni texnologiya daha yaxşı imkanları miras aldı CVS və eyni zamanda onları genişləndirdi.

CVS-də olarkən kod filialları ilə əməliyyatlar bahalıdır və sistem arxitekturası tərəfindən təmin edilmir SVN məhz bunun üçün yaradılmışdır; Yəni kod budaqlanması və bir çox inkişaf sahələri ilə daha böyük layihələr üçün.

SVN-nin çatışmazlıqları müqayisəli şəkildə qeyd olunur aşağı sürət və çatışmazlıq paylanmış nəzarət versiyaları. Paylanmış versiyaya nəzarət proqram kodu yeniləmələrini saxlamaq üçün mərkəzləşdirilmiş serverdən çox peer-to-peer modelindən istifadə edir. Peer-to-peer modeli açıq mənbəli layihələrdə daha yaxşı işləsə də, digər hallarda ideal deyil. Server tərəfi yanaşmanın dezavantajı odur ki, server qəzaya uğradıqda müştərilərin koda çıxışı olmur.

Üstünlükləri:

  • Sistem əsaslı CVS
  • Atom əməliyyatlarına imkan verir
  • Kod şaxələmə əməliyyatları daha ucuzdur
  • IDE plaginlərinin geniş seçimi
  • Peer-to-peer modelindən istifadə etmir

Qüsurlar:

  • Səhvlər hələ də davam edir faylların və qovluqların adının dəyişdirilməsi ilə bağlıdır
  • Repozitoriya ilə işləmək üçün qeyri-qənaətbəxş əmrlər dəsti
  • Nisbətən aşağı sürət

Git

Bu sistem inkişafı idarə etmək üçün yaradılmışdır Linux nüvələri və CVS və SVN-dən tamamilə fərqli bir yanaşmadan istifadə edir.

Əsas Git daha sürətli paylanmaq üçün anlayışlar qoyulmuşdurversiyaya nəzarət sistemi, istifadə olunan qaydalar və həllərdən fərqli olaraq CVS . Git əsasən Linux üçün işlənib hazırlandığından o, bu ƏS-də ən sürətli işləyir.

Git həmçinin Unix-ə bənzər sistemlərdə (MacOS kimi) işləyir və işləmək üçün Windows platforması mSysGit paketindən istifadə olunur.

Anbarı olmayan kompüterdən istifadə edərkən proqram kodu mövcud olmaya bilər. Bu problemin həlli yolları var və bəzi tərtibatçılar hesab edirlər ki, Git-in sürəti narahatlığa görə ədalətli qiymətdir.

Git də dəyişiklik tarixçənizi idarə etmək üçün bir çox alətə malikdir. Mənbə kodunun hər bir işçi nüsxəsi bütün inkişaf tarixini ehtiva edir ki, bu da İnternet bağlantısı olmadan proqramlaşdırma zamanı olduqca faydalıdır.

Üstünlükləri:

  • Nifrət edənlər üçün əladır CVS/SVN
  • Performansda əhəmiyyətli artım
  • Kod filialları ilə ucuz əməliyyatlar
  • Tam inkişaf tarixçəsi oflayn mövcuddur
  • Paylanmış, həmyaşıd model

Qüsurlar:

  • Əvvəllər SVN-dən istifadə edənlər üçün giriş (öyrənmə) üçün yüksək maneə
  • Məhduddur Windows dəstəyi(Linux ilə müqayisədə)

Merkuri

Merkuri Git ilə eyni vaxtda buraxıldı. eynidir paylanmışdır versiyaya nəzarət sistemi.

Mercurial Linux nüvə modullarını inkişaf etdirmək üçün Git-ə alternativ olaraq yaradılmışdır. Amma biz Git-i seçdiyimiz üçün Mercurial daha az istifadə olunur. Bununla belə, məsələn, bir çox aparıcı tərtibatçı bu sistemlə işləyirOpenOffice.org .

Mercurial-ın versiyaya nəzarət sistemi digərlərindən fərqlidirversiyaya nəzarət sistemləriçünki əsasən Python (C deyil) ilə yazılmışdır. Bununla belə, bəzi hissələr C-də genişləndirmə modulları kimi həyata keçirilir.

Sistem mərkəzləşdirilməmiş və Python dilində yazıldığından, bir çox Python proqramçıları Mercurial-a keçməyə meyllidirlər.

İstifadəçilər qeyd edirlər ki, Mercurial mövcud olarkən SVN-nin bəzi xüsusiyyətlərini saxlayır paylanmış sistem, və bu oxşarlığa görə, SVN ilə artıq tanış olanlar üçün giriş üçün daha aşağı maneə var. Mercurial-ın sənədləri də daha dolğundur və bu, fərqlərə daha tez öyrəşməyə kömək edir.

Biri əhəmiyyətli çatışmazlıqlar Mercurial odur ki, Git-dən fərqli olaraq iki ana filialı birləşdirə bilməz, çünki Mercurial skript dəstəyi əvəzinə plagin sistemindən istifadə edir. Bu, bəzi proqramçılar üçün əladır, lakin çoxları Git-in gücündən əl çəkmək istəmir.

Üstünlükləri:

  • Git ilə müqayisədə öyrənmək daha asandır
  • Ətraflı sənədlər
  • Paylanmış modelversiyaya nəzarət sistemləri

Qüsurlar:

  • İki ana filialı birləşdirmək imkanı yoxdur
  • Skriptlərdən çox plaginlərdən istifadə edin
  • Qeyri-standart həllər üçün daha az imkanlar

Hansıversiya nəzarəti mənim üçün işləyir?

Əksər hallarda tərtibatçılar istifadə edirlər CVS çünki bu onlara daha çox tanışdır. Bir komanda artıq bir layihə üzərində işləyirsə, bütün inkişafları digərinə köçürmək perspektivinəzarət sisteminədənsə ruhlandırıcı deyil. Əgər onlar sistemi dəyişməli olsalar, çox güman ki, SVN-ə keçəcəklər.

CVS artıq “yetkin texnologiya” statusuna çatıb, bu o deməkdir ki, köklü yeni funksiyalar və həllər artıq orada görünməyəcək. İnsanlar SVN-ə köçdükcə vərdişin sürəti itir. Bu o deməkdir ki, CVS tədricən keçmişə çevrilir.

Bu gün SVN server serverləri arasında xurma tuturversiyaya nəzarət sistemləri. Buraya üstünlüklər daxildir CVS və onları üstələyir. Əgər yayılma haqqında danışsaq, çox güman ki, daha tez-tez qarşılaşacaqsınız CVS və ya SVN Git və ya Mercurial ilə müqayisədə. Beləliklə, bir server texnologiyası haqqında bilik, vacib olmasa da, keçidinizi asanlaşdıracaq.

Texnologiyanın geniş yayılması və yetkinliyi sayəsində SVN toplandı böyük baza bilik, istifadəçilərin kömək almasını asanlaşdırır.

Git rəqiblərindən daha sürətlidir. Paylanmış layihələr üçünversiyaya nəzarət sistemləri, bu açıq-aydın inkişafdır.

Git-in əhəmiyyətli çatışmazlığı ondan ibarətdir ki, onun necə işlədiyinin nüanslarını izah etmək bəzən çətin olur.nəzarət sistemləri, və bu, proqramçılar buna öyrəşərkən iş axınını ləngidir. Bununla belə, “giriş həddi” keçdikdən sonra məhsuldarlıq artır və kod filiallarının idarə edilməsinin rahatlığı sərf olunan vaxtı tam şəkildə qaytaracaq.

Git-ə nifrət edənlər üçün (və onu tərtibatçılar arasında pisləyənlər var), Mercurial SVN və Git arasında bir kompromisdir. Bu sistem bir çox məşhur layihələrdə istifadə olunur və yaxşı sənədlərə malikdir.

Git-in Windows-a uyğun versiyası da Linux versiyasının sürətinə doğru irəliləyir, ona görə də Linux-da inkişaf etməsəniz belə, bu sizin üçün uyğun ola bilər.

Hansının sizin üçün daha yaxşı olduğunu başa düşmək üçün layihənin və komandanızın xüsusiyyətlərini nəzərə alın. Tərtibatçılarla danışın!

Əgər layihə kiçik bir proqramçı qrupu tərəfindən işlənəcək tək mənbə kodu ağacı tələb edirsə, SVN sizin seçiminizdir. Etibarlıdır və məhz belə hallar üçün nəzərdə tutulmuşdur.

Əgər siz açıq mənbəli layihəni işə salırsınızsa, bunun üzərində fərqli vaxt bir neçə proqramçı işləyəcək və ya gözlənilən halda daimi yeniləmə kodu, sonra Git seçin. Sürət və mənbə ağacının idarə edilməsi burada SVN-dən daha yaxşıdır.

Əgər yol ayrıcındasınızsa və ya sadəcə SVN və ya Git-in işini bəyənmirsinizsə, Mercurial sizin üçündür.

Bütün bu sistemlər tam işləkdir. Həm də pulsuz. Onlar yaratmaq üçün istifadə olunur proqram təminatı, istifadə etdiyiniz və tanış olduğunuz saytlar və hətta əməliyyat sistemləri.

Əvvəlcə bu və ya digərinin uyğun olub olmadığına qərar verinnəzarət sistemiişiniz üçün versiyalar və sonra - eyni dərəcədə vacibdir - əmin olun ki, bu seçim proqramçıları hiddətləndirməyəcək.

SVN ilə başlayın

Əgər SVN və ya Git ilə heç vaxt işləməmisinizsə və necə başlamaq barədə heç bir fikriniz yoxdursa, o zamanGUI ilə birləşdirilmiş hosting həllitez alışmağınıza kömək edəcək.

Əksər hallarda olduğu kimi, ən başlıcası işə başlamaqdır, sonra anlayış gələcək. Versiyaya nəzarət sistemini idarə etmək FTP müştərisindən istifadə edərək serverdəki fayllarla işləməyə çox bənzəyir.

QEYD:üçün çoxlu hosting həlləri varversiyaya nəzarət sistemləri, o cümlədən pulsuz sınaq müddəti. Siz onlara əsaslanaraq ilk repozitorunuzu yarada bilərsiniz (yer əməkdaşlıq kod faylları ilə) tamamilə pulsuzdur. Bu xidmətlərdən bəziləri:

SVN və GIT Hosting

İlk deponun yaradılması

Hesab yaratdıqdan sonra hər bir platforma üçün ayrıca bir depo yaratmalısınız. Adətən belə görünür:

  • Hesabınıza daxil olun, layihələrinizə klikləyin.
  • Layihənin yaradılması:
  • “Yeni layihə yarat” sətrində layihənizin adını daxil edin
  • "Layihə yarat" düyməsini basın
  • SVN bağlantısı:
  • Layihəni yaratdıqdan sonra "Mənbəyə nəzarət" sekmesini seçin (mənbə kodu versiyaları)
  • "Mənbəyə nəzarəti aktivləşdir" linkinə klikləyin
  • Anbara bir ad verin
  • "Saxla" düyməsini basın

Qrafik müştərilər SVN və GIT

Beləliklə, repozitoriya yaradıldı. İndi bizə hər şeyin sadə və aydın şəkildə göstərilməsinə ehtiyacımız var. Bunu etmək üçün sizə GUI lazımdır.

rahat proqram ilə işləməkversiyaya nəzarət sistemləriMicrosoft Windows və bəlkə də mövcud olan ən yaxşı Apache Subversion müştəri. TortoiseSVN əlavə olaraq həyata keçirilir Windows qabığı, inteqrasiya etməyi asanlaşdırır brauzer. O, həmçinin 34 dil paketi olan açıq mənbə proqramıdır

SmartGit

– Git qrafik müştərisi ( Açıq mənbə paylanmışdırversiyaya nəzarət sistemi). Windows, Mac OS X və Linux-da işləyir.Lisenziya qiyməti - 39 dollar

Repozitoriya "yoxlanılır" ("Yoxla")

Beləliklə, müştəri seçildi. İndi nəzarət sistemi üçün bir depo yaratmalısınız. Daxil etmək lazımdırSizin depo URL, istifadəçi adı və parol.

URL adətən belə görünür:https://svn .hostname.com/svn/ > (əgər varsa https:// (SSL) istifadə edə bilərsiniz ödənişli hesab)

  1. Getmək kök qovluğu, "Check Out" düyməsini basın və yaradın iş qovluğu müştəri üçün. İndi ona fayllar əlavə edə bilərsiniz.
  2. Layihə faylları çıxarıldıqdan sonra onları kompüterinizdə yerli kataloqda redaktə edə bilərsiniz.

Fayllara dəyişikliklər etdikdən sonra onları saxlamaq üçün alətlər panelində Qeydiyyat düyməsini sıxın. Dəyişikliklərə baxa və onlara şərhlər əlavə edə bilərsiniz - bu olduqca yaxşıdır yaxşı fikir, çünki gələcəkdə nə üzərində işlədiyinizi, hansı dəyişikliklərin edildiyini dəqiq biləcəksiniz və digər layihə iştirakçılarını məlumatlandıracaqsınız.

Müştəriniz, həmçinin, istənilən vaxt təftiş jurnalını açaraq və ya tarixçəni dəyişdirməklə düzəlişlərlə işləməyə başlamaq imkanı təmin etməlidir - sonra, lazım gələrsə, "geri döndərə" bilərsiniz. əvvəlki versiya hər bir fayl üçün ayrıca. İndi əsas anlayışlar, sənədlərlə tanış olduğunuz üçün

RCS (Revision Control System) 1980-ci illərin əvvəllərində Walter F. Tichy tərəfindən hazırlanmışdır. Sistem yalnız bir faylın versiyalarını saxlamağa imkan verir, ona görə də birdən çox faylı əl ilə idarə etməlisiniz. Sistemin nəzarəti altında olan hər bir fayl üçün versiya məlumatları sonunda ",v" simvollarının əlavə olunduğu orijinal faylın adı ilə xüsusi faylda saxlanılır. Məsələn, file.txt faylı üçün versiyalar file.txt,v faylında saxlanılacaq. Versiyaları saxlamaq üçün sistem diff yardım proqramından istifadə edir, yəni yalnız versiyalar arasında dəyişikliklər saxlanılır.

RCS ilə seans nümunəsinə baxaq (bundan sonra $ işarəsi əməliyyat sistemi sorğusunu bildirir). RCS nəzarəti altında bir fayl qoymaq istədikdə ci əmrindən istifadə edirik (qeydiyyatdan, qeydiyyatdan):

$ci fayl.txt

Bu əmr fayl.txt,v faylı yaradır və silinir orijinal fayl file.txt (bunu etməməyinizi bildirmədiyi halda). Bu əmr həmçinin bütün saxlanılan versiyalar üçün təsvir tələb edir. Orijinal fayl sistem tərəfindən silindiyi üçün dəyişiklik etmək üçün onu geri tələb etməliyik. Bunu etmək üçün co əmrindən istifadə edirik (çıxışdan, nəzarətdən):

$ co fayl.txt

Bu əmr çıxarır son versiya faylımız file.txt,v . İndi file.txt faylını redaktə edə bilərik və dəyişiklikləri bitirdikdən sonra faylın yeni dəyişdirilmiş versiyasını saxlamaq üçün ci əmrini yenidən işə salın:

$ci fayl.txt

Bu əmri işlətdiyimiz zaman sistem bizdən dəyişikliklərin təsvirini tələb edəcək və sonra faylın yeni versiyasını saxlayacaq.

RCS uyğun gəlsə də minimum tələblər versiyaya nəzarət sisteminə görə, aşağıdakı əsas çatışmazlıqlara malikdir ki, bunlar da nəzərdən keçirilən sistemi yaratmaq üçün stimul rolunu oynayır:

  • Yalnız bir fayl ilə işləmək, hər bir fayla ayrıca nəzarət edilməlidir;
  • Əlverişsiz mexanizm eyni vaxtda iş sistemlə bir neçə istifadəçi, yaddaş bloklayan istifadəçi kilidini açana qədər sadəcə bloklanır;

CVS

CVS (Concurrent Versions System) hələ də ən çox istifadə edilən sistemdir, lakin aşağıda müzakirə edəcəyim çatışmazlıqlar səbəbindən tez bir zamanda populyarlığını itirir. Dick Grune 1980-ci illərin ortalarında CVS-ni inkişaf etdirdi. Fərdi faylları saxlamaq üçün CVS (həmçinin RCS) RCS formatında fayllardan istifadə edir, lakin kataloqlarda yerləşən fayl qruplarını idarə etməyə imkan verir. CVS həmçinin bütün versiya məlumatlarının serverdə saxlandığı müştəri-server arxitekturasından istifadə edir. Müştəri-server arxitekturasından istifadə CVS-dən hətta hər bir istifadəçinin layihənin surəti ilə öz iş qovluğuna malik olduğu coğrafi cəhətdən paylanmış istifadəçilər komandaları tərəfindən istifadə edilməsinə imkan verir.

Adından da göründüyü kimi, istifadəçilər sistemi paylaşa bilərlər. Eyni faylı dəyişdirərkən mümkün ziddiyyətlər sistemin yalnız faylın ən son versiyasına dəyişikliklərə icazə verməsi ilə həll olunur. Buna görə də həmişə tövsiyə olunur ki, dəyişikliklərinizi yükləməzdən əvvəl mümkün ziddiyyətli dəyişikliklər halında faylların işlək surətini yeniləyin. Yeniləmə zamanı sistem avtomatik olaraq işləyən nüsxədə dəyişikliklər edir və yalnız fayl yerlərindən birində ziddiyyətli dəyişikliklər olduqda, münaqişə yerinin əl ilə düzəldilməsi tələb olunur.

CVS həmçinin inkişaf filiallarından istifadə edərək bir çox layihə inkişaf xəttini saxlamağa imkan verir. Beləliklə, yuxarıda qeyd edildiyi kimi, layihənin ilk versiyasında səhvləri düzəldə və eyni zamanda yeni funksionallıq inkişaf etdirə bilərsiniz.

CVS ilə sessiyanın kiçik bir nümunəsinə baxaq. İlk növbədə, layihəni CVS-ə idxal etməlisiniz, bu idxal əmrindən istifadə etməklə edilir:

$ cd bəzi-layihə $ cvs import -m "Yeni layihə" yol-depoda heç biri başlamaz

Burada -m seçimi birbaşa əmr satırında dəyişikliklərin təsvirini təyin etməyə imkan verir və onu buraxsanız, o, çağırılacaq. mətn redaktoru. Sonra, layihənin depoda saxlanacağı yol göstərilir (bizim vəziyyətimizdə depoda yol) və ondan sonra iki etiket: tərtibatçının etiketi (kimsə tərəfindən hazırlanmış layihələr üzərində işləmək üçün CVS-dən istifadə etsəniz faydalı ola bilər) başqa) və layihənin etiketi.

Layihəmizi depoya yüklədikdən sonra layihənin işlək nüsxəsinin CVS nəzarəti altında yerləşəcəyi yeni qovluq yaratmalıyıq və layihəni checkout əmri və ya qısaca co istifadə edərək yükləməliyik:

$ cd bəzi-işləyən-dir $ cvs yoxlama yolu-in-depo

Checkout əmri üçün yuxarıda idxal əmrində qeyd etdiyimiz layihəmizə gedən yolu depoda göstəririk.

İndi biz layihədə dəyişikliklər edə və onları commit (dəyişikliklər et) əmri və ya qısaca ci istifadə edərək depoya yükləyə bilərik:

$ cvs commit -m "Bəzi dəyişikliklər"

Import əmrində olduğu kimi, biz də -m seçimindən istifadə edərək dəyişikliklərimizə şərh veririk.

İş kataloqumuzu yeniləmək istəyiriksə yeni versiya istifadə etdiyimiz depodan layihə yeniləmə əmri(yeniləmə) və ya qısaca:

$cvs yeniləməsi

CVS istifadə olunub böyük məbləğ layihələr, lakin təbii ki, onun çatışmazlıqları da yox deyildi ki, bu da sonradan nəzərdən keçirilən növbəti sistemin yaranmasına səbəb oldu. Əsas çatışmazlıqlara baxaq:

  • Versiyalar RCS fayllarında saxlandığından, kataloq versiyalarını saxlamaq üçün heç bir yol yoxdur. Standart üsul bu maneəni aşmaq hansısa faylı (məsələn, README.txt) kataloqda saxlamaqdır;
  • Faylların köçürülməsi və ya adının dəyişdirilməsi versiya nəzarətinə tabe deyil. Bunun standart yolu əvvəlcə faylı kopyalamaq, cvs sil əmrindən istifadə edərək köhnəni silmək və sonra cvs add əmrindən istifadə edərək onu yeni adı ilə əlavə etməkdir;

Təxribat

Subversion (SVN) 2000-ci ildə CollabNet-in təşəbbüsü ilə hazırlanmışdır. SVN əvvəlcə “daha ​​yaxşı CVS” kimi hazırlanmışdı və tərtibatçıların əsas məqsədi oxşar interfeysi qoruyarkən CVS dizaynında buraxılmış səhvləri düzəltmək idi. SVN, CVS kimi, müştəri-server arxitekturasından istifadə edir. CVS ilə müqayisədə ən əhəmiyyətli dəyişikliklərə aşağıdakılar daxildir:

  • Atom dəyişiklikləri (təhsil). Əgər öhdəliyin işlənməsi dayandırılsa, heç bir dəyişiklik edilməyəcək.
  • Faylların adının dəyişdirilməsi, surətinin çıxarılması və köçürülməsi dəyişikliklərin bütün tarixini qoruyur.
  • Kataloqlar, simvolik keçidlər və metadata versiya nəzarətinə tabedir.
  • İkili fayllar üçün səmərəli dəyişiklik yaddaşı.

Əmr nümunələrinə baxaq, baxmayaraq ki, onların əksəriyyətinin CVS əmrlərini praktiki olaraq təkrar etdiyini qeyd etmək lazımdır. Layihəni SVN ilə istifadə etmək üçün əvvəlcə onu idxal əmrindən istifadə edərək depoya idxal etməlisiniz:

$ cd bəzi-layihə $ svn import -m "Yeni layihə" repository yolu

CVS-dən fərqli olaraq, praktikada tez-tez istifadə olunmayan tərtibatçı və layihə teqlərini müəyyən etməyə ehtiyac yoxdur.

İndi biz checkout əmrindən və ya co istifadə edərək layihənin işləyən surətini yaratmalıyıq:

$ cd some-working-dir $ svn checkout path-in-repository

Dəyişikliklər etdikdən sonra dəyişiklikləri depoda saxlamaq üçün commit əmrindən və ya ci-dən istifadə edirik:

$ svn commit -m "Bəzi dəyişikliklər"

Layihənin işçi nüsxəsini yeniləmək üçün yeniləmə və ya yuxarı əmrindən istifadə edin.

Versiyaya nəzarət sistemi(İngilis Versiyasına Nəzarət Sistemindən - VCS və ya Revision Control System-dən) - tez-tez dəyişən məlumatlarla işləmək üçün xüsusi proqram, eyni sənədin bir neçə versiyasını saxlamağa və lazım olduqda əvvəlki versiyalara qayıtmağa, onu kimin hazırladığını və bu və ya digər dəyişdikdə və daha çox.

Bu cür sistemlər ən çox işlənən proqramın fayllarının saxlanması üçün proqram təminatının hazırlanmasında istifadə olunur.

Tez-tez olur ki, bir neçə nəfər eyni layihə üzərində işləyir və iki nəfər eyni faylı dəyişdirirsə, onlardan biri təsadüfən digərinin etdiyi dəyişiklikləri geri ala bilər. Versiyaya nəzarət sistemləri bu cür münaqişələri izləyir və onların həlli üçün vasitələr təqdim edir. Bu sistemlərin əksəriyyəti edilən dəyişiklikləri avtomatik birləşdirə (birləşdirə) bilər müxtəlif tərtibatçılar tərəfindən. Bununla belə, dəyişikliklərin belə avtomatik birləşməsi adətən yalnız mətn faylları üçün mümkündür və faylın müxtəlif (üst-üstə düşməyən) hissələrinin dəyişdirilməsi şərtilə. Bu məhdudiyyət, əksər versiyaya nəzarət sistemlərinin proqram təminatının işlənib hazırlanması prosesini dəstəkləməyə yönəldilməsi ilə bağlıdır və mənbə kodları proqramlar saxlanılır mətn faylları. Avtomatik birləşmə uğursuz olarsa, sistem problemi əl ilə həll etməyi təklif edə bilər.

Bəzi versiyaya nəzarət sistemləri depoda faylı kilidləmək imkanı verir. Kilidləmə digər istifadəçilərin faylın işləyən nüsxəsini əldə etməsinə mane olur və ya başqalarının faylın iş nüsxəsini dəyişdirməsinə mane olur (məsələn, fayl sistemi) və beləliklə, yalnız sənədlə işləyən istifadəçiyə eksklüziv giriş təmin edir.

Əksər versiya idarəetmə sistemləri aşağıdakı xüsusiyyətləri təmin edir:

  • yaratmağa imkan verir müxtəlif variantlar bir sənəd (filial) ilə ümumi tarix budaq nöqtəsindən əvvəl və ondan sonra fərqli dəyişikliklər;
  • faylda müəyyən sətirlər toplusunun kimin və nə vaxt əlavə edildiyini və ya dəyişdirildiyini öyrənməyə imkan verin;
  • istifadəçilərin müəyyən versiyada nəyi və niyə dəyişdiklərini izah edə biləcəkləri dəyişiklik jurnalını saxlamaq;
  • istifadəçi giriş hüquqlarını idarə etmək, bu hərəkəti kimin tələb etməsindən asılı olaraq məlumatların oxunmasına və ya dəyişdirilməsinə icazə vermək və ya rədd etmək.

Hər bir versiyaya nəzarət sisteminin komandalar dəstində, istifadəçilərin necə işləməsində və idarə edilməsində özünəməxsus xüsusiyyətləri vardır. Buna baxmayaraq ümumi qaydaəksər VCS üçün iş tamamilə stereotipikdir. Burada güman edilir ki, layihə nə olursa olsun, artıq mövcuddur və onun deposu tərtibatçının daxil olduğu serverdə yerləşir.

Sistemlə işə başlamaq. Tərtibatçının atmalı olduğu ilk addım layihənin işlək surətini və ya onun üzərində işlənəcək hissəsini əldə etməkdir. Bu hərəkət istifadə edərək həyata keçirilir standart əmr versiyanın çıxarılması (checkout və ya klon) və ya istifadə xüsusi komanda, əslində eyni hərəkəti yerinə yetirir. Tərtibatçı standart olaraq kopyalanmalı olan versiyanı müəyyənləşdirir, adətən ən son versiya (yaxud administrator tərəfindən əsas versiya kimi seçilir) kopyalanır.

Gündəlik iş dövrü. Tipik bir tərtibatçının iş günü ərzində iş dövrü belə görünür:

  • iş nüsxəsinin yenilənməsi: Layihənin əsas versiyasına dəyişikliklər edildikdə, tərtibatçının kompüterindəki işçi nüsxə köhnə olur və onun layihənin əsas versiyası ilə uyğunsuzluğu artır, bu, ziddiyyətli dəyişikliklər riskini artırır (aşağıya bax) və zəruri olur. iş nüsxəsini mövcud əsas versiya versiyasına mümkün qədər yaxın vəziyyətdə saxlamaq üçün tərtibatçı iş nüsxəsini mümkün qədər tez-tez yeniləyir, bu, inkişaf fəaliyyətindən, tərtibatçıların sayından və inkişafdan asılı olaraq dəyişikliklərin tezliyi ilə müəyyən edilir. hər yeniləməyə sərf olunan vaxt;
  • layihənin modifikasiyası: tərtibatçı layihənin tapşırığına uyğun olaraq işçi nüsxəsinə daxil edilmiş faylları dəyişdirərək layihəni dəyişdirir, bu iş yerli olaraq həyata keçirilir və VCS serverinə zənglər tələb etmir;
  • dəyişikliklərin edilməsi: Tapşırıq üzərində işin növbəti mərhələsini başa vurduqdan sonra, tərtibatçı dəyişikliklərini serverə köçürür (yaxud tapşırıq üzərində iş tamamilə tamamlanıbsa, əsas filiala və ya bu tapşırıq üçün ayrıca inkişaf şöbəsinə).