Bu son birkaç haftadır üzerinde çalıştığım bir şey. Hala evrim geçiriyor, ama yardımcı olabilir. Lütfen bir Performce çalışanı olduğumu unutmayın.
Git kullanıcıları için Performans'a giriş
Git'ten Performans'a veya Performanstan Git'e geçişin önemsiz olduğunu söylemek büyük bir eksikliktir. Görünüşte aynı şeyi yapan iki araç olduğu için yaklaşımları daha farklı olamazdı. Bu kısa yazı Git'ten gelen yeni Perforce kullanıcılarının yeni dünyalarını anlamalarına yardımcı olmaya çalışacaktır.
Biz dalış önce kısa bir servis yolu; Git'i tercih ederseniz Git'i Performce ile oldukça iyi kullanabilirsiniz. Perforce sunucusuyla senkronize tutulan Git depolarını oluşturan Git Fusion adlı bir araç sunuyoruz. Git ve Perforce kullanıcıları aynı kod üzerinde çalışarak uyum içinde yaşayabilirler, çoğunlukla çalışma arkadaşlarının sürüm kontrolü tercihlerinden etkilenmezler. Git Fusions 13.3, Perforce web sitesinden edinilebilir . Perforce yöneticisi tarafından yüklenmesi gerekir, ancak yüklerseniz depo dilimleme özelliğinin Git kullanıcısı olarak oldukça kullanışlı olabileceğini göreceksiniz.
Yöneticinizi Git Fusion'ı yüklemeye ikna edemiyorsanız Git'in kendisi Git-P4 adında bir Performans bağlamasıyla birlikte gelir ve Git'i bir Perforce çalışma alanındaki dosyaları değiştirmek ve göndermek için kullanabilirsiniz. Bununla ilgili daha fazla bilgiyi şu adreste bulabilirsiniz: https://git.wiki.kernel.org/index.php/GitP4
Hala burada? Güzel, haydi Perforce'ye bakalım.
Çözülecek Bazı Terminoloji Farklılıkları
Detaylara girmeden önce Git ve Perforce arasındaki birkaç terminoloji farkını kısaca ele almamız gerekiyor.
Birincisi ödeme . Git'te, kodun belirli bir daldan çalışma alanınıza bir kopyasını bu şekilde alırsınız. Perforce'de buna komut satırından veya GUI P4V "En Son Revizyonu Al" dan bir senkronizasyon diyoruz . Perforce , P4V'den veya komut satırından çıkış kelimesini p4 edit
sürüm kontrol sisteminden bir dosyayı değiştirmeyi planladığınız anlamına gelir. Bu belgenin geri kalanında, kelimenin Performans anlamında ödeme kullanacağım.
İkinci Git olduğunu taahhüt Perforce karşı teslim . Git'te nerede taahhütte bulunacağınızı Performans olarak sunacaksınız. Tüm işlemlerin paylaşılan Perforce sürümlendirme hizmetine karşı gerçekleşmesi nedeniyle, Perforce'nin eşdeğeri yoktur git push
. Aynı şekilde pull
; yukarıdan senkronizasyon komutu bizim için dosya almayı halleder. Aşağıda kısaca açıklanan P4Sandbox aracımızı kullanmayı seçmedikçe, Performans'ta saf bir yerel gönderim kavramı yoktur.
Performansta Anahtar Kavramlar
Performansı iki temel kavrama sadeleştirecek olsaydım depoya ve çalışma alanına odaklanırdım. Perforce deposu, Perforce sunucusunda yaşayan dosyaların deposudur. Performans sunucusunda herhangi bir sayıda depo bulunabilir ve her depoda çok sayıda dosya bulunabilir. Perforce kullanıcılarının depo ve sunucuyu birbirinin yerine kullandığını sık sık duyarsınız, ancak bunlar farklıdır. Bir Performans sitesi birden çok sunucuya sahip olmayı seçebilir, ancak çoğunlukla tüm dosyalar tek bir sunucuda bulunur.
Performans çalışma alanı veya istemcisi, sistemdeki Performans sunucusundaki bir dizi dosyayı kullanıcının dosya sistemindeki bir konuma eşleyen bir nesnedir. Her kullanıcının kullandığı her makine için bir çalışma alanı vardır ve sıklıkla kullanıcılar aynı makine için birden fazla çalışma alanına sahip olur. Çalışma alanının en önemli kısmı çalışma alanı eşlemesi veya görünümüdür.
Çalışma alanı görünümü, depodaki yerel makineyle eşlenmesi gereken dosya kümesini belirtir. Bu önemlidir, çünkü sunucuda bulunan tüm dosyaları istememe şansınız vardır. Çalışma alanı görünümü, yalnızca önem verdiğiniz seti seçmenizi sağlar. Bir çalışma alanının birden fazla depodaki içeriği eşleyebileceğini, ancak yalnızca bir sunucudaki içeriği eşleyebileceğini unutmayın.
Bu bağlamda Performansı Git ile karşılaştırmak için Git ile ilgilendiğiniz Git depoları kümesini seçer ve seçersiniz. Her repo genellikle ilgili dosyaları içerecek şekilde sıkıca kaplanır. Bunun avantajı, sizin tarafınızdan yapılacak bir yapılandırma olmamasıdır; önem verdiğiniz şeylerin git klonunu yaparsınız ve işiniz biter. Bu, yalnızca bir veya iki havuzla çalışıyorsanız özellikle güzeldir. Perforce ile istediğiniz kod parçalarını seçmek ve seçmek için biraz zaman harcamanız gerekir.
Birçok Perforce mağazası, otomatik olarak bir çalışma alanı görünümü oluşturabilen akışlar kullanır veya komut dosyalarını veya şablon çalışma alanlarını kullanarak görünümü oluşturur. Aynı şekilde, çoğu kullanıcı çalışma alanlarını kendileri oluşturmak için terk eder. Bir çalışma alanında birkaç modülü eşleştirmenin bir avantajı, tek bir check-in'de birden fazla kod modülünü kolayca değiştirebilmenizdir; check-in'inizle senkronize edilen benzer bir müşteri görünümüne sahip olan herkesin tüm kodun doğru durumda olacağı garanti edilebilir. Bu aynı zamanda aşırı bağımlı koda da yol açabilir; Git'in zorla ayrılması daha iyi modülerliğe yol açabilir. Neyse ki Perforce de katı modülerliği de destekleyebilir. Her şey aracı nasıl kullanmayı seçtiğinize dair bir soru.
Neden Çalışma Alanları?
Git'ten geldiğimde, tüm çalışma alanı konseptinin değerinden çok daha fazla sorun olduğunu hissetmek kolay. Birkaç Git deposunu klonlamakla karşılaştırıldığında, bu kuşkusuz doğrudur. Çalışma alanlarının parladığı ve Perforce'nin bunca yıldan sonra hala iş dünyasında olmasının nedeni, çalışma alanlarının geliştiriciler için milyonlarca dosya projesini çözümlemenin harika bir yolu olması ve aynı zamanda tüm kaynağın birlikte alınmasını ve yayınlanmasını kolaylaştırmasıdır. bir yetkili kaynak. Çalışma alanları, Perforce'nin ölçeklendirdiği kadar ölçeklendirebilmesinin temel nedenlerinden biridir.
Çalışma alanları ayrıca depodaki dosyaların düzeninin ve kullanıcının makinesindeki düzenin gerektiğinde değişebilmesi açısından da iyidir. Birçok şirket depolarını, şirketlerinin organizasyonunu yansıtacak şekilde düzenleyerek insanların iş birimi veya projeye göre içerik bulmasını kolaylaştırır. Ancak yapı sistemleri bu hiyerarşiyi daha az umursamazdı; çalışma alanı, depo hiyerarşilerini araçlarına mantıklı bir şekilde yeniden eşlemelerine olanak tanır. Ayrıca, kodun insanlar için tamamen kafa karıştırıcı olan çok özel yapılandırmalarda olmasını gerektiren son derece esnek olmayan yapı sistemleri kullanan şirketler tarafından da kullanıldığını gördüm. Çalışma alanları, bu şirketlerin, yapı araçları ihtiyaç duydukları yapıyı elde ederken insan tarafından yönlendirilebilen bir kaynak hiyerarşisine sahip olmalarını sağlar.
Performance'daki çalışma alanları yalnızca bir kullanıcının çalışmak istediği dosya kümesini eşlemek için değil, aynı zamanda sunucu tarafından kullanıcının her bir dosyanın hangi revizyonlarını tam olarak senkronize ettiğini izlemek için de kullanılır. Bu, sistemin hangi dosyaların güncellenmesi gerektiğini görmek için dosyaları taramak zorunda kalmadan senkronize edilirken kullanıcıya doğru dosya kümesini göndermesini sağlar. Büyük miktarda veri ile bu büyük bir performans kazancı olabilir. Bu, çok sıkı denetim kurallarına sahip endüstrilerde de çok popülerdir; Performans yöneticileri hangi geliştiricilerin hangi dosyaları senkronize ettiğini kolayca izleyebilir ve günlüğe kaydedebilir.
Perforce çalışma alanlarının tüm gücü hakkında daha fazla bilgi için P4'ü Yapılandırma konusunu okuyun .
Açık Checkout ve Örtülü Checkout
Git'ten Perforce'a geçiş yapan kullanıcılar için en büyük zorluklardan biri açık ödeme konseptidir. Dosyaları değiştirme Git / SVN / CVS iş akışına alışkınsanız ve daha sonra sürüm kontrol sistemine yaptıklarınızı aramasını söylüyorsanız, son derece acı verici bir geçiş olabilir.
İyi haber şu ki, eğer seçerseniz, Performce'de Git tarzı iş akışıyla çalışabilirsiniz. Perforce'de çalışma alanınızda "allwrite" seçeneğini ayarlayabilirsiniz. Bu, Perforce'a tüm dosyaların yazılabilir bit seti ile diske yazılması gerektiğini söyleyecektir. Daha sonra Perforce'ı açıkça söylemeden istediğiniz herhangi bir dosyayı değiştirebilirsiniz. Perforce'nin yaptığınız değişiklikleri uzlaştırması için "p4 durumu" nu çalıştırabilirsiniz. Dosyaları uygun şekilde eklemek, düzenlemek ve silmek için açar. Bu şekilde çalışırken sunucudan yeni revizyonlar almak için "p4 senkronizasyonu" yerine "p4 güncellemesi" ni kullanmak isteyeceksiniz; "p4 güncellemesi" senkronizasyondan önce değişiklikleri kontrol eder, bu nedenle henüz "p4 durumu" nu çalıştırmadıysanız yerel değişikliklerinizi engellemez.
Neden Açık Ödeme?
Sık sık aldığım bir soru "neden hiçbir zaman açık ödeme kullanmak istesin?" İlk başta kızarmak çılgın bir tasarım kararı gibi görünebilir, ancak açık kasanın bazı güçlü faydaları vardır.
Açık bir ödeme yapmanın bir nedeni, dosyaları içerik değişiklikleri için tarama ihtiyacını ortadan kaldırmasıdır. Farklılıkları bulmak için her dosya için karmaları hesaplayan daha küçük projelerle birlikte, kullanıcılarımızın çoğunun çalışma alanında milyonlarca dosya ve / veya daha büyük olmasa da 100 megabayt boyutunda dosyaları vardır. Bu durumlarda tüm karmaları hesaplamak son derece zaman alıcıdır. Açık ödeme, Perforce'nin tam olarak hangi dosyalarla çalışması gerektiğini bilmesini sağlar. Bu davranış, Perforce'nin oyun, film ve donanım endüstrileri gibi büyük dosya endüstrilerinde bu kadar popüler olmasının nedenlerinden biridir.
Başka bir fayda, açık ödeme, geliştiricilerin genellikle akranlarının ne üzerinde çalıştığını veya en azından nerede olduğunu bilmesini sağlayan bir asenkron iletişim biçimi sağlar. Gereksiz bir çatışmayı önlemek için belirli bir alanda çalışmaktan kaçınmak isteyebileceğinizi bildirebilir veya takımdaki yeni bir geliştiricinin belki de ihtiyaç duymadıkları kodlara girdiği konusunda sizi uyarabilir. düzenleme. Benim kişisel deneyimim, Git'te ya da Perforce'ı tek ya da nadiren katkıda bulunduğum projelerde allwrite ile kullanma eğilimindeyim ve bir ekiple sıkı çalıştığımda açık ödeme yapıyorum. Neyse ki seçim senin.
Açık ödeme, beklemedeki changelistlerin Perforce konseptiyle de güzel oynuyor. Bekleyen değişiklik listeleri, açık dosyalarınızı çalışmanızı düzenlemek için koyabileceğiniz kovalardır. Git'te potansiyel olarak işi düzenlemek için farklı dalları kova olarak kullanırsınız. Şubeler harika, ancak bazen gerçekten sunucuya göndermeden önce çalışmanızı adlandırılmış birden çok değişiklik halinde organize edebilmek güzeldir. Potansiyel olarak birden fazla dalı veya birden fazla projeyi tek bir çalışma alanında eşleme potansiyeli olan beklemedeki değiştiriciler ayrı değişiklikleri düzenli tutmayı kolaylaştırır.
Visual Studio veya Eclipse gibi geliştirme için bir IDE kullanıyorsanız, IDE'niz için bir Perforce eklentisi yüklemenizi kesinlikle tavsiye ederim. Çoğu IDE eklentisi, dosyaları düzenlemeye başladığınızda dosyaları otomatik olarak teslim alır ve ödeme işlemini kendiniz yapmaktan kurtarır.
Git Özellikleri İçin Performans Değiştirmeleri
git stash
==> p4 shelve
- git yerel dallanma ==> Performans rafları veya görev dalları
git blame
==> p4 annotate
veya Perforce Timelapse Görünüm GUI
Çalışma Bağlantısı Kesildi
Perforce versiyonlama servisiyle bağlantısı kesilmiş çalışmak için iki seçenek vardır (bu, Perforce sunucusu için fantezi terimimizdir).
1) Tam yerel sürüm ve yerel dallamaya sahip olmak için P4Sandbox kullanın
2) Dosyaları istediğiniz gibi düzenleyin ve Perforce'a ne yaptığınızı söylemek için 'p4 durumu' kullanın
Yukarıdaki seçeneklerin her ikisiyle de, dosyaların kilidini açmak zorunda kalmamak için çalışma alanınızdaki "allwrite" ayarını kullanmayı seçebilirsiniz. Bu modda çalışırken, "p4 sync" yerine yeni dosyaları senkronize etmek için "p4 update" komutunu kullanmak istersiniz. "p4 güncellemesi" dosyaları senkronize etmeden önce değişiklik olup olmadığını kontrol eder.
Hızlı Başlangıç
Aşağıdaki tüm örnekler komut satırı üzerinden olacaktır.
1) Perforce bağlantınızı yapılandırın
export P4USER=matt
export P4CLIENT=demo-workspace
export P4PORT=perforce:1666
Bu ayarları kabuk yapılandırma dosyanıza yapıştırabilir p4 set
, Windows ve OS X'e kaydetmek için kullanın veya bir Perforce yapılandırma dosyası kullanabilirsiniz.
1) Çalışma alanı oluşturma
p4 workspace
# set your root to where your files should live:
Root: /Users/matt/work
# in the resulting editor change your view to map the depot files you care about
//depot/main/... //demo-workspace/main/...
//depot/dev/... //demo-workspace/dev/...
2) Dosyaları sunucudan alın
cd /Users/matt/work
p4 sync
3) Üzerinde çalışmak istediğiniz dosyayı kontrol edin ve değiştirin
p4 edit main/foo;
echo cake >> main/foo
4) Sunucuya gönderin
p4 submit -d "A trivial edit"
5) p4 help simple
Perforce ile çalışmanız gereken temel komutları görmek için çalıştırın .