Versiyon kontrol sistemi nedir. Tüm revizyon kontrol sistemlerinin ortak bir işlevi, daha önce yaptığımız değişiklikleri geri almamızı sağlayan işlevdir. TortoiseSVN özellikleri. Kabuk entegrasyonu

Ölçtüğüm her işlem için Mercurial, Subversion'dan daha iyi performans gösteriyor. Söz konusu olduğunda hız 2-6 kat daha fazladır. yerel Subversion 1.4.3 depoları (en çok hızlı yöntem erişim). Daha gerçekçi bir kullanım durumunda, çevrimiçi bir depoda, Subversion çok daha kötü bir konumdadır. Subversion komutlarının sunucuyla iletişim kurması gerektiğinden ve Subversion'ın yararlı çoğaltma olanaklarından, sunucu performansından ve verim ağlar küçük projeler için bile darboğaz haline gelir.

Ayrıca Subversion, bazı işlemleri gerçekleştirirken ağ isteklerini önlemek için ek disk alanı gerektirir: değiştirilmiş dosyaları bulma (durum) ve değişiklikleri görüntüleme (fark). Sonuç, Mercurial deposu ve çalışma dizini birleşimiyle aynı boyutta (daha büyük değilse) bir Subversion çalışma kopyasıdır, ancak Mercurial deposu projenin tüm geçmişini içerir.

Subversion, üçüncü taraf araç takımları için kapsamlı bir desteğe sahiptir. Bu bağlamda, Mercurial şu ​​anda geride kalıyor. Aradaki fark kapanıyor olsa da, Mercurial için GUI yardımcı programlarından bazıları Subversion benzerlerinden daha iyi performans gösteriyor. Mercurial gibi Subversion da mükemmel bir kullanım kılavuzuna sahiptir.

Subversion, istemcide bir değişiklik geçmişi tutmadığından, çok sayıda ikili dosya içeren projeleri yönetmek için çok uygundur. Sıkıştırılamaz on megabaytlık bir dosyada 50 değişiklik yaparsanız, Subversion tarafından kullanılan disk alanı değişmeden kalır. Dağıtılmış revizyon kontrol sistemlerinden herhangi biri tarafından kullanılan alan, revizyonlar arasındaki farklar büyük olduğundan, değişiklik sayısı ile orantılı olarak hızla büyüyecektir.

Ayrıca, bir ikili programın farklı sürümlerini birleştirmek imkansız değilse de genellikle zordur. Subversion, bir kullanıcının bir dosyayı kilitlemesine izin verir, bu da kullanıcıya dosyayı geçici olarak değiştirme konusunda münhasır haklar verir. Bu, ikili dosyaları yoğun olarak kullanan bir proje için önemli bir fayda olabilir.

Mercurial, bir Subversion deposundan değişiklik geçmişini içe aktarabilir. Ters işlem de mümkündür. Bu, göç edip etmemeye karar vermeden önce suları test etmeyi ve hem Mercurial hem de Subversion'ı aynı anda kullanmayı mümkün kılar. Bir hikayeyi dönüştürmek adım adım bir işlemdir, böylece ilk dönüştürmeyi yapabilir ve ardından yeni değişiklikler yapabilirsiniz.

1.6.2. Git

Git, Linux çekirdeğinin kaynak kodunu yönetmek için tasarlanmış dağıtılmış bir sürüm kontrol sistemidir. Mercurial'da olduğu gibi, sistemin ilk tasarımı Monotone'dan etkilenmiştir.

Git, 1.5.0 sürümünde 139 benzersiz komutla geniş bir komut listesi sağlar. Öğrenmesi zor olduğu için bir üne sahiptir. Git ile karşılaştırıldığında, Mercurial sadeliği vurgular.

Performans söz konusu olduğunda Git çok hızlıdır. Bazı durumlarda Mercurial'dan (en azından Linux'ta) daha hızlıdır ve diğerlerinde Mercurial'dan daha hızlıdır. Ancak, Windows'ta, bu yazının yazıldığı sırada hem performans hem de genel destek seviyesi Git için Mercurial'dan çok daha kötü.

Mercurial deposu herhangi bir işlem gerektirmezken bakım, bir Git deposu sık kullanım kılavuzu gerektirir "Yeniden paketleme" kendi meta verileri. Bu yapılmazsa, kullanılan disk alanı miktarındaki artışla birlikte performans düşmeye başlar. Katı sıklık kuralına uymayan birden çok Git deposu içeren bir sunucunun disk dizisi. "Yeniden paketleme", er ya da geç kapasiteye kadar dövülür, bunun sonucunda günlük süreç Yedek kopya kolayca 24 saatten fazla sürebilir. Şu anda "Paketlenmiş" Git deposu Mercurial deposundan biraz daha az yer kaplar, ancak paketlenmemiş depo çok daha büyük olacaktır.

Git'in özü C ile yazılmıştır. Git komutlarının çoğu şu şekilde uygulanır: Kabuk komut dosyaları veya Perl komut dosyalarıdır ve bu komut dosyalarının kalitesi büyük ölçüde değişir. Ölümcül hataların varlığına rağmen komut dosyalarının aptalca yürütülmeye devam ettiği birkaç kurulum gördüm.

Mercurial, bir Git deposundan sürüm geçmişini içe aktarma yeteneği sağlar.

1.6.3. CV'ler

CVS, muhtemelen dünyada en yaygın kullanılan sürüm kontrol sistemidir. Muhterem yaşı ve içinde hüküm süren kaos sayesinde uzun yıllar çok bakımsız kalmış.

CVS, merkezi bir istemci-sunucu mimarisine dayanmaktadır. Dosya değişikliklerini atomik taahhütler halinde gruplandırmaz, böylece insanların kolayca "Yapıyı kırın": Bir kişi depodaki bazı değişiklikleri başarıyla gerçekleştirebilir ve ardından birleştirme gerçekleştirme ihtiyacı nedeniyle engellenebilir. Bu, katılımcıların geri kalanının, görmeleri gereken değişikliklerin yalnızca bir kısmını görecekleri bir duruma yol açacaktır. Bu özellik aynı zamanda değişiklik geçmişiyle nasıl çalışacağınızı da etkiler. Bir ekip üyesinin belirli bir sorunu çözmek için yaptığı tüm değişiklikleri almak istiyorsanız, etkilenen her dosya için açıklamaları ve yapılan değişikliklerin tarihini (hangi dosyaların etkilendiğini biliyorsanız) manuel olarak incelemeniz gerekir.

CVS, bu kitapta açıklamaya bile çalışmayacağım, oldukça karmaşık bir dal ve etiket kavramıyla çalışır. Hem dosyaların hem de klasörlerin yeniden adlandırılmasını desteklemez, bu nedenle depo kolayca zarar görebilir. Pratik olarak hiçbir iç bütünlük kontrol mekanizması bulunmadığından, bir havuzun bozulup bozulmadığını ve eğer öyleyse nasıl olduğunu kesin olarak söylemek çoğu zaman mümkün değildir. Bu nedenle, mevcut veya yeni herhangi bir proje için CVS'yi tavsiye etmem.

