dağıtılmış bir kaynak kontrol sisteminin piyasaya sürülmesi . Git, dallanma ve birleştirmeye dayalı esnek, doğrusal olmayan geliştirme araçları sağlayan, en popüler, güvenilir ve yüksek performanslı sürüm kontrol sistemlerinden biridir. Geçmişin bütünlüğünü ve geriye dönük değişikliklere karşı direnci sağlamak için, her bir taahhütte önceki geçmişin tamamının örtülü karması kullanılır; bireysel etiketleri ve taahhütleri geliştiricilerin dijital imzalarıyla sertifikalandırmak da mümkündür.
Önceki sürümle karşılaştırıldığında yeni sürüm, 544 geliştiricinin katılımıyla hazırlanan ve 78'i ilk kez geliştirmede yer alan 21 değişiklik içeriyordu. :
- Kendileriyle ilişkili belirli seçenekler hakkında ayrıntılara girmeden, farklı ayar kümeleri arasında hızlı bir şekilde geçiş yapabileceğiniz yapılandırma makroları için destek eklendi. Makroların yardımıyla, belirli bir işlevi etkinleştirmek için hangi ayarların değiştirilmesi gerektiğini hatırlamanıza gerek yoktur. Örneğin, büyük bir depo yavaşsa, yeni bir indeksleme motoruna geçmek, yol öneki sıkıştırmasını etkinleştirmek ve index.version'ı 4'e ayarlayıp core.untrackedCache'i etkinleştirerek izlenmeyen dosya önbelleğini etkinleştirmek isteyebilirsiniz. Makrolar, belgelerde doğru çözümü arayarak zaman kaybetmemenizi, ancak çok sayıda dosya içeren depolar için optimizasyonlarla ayarları hemen etkinleştirmenizi sağlar:
git config feature.manyFiles true
- Nesnelerin taahhüt grafiği olarak depolanması artık varsayılan olarak etkinleştirilmiştir. Bu özellik, diğer nesnelere bağlantılar içeren doğrusal bir nesne karma listesi yerine, indeksleme için bir grafik yapısı kullanır. Daha önce, belirli bir düzeltmeyi içeren sürümleri belirlemek için bağlantıları bulmak üzere her nesneyi diskten yüklemek gerekiyordu. Şimdi, grafik depolama ile gerekli tüm bağlantılar tek seferde belirlenebilir. Çekirdek depolarında taahhüt grafiği depolamasına geçiş Linux Git, dal işlemlerinin performansını neredeyse iki katına çıkardı. Git 2.24'e yükselttikten sonra yeni depolama yöntemini etkinleştirmek için "git gc" komutunu çalıştırın.
Taahhüt grafiği ile ilgili değişiklikler arasında, taahhüt grafiği ile ilgili komutlarda işlem ilerleme göstergesinin uygulanmasının (“git taahhüt-graf yazma”, “git taahhüt-graf doğrulama” vb.) getirildiğini de not ediyoruz. diğer komutlarla ortak bir forma dönüştürülür.) İlerleme göstergesi artık varsayılan olarak yalnızca terminal için görüntüleniyor (davranışı değiştirmek için "-[no-]ilerleme" seçeneğini kullanın). Ek olarak, “git fetch” işlemleri sırasında dosyanın commit grafiğiyle otomatik olarak güncellenmesini sağlayan yeni bir yapılandırma parametresi fetch.writeCommitGraph eklenmiştir (harici depolardan alınan tüm commitler, herhangi bir işlem yapılmasına gerek kalmadan hemen commit-grafına gidecektir). auto-gc'yi ayrı olarak çalıştırın);
- Değişiklik geçmişinin üzerine yazmak için bir komut eklendi - "" komutunun daha basit bir alternatifi olan "» depodaki değişikliklerin geçmişine ilişkin işlemler gerçekleştirmek (örneğin, depodan bir dosyayı silmek veya belirli bir dizindeki değişiklik geçmişini almak). Verimliliği artırmak için, düzenli bir şekilde işleme göre ayrıştırma yerine git filter-repo, geçmiş temsili üzerinde işlemleri sürekli bir akış biçiminde gerçekleştirir.
Geçmiş filtreleme, hem basit maskeleri hem de normal ifadeleri kullanmanıza olanak tanıyan “-path-{glob,regex}” seçeneği kullanılarak gerçekleştirilir. Ayrıca, belirli bir boyuttan daha büyük olan ikili nesneleri arama ve değiştirme veya temizleme seçenekleri de vardır. Yeniden yazılan her onaylama, yeni bir SHA-1 karma tanımlayıcısıyla sağlanır ve değiştirilen işleme yapılan tüm referanslar, yeni tanımlayıcıya uygun olarak güncellenir.
Depoya ilişkin istatistiklerin bir özetini (türe göre nesne sayısı, en büyük dosya ve dizinler, hangi uzantıların daha fazla disk alanı gerektirdiği vb.) görüntülemek için “-analyze” seçeneği sağlanır. İşlevselliği genişletmek için Python'da hem yeni alt komutlar oluşturabileceğiniz hem de çeşitli olayları (örneğin, yeni dosya türleri) işleyebileceğiniz isteğe bağlı geri çağırma işleyicileri bağlamak mümkündür;
- Seçenekleri bağlantı adlarından ayırmak için "-" karakteriyle başlayabilen ve seçenek olarak değerlendirilebilen "--end-of-options" seçeneği eklendi ("git log --end-of-options -super-dangerous-option" ). Günlük yaşamda bu tür adlardan "git log 'refs/heads/—süper-tehlikeli-seçenek'" şeklinde kaçınılabiliyorsa, o zaman komut dosyalarının ad alanını tanımlamada sorunları olabilir. Genel olarak kabul edilen sınırlayıcı " - ", bağlantı adlarını dosyalardan ayırmak için zaten kullanıldığından bu durumda uygulanamaz (örneğin, “git log —end-of-options —super-dangerous-option ^master — path/to) /dosya");
- Seçmek için "git rebase --rebase-merges" öğesine "--strategy" ve "--strategy-option" seçenekleri eklendi ;
- Birleştirme tamamlandıktan sonra ancak ortaya çıkan kayıt yazılmadan önce çağrılan yeni bir ".git/hooks/pre-merge-commit" işleyicisi eklendi;
- Komut tamamlama motoruna, belirli komutların ayarlarıyla ilgili yapılandırma değişkenlerinin tamamlanmasına yönelik destek eklendi.
Örneğin, "git -c core.autocrlf=false add path/to/my/file" yazmanız gerekiyorsa ancak "core.autocrlf" değişkeninin tam adını hatırlamıyorsanız, Sekme tuşuna basıp bir sonuç alabilirsiniz. ipucu.
Ayrıca Git geliştiricileri Çatışma durumlarını çözmek için temel ilkeleri tanımlayan bir proje katılımcısı için davranış kuralları. Belge tavsiyelere dayanmaktadır ""Çekirdek de dahil olmak üzere birçok açık kaynak projesinde kullanılan " LinuxEclipse, Freedesktop, GitLab, Ruby ve Kubernetes. Bu belge, dünya görüşü, yaş, cinsiyet, dini inançlar, eğitim seviyesi, sosyal statü ve milliyet ayrımı gözetmeksizin tüm katılımcılar için eşit fırsatlar sağlamayı amaçlamaktadır. Topluluk, dostane iletişimi, anlayışı, başkalarının sorunlarına empati göstermeyi, yapıcı eleştiriyi kabul etmeyi ve topluluğun tamamı için en iyi çözümlerin benimsenmesini teşvik eder. Trollük, saldırgan iletişim, aşağılama girişimleri, taciz, gizliliğin ihlali, kişisel bilgilerin ifşası ve profesyonel iletişimde uygunsuz sayılabilecek diğer eylemler yasaktır.
Kaynak: opennet.ru