Mercurial, CVS sürüm geçmişini içe aktarma yeteneği sağlar. Ancak, diğer herhangi bir CVS içe aktarma aracının karşılaşacağı birkaç tuzak vardır. Atomik değişikliklerin eksikliği ve hiyerarşik verilerin versiyonlanması dosya sistemi CVS değişikliklerinin geçmişini tamamen yeniden oluşturmayı imkansız kılar, bu nedenle bazı durumlarda varsayımlar kullanılır ve yeniden adlandırmalar genellikle görüntülenmez. Birçok CVS yönetim görevinin manuel olarak gerçekleştirilmesi gerektiğinden, bu da hata riskini artırır, CVS ithalatçısının birçok depo bütünlüğü hatası döndürmesi yaygındır (tamamen gerçekçi olmayan revizyon tarihleri ​​ve son on yılda kilitli kalan dosyalar yalnızca birkaç tanesidir). kendi deneyimlerimden hatırlayabildiğim en az ilginç sorunlar).

«

1.8. Sürüm kontrolünün kısa bir geçmişi

Eski sürüm kontrol yardımcı programlarının en ünlüsü, 70'lerin başında Bell Labs'den Marc Rochkind tarafından yazılan SCCS'dir (Kaynak Kodu Kontrol Sistemi). SCCS çalıştırıldı ayrı dosyalar ve bir proje üzerinde çalışan herkesin tek bir paylaşılan çalışma alanına erişmesini gerektirdi. Bir seferde yalnızca bir kişi bir dosyayı düzenleyebilir; dosya erişim çakışmaları kilitlerle çözüldü. Yaygın bir durum, düzenlemeden sonra kilidi açmayı unutmaktı, bu da diğer kişilerin bir yöneticinin yardımı olmadan dosyaya erişmesini engelledi.

Walter Tichy, 1980'lerin başında SCCS'ye ücretsiz bir alternatif geliştirdi; Programına RCS (Revizyon Kontrol Sistemi) adını verdi. SCCS gibi, RCS de geliştiricilerin hem tek bir paylaşılan çalışma alanında çalışmasını hem de farklı kişilerin aynı anda dosyaları değiştirmesini önlemek için dosyaları kilitlemesini gerektiriyordu.

Daha sonra, 1980'lerde, Dick Grune, başlangıçta cmt olarak adlandırılan ve daha sonra CVS (Eşzamanlı Sürümler Sistemi) olarak yeniden adlandırılan bir dizi kabuk komut dosyası için temel olarak RCS'yi kullandı. CVS'deki önemli bir yenilik, geliştiricilerin kişisel çalışma alanlarında aynı anda ve bir dereceye kadar bağımsız çalışmasına izin vermesiydi. Geliştiricilerin SCCS ve RCS'de yaygın olan birbirlerinin topuklarına sürekli basmasını engelleyen bu alanlardı. Her geliştirici, her proje dosyasının bir kopyasına sahipti, geliştiriciler kopyalarını bağımsız olarak değiştirebilirdi. Değişiklikleri merkezi depoya göndermeden önce yalnızca kendi düzenlemelerini birleştirmeleri gerekiyordu.

Brian Berliner, Grün'ün orijinal senaryolarını aldı ve C'de yeniden yazdı ve 1989'da daha sonra CVS'nin modern versiyonuna dönüşecek olan kodu yayınladı. CVS daha sonra ağ üzerinden çalışma yeteneğini kazanarak bir istemci-sunucu mimarisi kazandı. CVS mimarisi merkezileştirilmiştir: sadece sunucu proje geçmişinin bir kopyasına sahiptir. İstemci çalışma kopyaları yalnızca en son dosya örneklerini ve sunucuyu bulmak için küçük meta verileri içeriyordu. CVS benzeri görülmemiş bir başarı elde etti: Muhtemelen dünyada en yaygın kullanılan sürüm kontrol sistemidir.

1990'ların başında, Sun Microsystems, TeamWare adlı erken dağıtılmış bir revizyon kontrol sistemi geliştirdi. Her TeamWare çalışma kopyası, proje revizyon geçmişinin tam bir kopyasını içeriyordu. TeamWare'de merkezi bir depo kavramı bu şekilde yoktu. (Geçmişi depolamak için RCS'yi kullanan CVS'ye benzer şekilde TeamWare, SCCS'yi kullandı.)

1990'lar ilerledikçe, çeşitli CVS sorunlarının farkındalığı arttı. Sistem, mantıksal olarak tek bir atomik işlemde gruplamak yerine, birden çok dosyadaki eşzamanlı değişiklikleri ayrı ayrı kaydeder. Dosya hiyerarşinizi yönetme şekliniz çok iyi değil; dosyaları ve dizinleri yeniden adlandırarak deponuzu karıştırmak kolaydır. Ayrıca, CVS kaynak kodunun anlaşılması ve bakımının kolay olmaması, onu neredeyse karşı konulmaz hale getirir. "Ağrı eşiği" bu mimari sorunlar için düzeltmeler.

2001 yılında, daha önce CVS üzerinde çalışan iki geliştirici Jim Blandy ve Karl Fogel, onu daha iyi mimariye ve daha temiz koda sahip bir araçla değiştirmek için bir projeye başladılar. Sonuç - Subversion - CVS'nin merkezi istemci / sunucu modelinden uzaklaşmadı, ancak birden fazla dosya için atomik taahhütler, daha iyi ad alanı yönetimi ve Subversion'ı çalışmak için CVS'den daha iyi bir araç yapan diğer özellikler ekledi. İlk versiyondan bu yana Subversion'ın popülaritesi hızla arttı.

Aynı zamanda, Graydon Hoare Monotone adlı iddialı bir sürüm kontrol sistemi üzerinde çalışmaya başladı. Bu sistem sadece birçok sorunu ortadan kaldırmakla kalmıyor dahili cihaz CVS dağıtılmış bir mimariye sahiptir, ancak bazı yeniliklerinde önceki (ve sonraki) birkaç sürüm kontrol sisteminin ötesine geçer. Monotone, tanımlayıcı olarak kriptografik karmaları kullanır ve “ güven "çeşitli kaynaklardan kod

Mercurial'ın hayatı 2005 yılında başladı. Mimarisinin bazı yönleri Monotone'dan etkilenirken, Mercurial kullanım kolaylığı, yüksek performans ve çok büyük projelere ölçeklenebilirlik üzerine odaklanmaktadır.

Harika bir yeni yazılım geliştirme iş fikriniz mi var?Teknolojik olarak geliştirmeniz gerekiyor. zor karar? Yoksa aynı görev üzerinde çalışan büyük bir programcı ekibiniz mi var? O zaman şu üç kelimeyi hatırla:sürüm kontrol sistemi .

Sürüm kontrol sistemi (cvs), 2017 - Karşılaştır: Git, SVN, Mercurial

, veya vcs- birçok insan üzerinde çalışırken projenin dağılmasını engelleyen şey budur. Programcılar, yöneticiler, metin yazarları, birbirlerine müdahale etmeden ve düzeltilemeyecek hasarlara neden olmadan kendi parçaları üzerinde çalışabilirler.

Konsepte henüz aşina değilsenizsürüm kontrol sistemleri sonra burada her şey çok açık bir şekilde gösteriliyor.

Veya GitHub'dan videoyu izleyin.

Peki projeniz için hangi sürüm kontrol sistemi uygun?

Seçiminizi yapmanıza yardımcı olmak için birkaç popüler çözümü karşılaştırdık.

Bu oldukça özel bir teknik konudur. İncelememizi herkes için anlaşılır hale getirmeye çalıştık. Ancak herhangi bir programlama deneyiminiz yoksa, karar vermeden önce geliştirme departmanınıza danışın.

Sürüm kontrol sistemleriiyi bilinen SVN (Subversion) ve Git de dahil olmak üzere, geliştirme ekiplerinin karışıklık yaratmadan ortak projeler üzerinde çalışabilmesi için orijinal olarak oluşturuldu. Bir kontrol sisteminde, kod dallarını bağımsız olarak izlemeniz ve bunlara ilişkin notları incelemeniz gerekmez. Bunun yerine, her şeyin düzenlendiği, yapılandırıldığı merkezi bir depo kullanılır. Dosyaları güncellemek, yorum eklemek ve hatta proje dallarını burada birleştirmek uygundur.

Hangi konuda görüşlersürüm kontrol sistemien iyisi, büyük ölçüde farklılık gösterir ve bu, programcılar arasında hararetli tartışmalara yol açar. Almak ve ders çalışmaksürüm kontrol sistemleriprojeniz için, belirli bir çözümün faydalarının genellikle öznel olduğunu unutmayın. Örneğin, programcının kişisel tercihleri ​​veya performans, IDE eklenti yetenekleri vb. gibi göstergeler.

Sürüm kontrol sistemleri arasındaki temel fark, istemci-sunucu veya merkezi olmayan (p2p) olmalarıdır. Kodun nereden geldiği ve yapılan değişikliklerle nereye döndürüldüğü merkezi bir havuzu (sunucusu) var mı? Yoksa bir kopyası mı yerel depolama eş güncellenebilir: senkronizasyon, yamaların (değişiklik setleri) değişimi ve mevcut kodun korunması için kullanılan daha merkezi olmayan bir ağ.

Ayrıca belirli bir alana girmek / uzmanlaşmak için performans, işlevsellik ve eşiği de dikkate almaya değer.kontrol sistemleri... En yaygın olanı düşünelimsürüm kontrol sistemlerive programcıların belirli çözümleri tercih etme nedenleri.

Eşzamanlı sürümler sistemi (CV'ler)

CV'ler 1980'lerde ortaya çıktı ve hem ticari ürün geliştiriciler hem de açık kaynak geliştiriciler arasında hala popüler.

CV'ler şartlarda geçerlidirGNU Açık Lisans Sözleşmesinin ve projenin gerekli sürümünü sunucudan almanıza izin verir - “ödeme " ve ardından sunucuya geri iletin, "check-in "(dönüş),olarak değiştirilmiştir.

Orijinal CVS sürüm çakışmalarını önlemek için oluşturuldu. Tüm katılımcılara yalnızca en çok En son sürüm kod. Bu, ilk sürüm kontrol sistemiydi. Kullanıcının, diğerleri onun önüne geçmeden önce depoda hızlı bir şekilde değişiklik yapması gerekiyordu.

Şimdi CVS kod dalları ile projeler üzerinde çalışma desteğine sahiptir. İle birkaç ürün seçeneği ortaya çıkıyor farklı özellikler hangi daha sonra birleştirilebilir.

CVS sunucuları genellikle Unix üzerinde çalışır, ancak CV'ler -müşteriler ayrıca diğer popüler işletim sistemleri Ah. CV'ler - "olgun", zamana göre test edilmişsürüm kontrol sistemi... Hala açık kaynaklı bir sistemdir, ancak bugün nadiren yeni özellikler eklenmektedir.

Aynı zamanda CVSNT, ayrı bir projede yayınlanmış bir versiyondur. CV'ler için Windows sunucuları, - şimdi işlevselliğini aktif olarak genişletiyor.

Avantajlar:

  • Onlarca yıldır piyasada olan, zamana göre test edilmiş teknoloji.

Dezavantajları:

  • Dosyaları yeniden adlandırma veya taşıma geçmişe yansıtılmaz
  • Dosyalara sembolik bağlantılarla ilişkili güvenlik riskleri
  • Kod bozulmasına yol açabilecek atomik işlemler için destek yok
  • Şube işlemleri program kodu bundan beri pahalıkontrol sistemikod dalları olan uzun vadeli projeler için tasarlanmamıştır

Apache Subversion (SVN)

SVN alternatif olarak oluşturuldu CV'ler eksiklikleri gidermek için CV'ler ve aynı zamanda onunla yüksek uyumluluk sağlar.

CVS gibi SVN ücretsiz bir sistemdir. sürüm kontrolü açık kaynak. Tek fark, Apache lisansı altında dağıtılması değil, Apache lisansı altında dağıtılmasıdır.GNU Açık Lisans Sözleşmesi.

Veritabanının bütünlüğünü korumak için SVN, sözde atomik işlemleri kullanır. Yeni bir sürüm yayınlandığında, son ürüne düzeltmelerin tümü uygulanmaz veya hiçbiri uygulanmaz. Böylece kod, birbiriyle uyuşmayan ve hatalara neden olan kaotik kısmi düzenlemelerden korunur.

Birçok geliştirici geçiş yaptıSVN'den beri yeni teknoloji en iyi özellikleri miras aldı CV'ler ve aynı zamanda onları genişletti.

CVS'deyken kod dalları ile işlemler pahalıdır ve sistemin mimarisi tarafından sağlanmaz, SVN sadece bunun için yaratılmıştır. Yani, kod dallarına ve birçok geliştirme alanına sahip daha büyük projeler için.

SVN'nin dezavantajları karşılaştırmalı olarak belirtilmiştir düşük hız ve dağıtılmış sürüm kontrolünün olmaması. dağıtılmış sürüm kontrolü kod güncellemelerini depolamak için merkezi bir sunucu yerine eşler arası bir model kullanır. Eşler arası model açık kaynak projelerinde daha iyi çalışırken, diğer durumlarda ideal değildir. Sunucu tarafı yaklaşımının dezavantajı, sunucu çöktüğünde istemcilerin koda erişimi olmamasıdır.

Avantajlar:

  • Sistem tabanlı CV'ler
  • Atomik işlemlere izin verir
  • Dallanma işlemleri daha ucuzdur
  • Çok çeşitli IDE eklentileri
  • Eşler arası bir model kullanmaz

Dezavantajları:

  • Hatalar hala devam ediyor, dosya ve dizinlerin yeniden adlandırılmasıyla ilgili
  • Depoyla çalışmak için yetersiz komut seti
  • Nispeten düşük hız

Git

Bu sistem, Linux çekirdeğinin gelişimini yönetmek için oluşturuldu ve CVS ve SVN'den temelde farklı bir yaklaşım benimsiyor.

Temel Git kavramlar daha hızlı dağıtılmış oluşturmak için atıldısürüm kontrol sistemikullanılan kural ve kararların aksine CV'ler ... Git öncelikle Linux için geliştirildiğinden, en hızlı çalıştığı işletim sistemi bu işletim sistemidir.

Git ayrıca Unix benzeri sistemlerde (MacOS gibi) çalışır ve Windows platformunda çalıştırmak için mSysGit paketi kullanılır.

Deposu olmayan bir bilgisayar kullanılırken kod kullanılamayabilir. Bu sorunu çözmek için geçici çözümler vardır ve bazı geliştiriciler, Git'in performansının bu rahatsızlıktan dolayı ödenmesi gereken adil bir bedel olduğuna inanır.

Ayrıca Git, değişiklik geçmişinde gezinmek için birçok araca sahiptir. Kaynak kodun çalışan her kopyası, İnternet bağlantısı olmadan programlama yaparken son derece yararlı olan tüm geliştirme geçmişini içerir.

Avantajlar:

  • nefret edenler için mükemmel CVS / SVN
  • Performansta önemli artış
  • Ucuz şube işlemleri
  • Tam geliştirme geçmişi çevrimdışı kullanılabilir
  • Dağıtılmış, eşler arası model

Dezavantajları:

  • Daha önce SVN kullananlar için yüksek giriş (öğrenme) eşiği
  • Sınırlı Windows desteği(Linux'a kıyasla)

Mercurial

Mercurial Git ile aynı anda yayınlandı. aynısı dağıtılmış sürüm kontrol sistemi.

Mercurial, Linux çekirdek modülleri geliştirmek için Git'e alternatif olarak oluşturuldu. Ama Git'i seçtikleri için Mercurial daha az kullanılıyor. Bununla birlikte, önde gelen birçok geliştirici bu özel sistemle çalışır, örneğinOpenOffice.org .

Mercurial'ın sürüm kontrol sistemi farklıdırsürüm kontrol sistemleriçünkü çoğunlukla Python'da yazılmıştır (C değil). Ancak, bazı parçalar C'de genişletme modülleri olarak uygulanmaktadır.

Sistem merkezi olmadığı ve Python ile yazıldığı için birçok Python programcısı Mercurial'a yöneliyor.

Kullanıcılar, Mercurial'ın dağıtılmış bir sistem olmasına rağmen SVN'nin bazı özelliklerini koruduğunu ve bu benzerlik nedeniyle SVN'ye aşina olanlar için daha düşük bir giriş eşiğine sahip olduğunu belirtiyor. Ayrıca, Mercurial'ın belgeleri daha eksiksizdir, bu da farklılıklara hızla aşina olmanıza yardımcı olur.

Mercurial'ın en büyük dezavantajlarından biri, Git'in aksine iki ana dalı birleştirememesidir, çünkü Mercurial komut dosyası desteği yerine bir eklenti sistemi kullanır. Bu, bazı programcılar için harika, ancak çoğu Git'in yeteneklerinden vazgeçmek istemiyor.

Avantajlar:

  • Git'e kıyasla öğrenmesi daha kolay
  • Ayrıntılı belgeler
  • dağıtılmış modelsürüm kontrol sistemleri

Dezavantajları:

  • İki ana dalı birleştirmenin bir yolu yok
  • Komut dosyaları değil, eklentileri kullanma
  • Özel çözümler için daha az yer

Hangisürüm kontrol sistemi bana uygun?

Çoğu zaman geliştiriciler kullanır CV'ler çünkü onlara daha tanıdık geliyor. Ekip zaten bir proje üzerinde çalışıyorsa, tüm gelişmeleri başka bir projeye aktarma olasılığıkontrol sisteminedense ilham vermiyor. Sistemi değiştirmeleri gerekseydi, büyük olasılıkla SVN'ye geçerlerdi.

CVS, "olgun teknoloji" statüsüne çoktan ulaştı, bu da artık radikal olarak yeni özellikler ve çözümler içermeyeceği anlamına geliyor. İnsanlar SVN'ye geçerken alışkanlığın ataleti kaybolur. Bu, CVS'nin yavaş yavaş geçmişte kaldığı anlamına gelir.

Bugün SVN avuç içi sunucu arasında tutuyorsürüm kontrol sistemleri... Faydaları içerir CV'ler ve onları aşar. Prevalans hakkında konuşursak, daha sık karşılaşmanız muhtemeldir. CV'ler veya SVN, Git veya Mercurial'dan daha iyidir. Bu nedenle, tek bir sunucu teknolojisi hakkında bilgi sahibi olmak, zorunlu olmamakla birlikte, geçişi sizin için kolaylaştıracaktır.

Teknolojinin yaygın kullanımı ve olgunluğu nedeniyle SVN, kullanıcıların yardım almasını kolaylaştıran geniş bir bilgi tabanına sahiptir.

Git açıkça rekabetten daha hızlı. Dağıtılmak üzere oluşturulan projeler içinsürüm kontrol sistemleri, bu bariz bir gelişme.

Git'in önemli bir dezavantajı, bunun çalışmasının nüanslarını açıklamanın bazen zor olmasıdır.kontrol sistemlerive programcılar alışırken iş akışını yavaşlatır. Ancak, "giriş eşiği" aşılır aşılmaz, üretkenlik artar ve kod dallarını yönetmenin rahatlığı, harcanan zamanı tamamen karşılayacaktır.

Git'ten nefret edenler için (ve sistemin geliştirme topluluğunda rakipleri var), Mercurial, SVN ve Git arasında bir uzlaşmadır. Bu sistem birçok tanınmış projede kullanılmaktadır ve ayrıca iyi dokümantasyona sahiptir.

İle uyumlu Windows sürümü Git, performans açısından da Linux sürümüne daha yakın ilerliyor, bu nedenle Linux üzerinde geliştirme yapmıyor olsanız bile bu sistem sizin için alakalı olabilir.

Hangisinin sizin için en iyisi olduğunu anlamak için projenin ve ekibinizin özelliklerini göz önünde bulundurun. Geliştiricilerle konuşun!

Projeniz küçük bir programcı grubu tarafından üzerinde çalışılacak tek bir kaynak ağacı gerektiriyorsa, o zaman SVN sizin seçeneğinizdir. Güvenilirdir ve sadece bu gibi durumlar için tasarlanmıştır.

Birkaç programcının farklı zamanlarda çalışacağı açık kaynaklı bir proje yürütüyorsanız veya sürekli yenileme kodunu seçin, ardından Git'i seçin. Kaynak ağacın hızı ve yönetimi burada SVN'den çok daha iyidir.

Bir yol ayrımındaysanız veya SVN veya Git'in çalışma şeklini beğenmiyorsanız, Mercurial hizmetinizdedir.

Tüm bu sistemler tamamen işlevseldir. Ve ayrıca ücretsiz. Kullandığınız ve bildiğiniz yazılımlar, web siteleri ve hatta işletim sistemleri oluşturmak için kullanılırlar.

Her şeyden önce, birinin veya diğerinin uygun olup olmadığına karar verinkontrol sistemisürümlerini işletmeniz için seçin ve ardından - en önemlisi - seçimin programcıları çileden çıkarmadığından emin olun.

SVN'ye Başlarken

SVN veya Git ile hiç çalışmadıysanız ve nasıl başlayacağınız hakkında hiçbir fikriniz yoksa, o zamanile birleştirilmiş barındırma çözümü grafik arayüzü hızlı bir şekilde hızlanmanıza yardımcı olur.

Çoğu durumda olduğu gibi, en önemli şey başlamaktır ve sonra anlayış gelecektir. Bir sürüm kontrol sistemini çalıştırmak, bir FTP istemcisi kullanan bir sunucudaki dosyalarla çalışmaya çok benzer.

NOT:için birçok barındırma çözümü varsürüm kontrol sistemleri, ücretsiz deneme süresi olanlar dahil. İlk deponuzu (kod dosyalarıyla çalışabileceğiniz bir yer) temelinde ücretsiz olarak oluşturabilirsiniz. Bu hizmetlerden bazıları şunlardır:

SVN ve GIT Barındırma

İlk depoyu oluşturma

Bir hesap oluşturduktan sonra, her platform için ayrı bir havuz oluşturmanız gerekir. Genellikle şöyle görünür:

  • Hesabınıza giriş yapın, projelerinize tıklayın.
  • Proje oluşturma:
  • "Yeni Proje Oluştur" satırına projenizin adını girin
  • "Proje Oluştur" düğmesine tıklayın
  • SVN bağlantısı:
  • Projeyi oluşturduktan sonra "Kaynak Kontrolü" sekmesini seçin (kaynak kodu sürümleri)
  • "Kaynak Kontrolünü Etkinleştir" bağlantısını tıklayın
  • Depoya bir ad verin
  • "Kaydet" i tıklayın

Grafiksel SVN ve GIT istemcileri

Böylece, depo oluşturulur. Şimdi içindeki her şeyi basit ve net bir şekilde göstermeniz gerekiyor. Bunu yapmak için bir grafik arayüze ihtiyacınız var.

uygun program birlikte çalışmaksürüm kontrol sistemleriv Microsoft Windows ve muhtemelen en iyi Apache Subversion istemcisi. TortoiseSVN, bir Windows kabuk uzantısı olarak uygulanır ve tarayıcı. Ayrıca 34 dil paketinin bulunduğu açık kaynak kodlu bir programdır.

SmartGit

- grafik Git istemcisi (Açık Kaynak dağıtılmışsürüm kontrol sistemi). Windows, Mac OS X ve Linux'ta çalışır.Lisans maliyeti - 39 $

Depoyu "kontrol etmek" ("Ödeme")

Böylece müşteri seçilir. Şimdi kontrol sistemi için bir havuz oluşturmanız gerekiyor. girmen gerekDepo URL'niz, kullanıcı adınız ve şifreniz.

URL genellikle şöyle görünür:https: // svn .hostname.com / svn / > (ücretli hesabınız varsa https:// (SSL) kullanabilirsiniz)

  1. Kök klasöre gidin, Kontrol Et düğmesine tıklayın ve çalışma klasörü müşteri için. Şimdi buna dosya ekleyebilirsiniz.
  2. Proje dosyalarını çıkardıktan sonra, bunları bilgisayarınızdaki yerel bir dizinde düzenleyebilirsiniz.

Dosyalarda değişiklik yaptıktan sonra, bunları kaydetmek için araç çubuğundaki Check-in düğmesine tıklayın. Değişiklikleri görüntüleyebilir ve bunlara yorum ekleyebilirsiniz - bu oldukça iyi bir fikir, çünkü gelecekte tam olarak ne üzerinde çalıştığınızı, hangi değişikliklerin yapıldığını bileceksiniz ve projedeki diğer katılımcıları bilgilendireceksiniz.

Müşteriniz ayrıca revizyon günlüğünü veya değişiklik geçmişini açarak herhangi bir zamanda revizyonlarla çalışmaya başlama olanağı sağlamalıdır - ardından gerekirse "geri alabilirsiniz" önceki versiyon Her dosya için ayrı ayrı. Artık temel kavramlara aşina olduğunuza göre, belgeler

Merhaba, Habr. Sürüm kontrol sistemlerinin (bundan sonra - VCS olarak anılacaktır) büyük ölçüde standart dışı (diyelim ki, sıralanmamış) kullanımını tanımlamak için birçok makalede yıpranmış bir konuya değinmeye karar verdim. Programcılar yoldaşlar, çürük domatesleri saklayalım ve geçelim, çünkü bu makale size göre değil. Evet, hepiniz Git, SVN, CVS ile çalışmanın tüm inceliklerini zaten öğrendiniz ve daha birçok moda kelime biliyorsunuz. Sadece ölümlüler olarak SLE kullanmanın tüm faydalarını öğrenmemize izin verin.
SLE ile tanışmak isteyen herkesi ve bir şekilde hızla değişen verilerle ilgilenen herkesi kesmeye davet ediyorum.

neden gerekli

Ben kendim bir teknik üniversitenin öğrencisiyim ve neredeyse sürekli belgelerle (metinler, resimler, çizimler) çalışıyorum, bunları günde üç (on, yüz) kez değiştiriyorum. Bazen son bir hafta içinde yapılan düzenlemelerin iptal edilmesi ve bir hafta önceki haliyle belgelere iade edilmesi gerektiği ortaya çıkıyor. Pek çok düzenleme olmasaydı, bu durumda Ctrl + Z'ye elli vuruş yardımcı olabilir. Bununla birlikte, bu hafta boyunca belgeyle az çok aktif çalışma yapılmışsa, “bir hafta önce yapılan önemli bir değişiklikten önceki” durumu geri yüklemek mümkün olmayacaktır. Bu, belgenin "önemli bir revizyondan önceki" zamanda bir kopyasının yanı sıra "başka bir önemli revizyondan önce", "şüpheli bir revizyondan önce" ve "büyük olasılıkla iptal edilmesi gereken bir düzenlemeden önce" bir düzine kopya daha gerektirir. ”. Prensip olarak, bu yaklaşım birçok kişi tarafından mümkündür ve uygulanmaktadır. Yakın zamana kadar, dosyaların önemli sürümlerini kendim tuttum, onları "date_time" önekleriyle kaydettim ve görünüşe göre mutluydu. Bu yöntemin avantajı basitlik, dezavantajı ise çalışma klasörlerinin "şişmesi" ve kullanım zorluğudur. Ve eğer bunlardan ilki bir şekilde halledilebilirse (büyük sabit sürücüler ve 7zip), o zaman rahatsızlık veren bir şeyler yapılması gerekiyordu.

Bu konuda ne yapılabilir veya SLE nedir?

Wikipedia'dan bir paragraf çıkarıyoruz: "Sürüm kontrol sistemi (İngilizce Sürüm Kontrol Sistemi, VCS veya Revizyon Kontrol Sisteminden) - değişen bilgilerle çalışmayı kolaylaştıran yazılım. Sürüm kontrol sistemi, aynı belgenin birden fazla sürümünü saklamanıza, gerekirse daha fazlasına geri dönmenize olanak tanır. erken sürümler, bunu veya bu değişikliği kimin ve ne zaman yaptığını ve çok daha fazlasını belirleyin. Bu, Wikipedia'nın kendi çalışma prensibine benzer - tüm düzenlemeleri olan makalelerin tüm sürümleri incelenebilir.
Bu nedenle, VCS'yi birçok dosya sürümünü depolamanız gereken bir durumda kullanmak, ihtiyacınız olan şeydir. Bu yaklaşımın avantajları arasında kullanım kolaylığı ve delta sıkıştırması (dosyaların kendileri farklı sürümlerde kaydedilmediği, ancak sürümden sürüme değiştiği ve depolanan veri miktarını azaltan) nedeniyle boş disk alanından tasarruf edilmesi sayılabilir. Hadi deneyelim.

SLE nedir

Aynı Wikipedia, SLE'lerin büyük ve küçük, zil ve ıslık olsun veya olmasın merkezileştirilmiş ve dağıtılmış olduğunu öne sürüyor. Bununla özellikle ilgilenmiyoruz, çünkü (en azından ilk başta) SLE işlevinin yalnızca bir kısmını kullanacağız. Bu işlevi çok dikkate alacağız.
Neredeyse tüm VCS'ler, birlikte çalıştığımız dosyaların tüm sürümlerini depolayan bir tür depolamadır. Burada, saklanan dosyaların sürümünün çoğunlukla kullanıcı tarafından belirlendiğini açıklığa kavuşturmak gerekir. Diyelim ki bir düzine küçük düzenleme yaptık ve faaliyetlerimizin sonuçlarını depoya kaydetme zamanının geldiğine karar verdik. Ctrl + S'ye periyodik olarak basıldığında bir benzetme geliyor, tek fark dosyanın bu sürümüne gelecekte erişilebilir. Doğal olarak, bir çırpıda depoya istediğiniz kadar sürüm ekleyebilirsiniz. Büyük bir sayı Dosyalar. Bu eyleme basit bir şekilde "taahhüt" veya "değişiklikleri taahhüt etmek" denir.
İstediğiniz zaman depoya yeni bir dosya ekleyebilir veya mevcut bir dosyayı silebilirsiniz (depo akıllıca böyle adlandırılır) ve VCS ne zaman ve neyi eklediğimizi/kaldırdığımızı "hatırlayacaktır". Ve taahhütlerdeki yorumlar sayesinde, bu taahhüdün gerçekte neden gerçekleştirildiğini de açıklayabilirsiniz (“oraya bir önemsiz şey ekledi” / “muhtemelen gerekli olan parçayı oradan çıkardı”).
Nihayet bir hafta önceki versiyona dönme zamanımızın geldiğini anladığımızda, tüm değişim geçmişine sahibiz. Ve burada ne yapacağımızı seçebiliriz. İstenen parçayı eski dosyadan kopyalayıp içine yapıştırmanız gerekiyorsa şimdiki versiyonu- sadece eski dosyayı depodan çıkarın ve gerekli olanı kopyalayın. Tamamen geri dönmeniz ve eski sürümle çalışmaya devam etmeniz gerekiyorsa, SLE tekrar yardımımıza gelir - önceki sürüme geri dönebilir ve "terk ettiğimiz her şeyi korurken yeni bir şube ("dal") oluşturabilirsiniz. " bir hafta önceki sürümlere geri dönerek. Böylece, bir projenin sürüm geçmişi, "köklerden" (projenin başlangıcı) "dallara" (başarılı ve başarısız düzenlemeler) bir ağaç olarak grafiksel olarak temsil edilebilir. Ek olarak, örneğin aynı kaynak dosyalardan iki farklı sürüm geliştirmeye karar verdiğimizde yapay olarak bir "dal" oluşturulabilir - ilkinde bazı baubles üzerinde çalışıyoruz, ikincisinde - diğerleri üzerinde. Ayrıca, eğer çalışma dosyaları metin belgeleri(ve bazılarında), farklı dalları tek bir dalda birleştirmek mümkündür - sözde birleştirme ("birleştirme"). Şimdi birkaç kişinin bir proje üzerinde çalıştığını ve her birinin kendi "önemsiz şeyi" ile meşgul olduğunu hayal edelim. Bu durumda ortak bir depoya sahip olmak, geliştirmeyi büyük ölçüde basitleştirir.

Teoriden pratiğe veya SLE'yi kullanmaya başlama

Umarım sizi SLE kullanmanın iyi olduğuna ikna edebilmişimdir. Sadece SLE'nin nasıl kullanılacağını öğrenmek için kalır. Yapacağımız şey bu.
Kullanımlarının çeşitli yönleriyle birbirinden farklı olan çeşitli sürüm kontrol sistemleri vardır. Çeşitli sistemlerin işleyişinin incelikleriyle (en azından ilk başta) ilgilenmediğimiz için, bunların en basit ve en kolayına odaklanacağız. Benim düşünceme göre, böyle bir sistem, garip bir şekilde, Mercurial'dir - “ için tasarlanmış bir çapraz platform dağıtılmış sürüm kontrol sistemi. etkili çalışmaçok büyük kod depoları ile " grafik kabuk kaplumbağaHg. Sistem Windows, Linux ve Mac OS X altında çalıştırılabilir.
Hemen bir rezervasyon yapacağım Windows'ta sistemle nasıl çalışılacağını anlatacağım. Linux'ta ustalaşmış olanlar, her şeyi benzetme yoluyla incelemekte zorlanmayacaktır.
Ayrıca, paralel olarak, birlikte çalışmayı öğreneceğiz. ücretsiz konaklama Mercurial depoları - bitbucket.org, tek başına bir proje üzerinde çalışmıyorsanız veya çok uygun olan, projenin tüm sürümlerine İnternet üzerinden erişmek istiyorsanız gereklidir. Temel olarak, daha önce kullandıysanız, kullanışlı bir Dropbox yedeğidir.
İlk önce, tortoisehg.bitbucket.org adresinden Mercurial + TortoiseHg'yi yükleyin.
Bu sistem konsolda çalışıyor, bu yüzden birkaç * . yarasa dosyası tipik işlemler için.
Tüm işlemler hg komutu ile gerçekleştirilir. Parametresiz çağrılır, ana komutları listeler.
Seçtiğimiz herhangi bir dizin ("C: \ proje \" klasörünü kullanacağım), gelecekteki projemizin tüm dosyalarının saklanması gereken bir havuz görevi görür. Tabii ki, hiç kimse bir bilgisayarda birden fazla depoya sahip olmayı yasaklamaz.
Sistemin bir depo oluşturmak istediğimizi "anlamasını" sağlamak için şu komutu çalıştırıyoruz:
hg init c: \ proje
bundan sonra, daha önce oluşturulmamışsa “c: \ proje \” klasörü ve Mercurial'ın tüm hizmet bilgilerini depolayacağı “c: \ proje \ .hg \” klasörü oluşturulacaktır.
Hemen, bilgisayarımızda yalnızca yerel bir havuz değil, aynı zamanda tüm değişikliklerimizi göndereceğimiz (veya akıllı insanların dediği gibi, değişiklikleri uzak bir havuza "zorlamak" için uzak bir havuza da almak istediğimizi hatırlıyoruz. İngilizce "itme"). Bunu yapmak için bitbucket.org'a gidin, kaydolun ve ilk depomuzu oluşturun (Depolar - Yeni depo oluşturun). Depoya bir ad verin (netlik için buna remote_project diyeceğim) ve Depo oluştur'a tıklayın.
Şimdi iki havuzumuz var - biri "c: \ proje \" klasöründe bulunan yerel bir tane ve "bitbucket.org/your_account_name/remote_project/" adresinde bulunan uzak bir tane, bitbucket'e kaydolurken_hesap_adınız belirtilir, remote_project depodur ad, oluşturulduğunda seçilir.
Keşfetmeye devam etmek için yerel depomuza bir şeyler koymamız gerekiyor. Gelecekteki projenizin herhangi bir dosyasını (benim durumumda - "c: \ proje \" klasöründe) oluşturun veya mevcut projenizi oraya kopyalayın.
Şimdi tam olarak söylemek gerekirse, Mercurial'a şunu söylememiz gerekiyor: “bu tür dosyaları ve birkaç yeni klasörü proje klasörüne ekledik”, bunun için “hg add” komutu verilmiştir. Ancak, başka bir yaklaşım daha uygundur - bir sonraki işlemde Mercurial'a proje klasöründen yeni oluşturulan tüm dosyaları almasını ve silinenleri unutmasını söyleyeceğiz, bu “hg add c:\project \ new_document” yürütmekten çok daha kolaydır. .doc” her yeni belge oluşturduğunuzda ”.
Öyleyse, ilk taahhüdümüze geçelim. Aşağıdaki komutla yürütülür:
hg commit –A –m “taahhüt edilecek yorum”
Her şeye sırayla bakalım. Komut depodayken girilmelidir (yani önce “cd c:\project” yürütmeliyiz). Mercurial'ın yeni oluşturulan dosyaları alması için -A seçeneği gereklidir (yukarıya bakın), -m seçeneği işleme bir yorum ekler. Bu yorumlar, TortoiseHg'deki sürümleri (veya değişiklik kümelerini) görüntülerken ve bitbucket.org'daki proje sayfasında görüntülenecektir. Bu veya bu düzenlemenin ne zaman yapıldığını hatırlamak, daha sonra acı çekmemek için anlamlı yorumlar vermek çok önemlidir.
Şimdi havuzumuz projemizin ilk versiyonunu içeriyor. Mevcut sürümü kaydetme zamanının geldiğine karar verdikten sonra tüm diğer taahhütler aynı şekilde gerçekleştirilir.
Taahhüt edilen taahhüt, şu komutla uzak depoya aktarılabilir:
hg push https://bitbucket.org/your_account_name/remote_project
Bu durumda, depoya karşılık gelen klasörde de olmanız gerekir. Komutu girdikten sonra bitbucket.org'daki hesabımızın adı ve şifresi istenecek, her basışta girmemeleri için komut aşağıdaki ile değiştirilebilir:
hg push hg push https: // hesap_adınız:[email protected]/your_account_name/remote_project
Tüm komutları bir * .bat dosyasına çekeceğimiz için, bu durumda şifre açık metin olarak saklanacak ve bu da bazı güvenlik riskleri oluşturuyor, ancak benim için kabul edilebilir.
Bu nedenle, kolaylık sağlamak için doğrudan erişim alanında aşağıdaki içerikle commit.bat, push.bat ve commit & push.bat dosyaları oluşturuyoruz:
[taahhüt.bat dosyasının içeriği]
EĞER!% 1 ==! çıkış1'e git
cd C: \ proje
hg taahhüt -A -m "% *"
0 çıkışına git
: çıkış1
echo "KOMUT HATTI ARG YOK!"
: çıkış0
Argümanlarla çağrılan bu dosya, projeyi taahhüt eder, argümanları taahhüt yorumuna ekler. Örnek: “commit.bat my first taahhüdümü” yürütüyoruz ve “my first taahhüdüm” yorumuyla bir taahhüt alıyoruz. FAR'da bunun için Ctrl + Enter kombinasyonunu kullanmak uygundur.
[push.bat dosyasının içeriği]
cd C: \ proje
hg https'ye basın: // hesap_adınız:[email protected]/account_name/remote_project
Bu dosya uzak depoya gönderilecek.
[taahhüt ve push.bat dosyasının içeriği]
EĞER!% 1 ==! çıkış1'e git
cd C: \ proje
hg taahhüt -A -m "% *"
0 çıkışına git
: çıkış1
echo "KOMUT HATTI ARG YOK!"
: çıkış0
./push.bat'ı ara
Argümanlarla çağrılan bu dosya, taahhüt yorumundaki argümanlar da dahil olmak üzere projenin sıralı bir taahhüt ve itme işlemini gerçekleştirecektir.
Ek olarak, küçük ara kayıtlar için bir commit_date_time.bat dosyası oluşturmanızı tavsiye ederim:
[ commit_date_time.bat dosyasının içeriği]
cd C: \ proje
hg commit -A -m "% DATE%% TIME%"
Bu dosya, genellikle uygun olan bir yorum olarak geçerli tarih ve saati taahhüt eder.
Herkes, yapılan düzenlemelerin yoğunluğuna ve karmaşıklığına bağlı olarak, taahhütlerin sıklığına karar verir ve bireysel olarak iter. Her ne kadar "daha fazlası daha iyidir" kuralına göre yönlendirilmesi tavsiye edilse de.
Deponun dosya/klasörüne sağ tıklayarak, tüm taahhütlerimizi içeren ve bunlara yorum yapan Depo Gezgini'ni (TortoiseHg - Depo Gezgini) başlatabilirsiniz. Bu pencere, depomuzun ağaç yapısını görüntüler, buradan ayrıca taahhütler, itmeler, önceki sürümlere geri alma (geri alma) ve diğer işlemleri yapabilirsiniz.
bitbucket.org/your_account_name/remote_project adresinde benzer bir dizi değişiklik seti vardır ve projenin herhangi bir sürümünü tek bir arşivde indirebilirsiniz, bu bazen çok uygundur.
Genel olarak, Mercurial ile ilk tanışmamın sona erdiğini düşünüyorum. Daha fazlası için detaylı bilgişu adresten iletişime geçilebilir: translate.by/you/mercurial-the-definitive-guide/into-ru/trans/

Bu makale kimin için

Belki de nereden başlamam gerektiğiyle bitireceğim - bu makale kimin için? Cevap basit - SLE kullanmayı öğrenmek isteyenler için. Birkaç tasarımcıyı, mühendisi ve hatta bir yazarı SLE'ye "bağlamayı" başardım. Kendiniz deneyin - bunu yaparak işinizi büyük ölçüde kolaylaştırabilirsiniz.

Not; "Sürüm kontrol sistemleri" bloguna taşındı.

Etiketler: Etiket Ekle

Misha Radionov

Sürüm kontrol sistemleri nedir ve neden bunlara ihtiyacınız var?

Geri vermek

Bir durum düşünün: Çevrimiçi mağazanıza hızlı sipariş işlevi eklemek için bir geliştirici tuttunuz. Sitenin her zaman çalışması ve gelir elde etmesi gerektiğinden, geliştirici yerel sunucusunda çalışmaya karar verir.

Çalışırken, tasarımcı sitenin ana sürümündeki şablonda sizin değiştirdiğiniz yeni bir logo gönderdi. Aynı zamanda, her şeyin müşterilerinizin netbook'larından birinin ekranına sığması için ürünlerin adlarındaki yazı tipini küçülttünüz. Ardından birkaç ürün resmini güncellediniz. Şu anda, geliştirici size bir iyilik yapmaya karar verdi - sitenizin sürümünde önceki geliştiricinin yazdığı açıkçası gereksiz işlevselliği temizlemek. Çoğu zaman olduğu gibi, ikiniz de ciddi bir şey yapmadığınızı düşünüyorsunuz. Ama yanılıyorsunuz.

Geliştiricinin sürümü siteye yüklendiğinde, tüm geliştirme katılımcıları kafalarını çeker. Çalışma sonuçlarınız silinir, hatalar ortalıkta dolanır. Sorunun ne olduğu belli değil. Umarım bu noktada elinizde en azından çalışan bir yedeğiniz olur ve en kötü durumda, sorunları manuel olarak yakalamak için birkaç gün harcarsınız. Bu duruma nasıl girilmez? Hadi söyleyelim.

VCS nedir?

Sürüm kontrol sistemi (İngilizce Sürüm Kontrol Sistemi, VCS veya Revizyon Kontrol Sisteminden) - değişen bilgilerle çalışmayı kolaylaştıran yazılım.

Ve şimdi basit bir şekilde

Bir sürüm kontrol sistemi, aynı belgenin birden çok sürümünü saklamanıza, gerekirse önceki sürümlere dönmenize, belirli bir değişikliği kimin ve ne zaman yaptığını belirlemenize ve çok daha fazlasını yapmanıza olanak tanır.

Başka bir deyişle, VCS, birden çok geliştiricinin aynı dosyaları aynı anda ve bilgisayarlarında yerel kopyalar oluşturmadan değiştirmesine izin verir. Aynı zamanda, tüm değişiklik çeşitleri ayrı ayrı kaydedilir ve farklı kişilerden farklı düzenlemeleri dikkate alarak aynı dosyanın farklı sürümlerini oluşturabilirsiniz. Birkaç değişiklik belgenin aynı parçasını etkiliyorsa, sistem istenen seçeneği seçmeyi önerecektir.


Tipik olarak, bir sürüm kontrol sistemi ile çalışmak için kullanılır ayrı bilgisayar(sunucu) veya böyle bir sunucu kiralama olanağı sağlayan bir İnternet hizmeti.

Basit bir örnek

eğer birin üzerindeyse Excel belgesi Birkaç kişi çalışıyorsa, düzenleme için dosyaya yalnızca bir kişi erişebilir, geri kalanı "salt okunur" erişime sahip olur. VCS kullanımıyla, dosyayı bir kerede ve herkesle düzenleme olanağına sahip olursunuz. Tek koşul, değişiklik yaptıktan sonra dosyanın sunucuya değil, sunucuya kaydedilmesi gerektiğidir. yerel bilgisayar... Ancak yukarıda belirtildiği gibi, araçlar bu tür eylemleri gerçekleştirmeyi kolay ve basit hale getirir.

Stüdyo Bayrakta sürüm kontrol sistemi

Çalışmamızda Git sürüm kontrol sistemini kullanıyoruz. Bu sistem en yaygın VCS'lerden biridir. Bu nedenle Git topluluğundan çok fazla destek var. Ayrıca avantaj, sistemin kolay yönetilmesidir, çünkü geniş bir yelpaze var yazılım ürünleri Bu sistem için özel olarak geliştirilmiştir.

IntelliJ IDEA adlı bir kod geliştirme programı kullanıyoruz. Sürüm kontrolü ile çalışmak için uygun bir arayüz de dahil olmak üzere geliştiriciler için geniş bir işlevsel temel olan bir IDE sağlar. Böylece, programdan ayrılmadan, ihtiyacımız olan sitede bu veya bu geliştirici tarafından hangi değişikliklerin yapıldığını görebiliriz. Veya değişikliklerinizi kaybetme korkusu olmadan başka bir geliştirici tarafından yapılan değişiklikleri alın. IDEA arayüzü şöyle görünür:


Sürümleri depolamak için kullanıyoruz Bulut hizmeti Bitbucket. Bu hizmet, kullanıcı dostu bir arayüze sahiptir ve sürümlerinizi saklamanın yanı sıra, farklı kullanıcılar için ürünlerinize erişim kurallarını yönetmenize olanak tanır. kullanmanın avantajı Bulut depolama sunucu yapılandırması ve yönetimi bilgisi için herhangi bir gereksinimin olmamasıdır. Her şeyi kutudan çıkarırsınız ve hemen kullanmaya başlayabilirsiniz. Bitbucket'e yüklediğiniz her şey özeldir, yani. izniniz olmadan, kimse ne tuttuğunuzu bile göremez. Bitbucket arayüzü:



VCS kullanımı bize ne sağlar?

  • Sistemden aldığımız dosyaların herhangi bir zamanda her zaman güncel olduğuna dair tam güven.
  • Sunucuya bağlanmanıza izin verecek herhangi bir bilgisayardan gerekli sürümü alma yeteneği.
  • Bir dosyayı VCS'ye kaydederken, aynı dosyayla çalışan birinin yeniden kaydedip değişikliklerin üzerine yazacağı gerçeğini düşünmenize gerek yoktur.
  • Yazılım geliştiriciler için sistemin kullanımı, geliştiricilerden biri tarafından yapılan değişikliklerin kabulüne/reddedilmesine de olanak tanır.

Müşterilerimize ne sağlar

Başta tartıştığımız duruma geri dönelim. VCS ile olacağı gibi. Geliştirici, kodunu ayrı bir şubeye yükler. Değişiklikleri gözden geçirir ve yalnızca her şeyin yolunda olduğunu görürseniz uygularsınız. Her şey tek bir yerde saklanır, güvenli, hızlı ve kullanışlı. Ve birkaç geliştirici olduğunda, VCS olmadan yapamazsınız.

görüntülemek için lütfen JavaScript'i etkinleştirin.

Çoğu zaman, geliştiriciler bir ekipte tek bir proje üzerinde çalışır; bu, aynı anda birkaç kişinin bir dosyayı aynı anda değiştirebileceği anlamına gelir. Bu gibi durumlarda karışıklığı önlemek için, proje değişikliklerinin geçmişini saklamanıza ve gerekirse önceki bir sürüme geri dönmenize yardımcı olan bir sürüm kontrol sistemi kullanılır.

sürüm oluşturma

Sürüm oluşturma sorununu daha iyi anlamak için, bir proje üzerinde çalışmayı bitiren ve son sürümü bir müşteriye gönderen bir tasarımcı örneğini düşünün. Tasarımcı, projenin son sürümünün depolandığı bir klasöre sahiptir:

Kaynak / barbershop_index_final.psd

Her şey yolunda, tasarımcı işi bitirdi, ancak müşteri düzenlemeleri geri gönderdi. geri dönebilmek için eski versiyon projede, tasarımcı yeni bir barbershop_index_final_2.psd dosyası oluşturdu, değişiklikler yaptı ve müşteriye gönderdi:

Kaynak / barbershop_index_final.psd barbershop_index_final_2.psd

Hepsi bu kadar değildi, sonuç olarak proje yapısı büyüdü ve şöyle görünmeye başladı:

Kaynak / barbershop_index_final.psd barbershop_index_final_2.psd… barbershop_index_final_19.psd… barbershop_index_latest_final.psd barbershop_index_latest_final_Final.psd

Muhtemelen birçoğu, örneğin ders çalışırken dönem ödevi yazarken bununla zaten karşılaşmıştır. Profesyonel gelişimde, sürüm oluşturmak için yeni dosyaları kullanmak kötü bir uygulamadır. Genellikle geliştiricilerin proje klasörlerinde çok sayıda dosya bulunur. Ayrıca, bir proje üzerinde birkaç kişi çalışabilir. Sürüm oluşturma için her geliştirici, önceki sürümün adını biraz değiştirerek yeni bir dosya oluşturursa, yakında projede kaos başlayacak ve hiç kimse hangi dosyaların açılması gerektiğini anlamayacaktır.

Git

Dosyaların yeni bir sürümünü kaydetme sorununu çözmek için sürüm kontrol sistemlerini kullanmak uygundur. En popüler olanlardan biri Git'tir. Git, bilgisayar oyunlarında kaydetme ve yükleme işlemiyle karşılaştırılabilir:

  • ileride zor bir savaş bekliyorsa, ondan önce önceden tasarruf etmek daha iyidir;
  • bunu yapmak için özel bir komut çalıştırmanız gerekir;
  • bundan sonra kaydetme gider özel klasör ve oyunun durumunu içerir;
  • şimdi, gerekirse oyunun önceki sürümüne geri dönmek her zaman mümkündür.

BazıOyun / | - kaydeder | | - save001.sav | | - save002.sav | | … | | klasörü kaydet | | -game.exe | ... oyun dosyaları

Uygulamanın çalışması için gereken dosyalar çalışma alanında depolanır. Kayıtlar klasörü, tüm oyun kayıtlarının geçmişini içerir. Git, proje kodunuzu aynı şekilde kaydeder: kaydetmeler özel bir gizli klasör ve çalışma alanı, kök klasörün içeriğidir.

Temel konseptler

GUI

Özel programlar Git ve GitHub ile çalışmayı kolaylaştırabilir. Uygun bir biçimde bu tür programlar, koddaki değişiklikleri, taahhütlerin bir listesini gösterir ve diğer uygun özelliklere sahiptir. Genellikle, bu tür programlar standart Git komutlarını yürütme yeteneğine sahiptir: çekme, itme, işleme ve diğerleri - sadece bir düğmeyi tıklayarak.

Temas halinde

Telgraf

Fok
Konunun devamı:
ağlar

Kitapları cihazıma nasıl kopyalarım? Cihazınızı bilgisayaranıza bağlayın. Cihaz, açık durumda PC'ye bağlanmalıdır. E-kitap ekranının alt kısmında...