Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen perlgit komutudur.
Program:
ADI
perlgit - Git ve Perl deposu hakkında ayrıntılı bilgi
TANIM
Bu belge, Perl'i geliştirmek için git'i kullanma hakkında ayrıntılar sağlar. sadece ilgileniyorsanız
hızlı bir yama üzerinde çalışırken, önce perlhack'e bakın. Bu belge şu kişiler için hazırlanmıştır:
git deposuna yazma erişimi olanlar da dahil olmak üzere Perl'e düzenli olarak katkıda bulunurlar.
KLONLAMA L' DEPO
Perl'in kaynak kodunun tamamı, adresindeki Git deposunda merkezi olarak tutulur. perl5.git.perl.org.
Aşağıdakileri çalıştırarak havuzun salt okunur bir klonunu oluşturabilirsiniz:
% git klon git://perl5.git.perl.org/perl.git perl
Bu, git protokolünü kullanır (bağlantı noktası 9418).
Güvenlik duvarı nedenleriyle git protokolünü kullanamıyorsanız, http üzerinden de klonlayabilirsiniz,
bu çok daha yavaş olsa da:
% git klonu http://perl5.git.perl.org/perl.git perl
ÇALIŞMA İLE L' DEPO
Depo dizinine geçtikten sonra, onu inceleyebilirsiniz. Bir klondan sonra
depo, aynı zamanda geçerli şube olacak tek bir yerel şube içerecektir,
yıldızla belirtildiği gibi.
% git dalı
* kanayan
"Şube" için -a anahtarının kullanılması, aynı zamanda uzaktan izleme dallarını da gösterecektir.
depo:
% git şubesi -a
* kanayan
köken/KAFA
köken/kanat
Kendi ID’n ile mağazalarını oluştur
"Origin" ile başlayan dallar, klonladığınız "git remote" a karşılık gelir.
("köken" olarak adlandırılır). Uzaktan kumandadaki her şube, bunlar tarafından tam olarak izlenecektir.
dallar. Bu uzaktan izleme dallarında ASLA çalışma yapmamalısınız. sadece sen yaparsın
yerel bir şubede çalışın. Yerel dallar, bir ağdan otomatik olarak birleşecek (çekildiğinde) yapılandırılabilir.
belirlenmiş uzaktan takip şubesi. Bu, varsayılan "blead" dalı olan durumdur.
"Origin/blead" uzaktan izleme dalından birleşecek şekilde yapılandırılacaktır.
Son taahhütleri görebilirsiniz:
% git günlüğü
Ve depodan yeni değişiklikleri alın ve yerel deponuzu güncelleyin (temiz olmalıdır)
ilk)
% git çekme
Bir çekmeden hemen sonra "blead" dalında olduğumuzu varsayarsak, bu komut daha fazla olacaktır.
veya daha az eşdeğer:
% git getirme
% git birleştirme kaynağı/blead
Hatta çalışma alanınıza dokunmadan yerel deponuzu güncellemek istiyorsanız
yaptığınız dizin:
% git getirme
Ve tanımlı tüm uzaktan kumandalar için uzaktan izleme şubelerinizi güncellemek istiyorsanız
aynı anda yapabilirsin
% git uzaktan güncelleme
Bu son iki komuttan hiçbiri çalışma dizininizi güncellemeyecek, ancak her ikisi de
deponuzdaki uzaktan izleme dallarını güncelleyin.
Uzak bir şubenin yerel şubesini yapmak için:
% git checkout -b maint-5.10 Origin/maint-5.10
Blead'e geri dönmek için:
% git ödeme sayfası
Bulma dışarı senin durum
Kullanacağınız en yaygın git komutu muhtemelen
% git durumu
Bu komut, çıktı olarak havuzun mevcut durumunun bir açıklamasını üretecektir,
değiştirilmiş dosyalar ve göz ardı edilmeyen izlenmeyen dosyalar dahil ve buna ek olarak
Bir sonraki işleme için hangi dosyaların hazırlandığı gibi şeyler ve genellikle bazı yararlı şeyler
şeylerin nasıl değiştirileceği hakkında bilgi. Örneğin aşağıdakiler:
$ git durumu
# Dal kanadında
# Şubeniz 1 taahhüt ile 'Origin/blead' önünde.
#
# Yapılacak değişiklikler:
# ("git reset HEAD" kullanın ..." sahneyi kaldırmak için)
#
# değiştirilmiş: pod/perlgit.pod
#
# Değiştirildi ancak güncellenmedi:
# ("git ekle"yi kullanın ..." taahhüt edilecek olanı güncellemek için)
#
# değiştirilmiş: pod/perlgit.pod
#
# İzlenmeyen dosyalar:
# ("git ekle"yi kullanın ..." taahhüt edilecek olanı dahil etmek için)
#
# kasıtlı.izlenmemiş
Bu, taahhüt için hazırlanan bu belgede değişiklikler olduğunu ve
çalışma dizininde daha fazla değişiklik henüz yapılmadı. Ayrıca bir var olduğunu gösterir
çalışma dizinindeki izlenmeyen dosya ve gördüğünüz gibi tümünün nasıl değiştirileceğini gösterir.
Bugün nasılsın. Ayrıca, "blead" çalışma dalında olmayan bir taahhüdün olduğunu gösterir.
henüz "orijin" uzaktan kumandasına itildi. NOT: bu çıktı aynı zamanda bir
"git commit" için bir mesaj sağlamazsanız şablon.
Patch iş akışı
Öncelikle, Perl çekirdeğini hacklemeyle ilgili ayrıntılar için lütfen Perlhack'i okuyun. O belge kapsıyor
iyi bir yamanın nasıl oluşturulacağına dair birçok ayrıntı.
Halihazırda bir Perl deponuz varsa, kanama şube,
ve deponuz güncel:
% git ödeme sayfası
% git çekme
En son blead sürümüne karşı yama yapılması tercih edilir, çünkü burası yeni
geliştirme, kritik hata düzeltmeleri dışındaki tüm değişiklikler için gerçekleşir. Kritik hata düzeltme yamaları
ilgili ana şubeler aleyhine yapılmalı veya tutanakla ibraz edilmelidir.
düzeltmenin uygulanması gereken tüm dalları gösterir.
Artık her şey güncel olduğuna göre, bunlar için geçici yeni bir şube oluşturmamız gerekiyor.
değiştirir ve ona geçer:
% git ödeme -b turuncu
kısa şekli hangisidir
% git dalı portakal
% git ödeme turuncu
Bir konu dalı oluşturmak, bakıcıların yeniden temel oluşturmasını veya yeniden birleştirmesini kolaylaştırır.
daha doğrusal bir tarih için ana kanat. Bir konu dalı üzerinde çalışmıyorsanız,
bakıcı, değişikliklerinizi uygulamadan önce blead üzerinde manuel olarak seçmelidir.
Bu sizi Perl5-porters'ta azarlayacak, o yüzden bunu yapmayın. Harika ol.
Ardından değişikliklerinizi yapın. Örneğin, Leon Brocard adını Orange Brocard olarak değiştirirse,
AUTHORS dosyasındaki adını değiştirmeliyiz:
% perl -pi -e 's{Leon Brocard}{Orange Brocard}' YAZARLAR
Hangi dosyaların değiştirildiğini görebilirsiniz:
% git durumu
# Dalda portakal
# Yapılacak değişiklikler:
# ("git reset HEAD" kullanın ..." sahneyi kaldırmak için)
#
# değiştirildi: YAZARLAR
#
Ve değişiklikleri görebilirsiniz:
% git fark
diff --git a/YAZARLAR b/YAZARLAR
index 293dd70..722c93e 100644
--- a/ YAZARLAR
+++ b/YAZARLAR
@@ -541,7 +541,7 @@ Lars Hecking[e-posta korumalı]>
Laszlo Molnar[e-posta korumalı]>
Leif Huhn[e-posta korumalı]>
len johnson[e-posta korumalı]>
-Leon Brocard[e-posta korumalı]>
+Turuncu Brokar[e-posta korumalı]>
Les Peters[e-posta korumalı]>
Lesley Binks[e-posta korumalı]>
Lincoln D.Stein[e-posta korumalı]>
Şimdi değişikliğinizi yerel olarak yapın:
% git commit -a -m 'Leon Brocard'ı Orange Brocard olarak yeniden adlandırın'
Oluşturulan taahhüt 6196c1d: Leon Brocard'ı Orange Brocard olarak yeniden adlandırın
1 dosya değişti, 1 ekleme(+), 1 silme(-)
"-a" seçeneği, değiştirdiğiniz git'in izlediği tüm dosyaları dahil etmek için kullanılır. eğer
bu sefer sadece üzerinde çalıştığınız dosyaların bazılarını işlemek istiyorsanız, atlayabilirsiniz.
"-a" ve "git add" komutunu kullanın. DOSYA ... " taahhüdü yapmadan önce.
"git add --interactive", dosyaların tümü yerine yalnızca bölümlerini işlemenize bile olanak tanır
bunlardaki değişiklikler.
"-m" seçeneği taahhüt mesajını belirtmek için kullanılır. Bunu atlarsanız, git bir
Mesajı etkileşimli olarak oluşturmanız için metin düzenleyici. Bu, değişiklikler olduğunda yararlıdır
burada verilen örnekten daha karmaşıktır ve editöre bağlı olarak bunu bilmek
taahhüt mesajının ilk satırı yasal maksimum 50 karakter sınırını aşmıyor.
Taahhüt mesajınızı yazmayı bitirdikten ve editörünüzden çıktıktan sonra git yazacak
diskteki değişikliğiniz ve size şöyle bir şey söyleyin:
Daf8e63 taahhüdü oluşturuldu: git durumunu ve uzaktan kumandalarla ilgili şeyleri açıklayın
1 dosya değişti, 83 ekleme(+), 3 silme(-)
"Git durumu" nu yeniden çalıştırırsanız, şunun gibi bir şey görmelisiniz:
% git durumu
# Dal kanadında
# Şubeniz 2 taahhütle 'Origin/blead' önünde.
#
# İzlenmeyen dosyalar:
# ("git ekle"yi kullanın ..." taahhüt edilecek olanı dahil etmek için)
#
# kasıtlı.izlenmemiş
taahhüt etmek için hiçbir şey eklenmedi, ancak izlenmeyen dosyalar mevcut (izlemek için "git add" kullanın)
Şüpheye düştüğünüzde, başka bir şey yapmadan önce durumunuzu kontrol edin ve dikkatlice okuyun.
sorular doğrudan git durum çıktısı tarafından yanıtlanır.
Son taahhüdünüzü aşağıdakilerle inceleyebilirsiniz:
% git KAFA göster
ve ya açıklamadan ya da yamanın kendisinden memnun değilseniz, düzeltebilirsiniz
dosyaları bir kez daha düzenleyerek ve ardından yayınlayarak:
% git taahhüt -a --amend
Şimdi tüm yerel değişiklikleriniz için bir yama dosyası oluşturmalısınız:
% git format-patch -M boşluk..
0001-Leon-Brocard-Orange-Brocard.patch olarak yeniden adlandırın
Veya birçok değişiklik için, örneğin bir konu dalından:
% git format-patch --stdout -M blead.. > topic-branch-changes.patch
Şimdi bir e-posta göndermelisiniz [e-posta korumalı] <mailto:[e-posta korumalı]> ile
Değişikliklerinizin açıklaması ve bu yama dosyasını ek olarak ekleyin. Ek olarak
RT tarafından izlendiğinde, perlbug'a gönderilen postalar otomatik olarak perl5-porters'a iletilecektir.
(manuel moderasyonla, bu yüzden lütfen sabırlı olun). Yalnızca şu adrese yamaları göndermelisiniz:
[e-posta korumalı] <mailto:[e-posta korumalı]> yama hazır değilse doğrudan
uygulanmalı, ancak tartışmaya yöneliktir.
Lütfen kullanma git-gönder-e-posta(1) yamanızı göndermek için. Daha fazla bilgi için Yama e-postaları gönderme konusuna bakın
bilgiler.
Geçici şubenizi silmek istiyorsanız, bunu şu şekilde yapabilirsiniz:
% git ödeme sayfası
% git şube -d turuncu
hata: 'turuncu' dalı, mevcut HEAD'inizin atası değil.
Silmek istediğinizden eminseniz, 'git branch -D orange' komutunu çalıştırın.
% git şubesi -D turuncu
Silinen şube turuncu.
Committing senin değişiklikler
Yaptığınız tüm değişiklikleri tek bir atomik birim olarak uygulamak istediğinizi varsayarsak,
şu komutu çalıştırın:
% git taahhüt -a
(Bu "-a" git'e değiştirdiğiniz her dosyayı bu işleme eklemesini söyler. Yeni dosyalar değil
"commit -a" kullandığınızda taahhüdünüze otomatik olarak eklenir Dosya eklemek veya
bazı değişiklikleri yapın, ancak tüm değişikliklerinizi değil, "git add" belgelerine bakın.)
Git, favori metin düzenleyicinizi başlatacak, böylece bir taahhüt mesajı oluşturabilirsiniz.
Senin değişimin. Bir şeyi neyin iyi yaptığı hakkında daha fazla bilgi için perlhack'te "Mesaj gönder"e bakın.
mesaj at.
Taahhüt mesajınızı yazmayı bitirdikten ve editörünüzden çıktıktan sonra git yazacak
diskteki değişikliğiniz ve size şöyle bir şey söyleyin:
Daf8e63 taahhüdü oluşturuldu: git durumunu ve uzaktan kumandalarla ilgili şeyleri açıklayın
1 dosya değişti, 83 ekleme(+), 3 silme(-)
"Git durumu" nu yeniden çalıştırırsanız, şunun gibi bir şey görmelisiniz:
% git durumu
# Dal kanadında
# Şubeniz 2 taahhütle 'Origin/blead' önünde.
#
# İzlenmeyen dosyalar:
# ("git ekle"yi kullanın ..." taahhüt edilecek olanı dahil etmek için)
#
# kasıtlı.izlenmemiş
taahhüt etmek için hiçbir şey eklenmedi, ancak izlenmeyen dosyalar mevcut (izlemek için "git add" kullanın)
Şüpheye düştüğünüzde, başka bir şey yapmadan önce durumunuzu kontrol edin ve dikkatlice okuyun.
sorular doğrudan git durum çıktısı tarafından yanıtlanır.
gönderme yama e-postalar
Yamanızı oluşturduktan sonra şu adrese göndermelisiniz: [e-posta korumalı] (tartışıldığı gibi
önceki bölüm) ek olarak normal bir posta istemcisi ve bir açıklama ile
yamanın.
Sen , eğer mülteci statüleri sona erdirilmemişse Amerika'ya geldikten bir yıl sonra değil kullanım git-gönder-e-posta(1) ile oluşturulan yamaları göndermek için git-format-yama(1).
Arkasında yaşayan RT biletleme sistemi [e-posta korumalı] satır içi içeriğine saygı duymaz
E-postalar, RT'ye satır içi bir yama göndermek, yamanızın imha edileceğini garanti eder.
Birisi yamanızı RT'den indirebilir, bu da konuyla sonuçlanacaktır (ilk satır
taahhüt mesajının) atlandı. RT #74192'ye bakın ve bir örnek için a4583001'i taahhüt edin.
Alternatif olarak, biri posta kutusuna ulaştıktan sonra RT'den yamanızı uygulayabilir.
hangi zaman RT mesajın satır içi içeriğini değiştirmiş olacak. RT #74532'ye bakın ve
Bu hata modunun kötü bir örneği için f9bcfeac işlemi yapın.
A notlar on türetilmiş Dosyaları
Dağıtımdaki birçok dosyanın türev olduğunu unutmayın - onları yamalamaktan kaçının, çünkü
git, değişiklikleri görmeyecek ve derleme işlemi bunların üzerine yazacaktır. yama
yerine orijinaller. Çoğu yardımcı program (perldoc gibi) bu kategoridedir, yani yama
utils/perldoc.PL ziyade araçlar/perldoc. Benzer şekilde, dosyalar için yamalar oluşturmayın
$install_root/lib içinde bulunan kopyalarından $src_root/ext altında. hakkında emin değilseniz
kaynağı oluştururken kopyalanmış olabilecek bir dosyanın doğru konumu
dağıtım için "MANIFEST"e bakın.
Temizlik a çalışma rehber
"git clean" komutu, çeşitli argümanlarla "make" yerine kullanılabilir.
temiz".
Çalışma dizininizi bozulmamış bir duruma sıfırlamak için şunları yapabilirsiniz:
% git temiz -dxf
Ancak, bunun izlenmeyen TÜM içeriği sileceğini unutmayın. Kullanabilirsiniz
% git temiz -Xf
yan ürün oluşturma ve test etme gibi yok sayılan tüm izlenmeyen dosyaları kaldırmak, ancak
tek başına manuel olarak oluşturulan dosyalar.
Yalnızca bazı taahhüt edilmemiş düzenlemeleri iptal etmek istiyorsanız, "git checkout"u kullanabilir ve
döndürülecek dosyaların bir listesi veya hepsini geri almak için "git checkout -f".
Bir veya daha fazla taahhüdü iptal etmek istiyorsanız, "git reset" kullanabilirsiniz.
açıortay
"git", bir taahhüdün tanıtılması için hangi taahhüdün suçlanacağını belirlemek için yerleşik bir yol sağlar.
verilen hata. "git bisect", ilk başarısızlığı bulmak için ikili bir geçmiş araması yapar
işlemek. Hızlı, güçlü ve esnektir, ancak biraz kurulum ve otomatikleştirme gerektirir.
işlemek için yardımcı bir kabuk betiği gereklidir.
Çekirdek bir sarmalayıcı program sağlar, Taşıma/bisect.plkadar basitleştirmeye çalışan
mümkün olduğunca, ikiye bölmeyi bir Perl tek satırlı çalıştırmak kadar basit hale getirir. Örneğin, eğer
Bunun ne zaman bir hata haline geldiğini bilmek istiyorum:
perl -e 'benim $a := 2'
basitçe şunu çalıştırın:
.../Porting/bisect.pl -e 'benim $a := 2;'
"bisect.pl" kullanarak, tek komutla (ve başka dosyalar olmadan) bunu bulmak kolaydır
· Bu örnek kodun kırılmasına hangi taahhüt neden oldu?
· Bu örnek kodun çalışmaya başlamasına hangi taahhüt neden oldu?
· Bu normal ifadeyle eşleşen ilk dosyayı hangi taahhüt ekledi?
· Bu normal ifadeyle eşleşen son dosyayı hangi taahhüt kaldırdı?
genellikle hangi perl sürümlerinin başlangıç ve bitiş revizyonları olarak kullanılacağını bilmeye gerek duymadan,
as bisect.pl otomatik olarak, testin test edildiği en eski kararlı sürümü bulmak için arama yapar.
vaka geçer. Nasıl yapılacağı da dahil olmak üzere tüm belgeler için "Porting/bisect.pl --help" dosyasını çalıştırın.
"Yapılandır"ı ayarlayın ve zaman seçeneklerini oluşturun.
Daha fazla esnekliğe ihtiyacınız varsa Taşıma/bisect.pl teklif etmeli, koşman gerekecek
kendin "git bisect". Binayı otomatikleştirmek için "git bisect run" kullanmak en faydalı olanıdır.
ve perl revizyonlarının test edilmesi. Bunun için "git" in çağrılması için bir kabuk betiğine ihtiyacınız olacak.
belirli bir revizyonu test edin. Örnek bir komut dosyası Taşıma/bisect-example.sh, hangisi sen
kopyalamalı dışında deponun, ikiye bölme işlemi durumu bir
çalışırken temiz ödeme. Aşağıdaki talimatlar, onu şu şekilde kopyaladığınızı varsayar: ~/koşmak ve
sonra uygun şekilde düzenledi.
Önce ikiye bölme moduna şununla girersiniz:
% git ikiye bölme başlangıcı
Örneğin, hata "HEAD" üzerinde mevcutsa ancak 5.10.0'da değilse, "git" şunu öğrenecektir:
girdiğinizde bu:
% git ikiye bölme kötü
% git bisect iyi perl-5.10.0
Bisecting: Bundan sonra test edilecek 853 revizyon kaldı
Bu, "HEAD" ve "Perl-5.10.0" arasındaki medyan taahhüdün kontrol edilmesiyle sonuçlanır. Yapabilirsiniz
ardından ikiye bölme işlemini şununla çalıştırın:
% git bisect çalıştırması ~/koşmak
İlk kötü taahhüt izole edildiğinde, "git bisect" size şunu söyleyecektir:
ca4cfd28534303b82a216cfe83a1c80cbc3b9dc5 is first bad commit
commit ca4cfd28534303b82a216cfe83a1c80cbc3b9dc5
Yazar: Dave Mitchell[e-posta korumalı]>
Tarih: Cts Şubat 9 14:56:23 2008 +0000
[perl #49472] Nitelikler + Bilinmeyen Hata
Kendi ID’n ile mağazalarını oluştur
iki parçalı koşu başarısı
"git bisect log" ve "git bisect visualize" ile ikiye bölme işlemine göz atabilirsiniz.
"git bisect reset" sizi bisect modundan çıkaracaktır.
Lütfen ilk "iyi" durumun, ilk "kötü" durumun atası olması gerektiğini unutmayın. Eğer
taahhüdü aramak istiyorsun çözülmüş biraz hata, test durumunuzu reddetmeniz gerekiyor
(yani, Tamam ise 1 ve değilse 0 ile çıkın) ve yine de alt sınırı "iyi" olarak işaretleyin ve
"kötü" olarak yukarı. "İlk kötü taahhüt" daha sonra "ilk taahhüt" olarak anlaşılmalıdır.
hatanın çözüldüğü yer".
"git help bisect", ikili aramalarınızı nasıl değiştirebileceğiniz konusunda çok daha fazla bilgiye sahiptir.
konu dalları ve yeniden tarih
Bireysel taahhütçiler altında konu dalları oluşturmalıdır. Adınız/bazı_açıklayıcı_adı.
Diğer taahhütçiler, herhangi bir değişiklik yapmadan önce konu dalının yaratıcısına danışmalıdır.
bunu.
Git'in tüm sürümlerinde çalışan bir uzak konu dalı oluşturmanın en basit yolu,
mevcut kafayı uzaktan kumandada yeni bir dal olarak itin, ardından yerel olarak kontrol edin:
$ dalı="$adınız/$bazı_açıklayıcı_adınız"
$ git push Origin HEAD:$dal
$ git checkout -b $şube kaynağı/$şubesi
Git 1.7 veya daha yenisi kullanıcıları bunu daha açık bir şekilde yapabilir:
$ dalı="$adınız/$bazı_açıklayıcı_adınız"
$ git çıkış -b $şube
$ git push Origin -u $dal
yaratıcısı değilsen Adınız/bazı_açıklayıcı_adı, bazen bulabilirsin
asıl yazarın şubenin geçmişini düzenlediğini. çok iyi sebepler var
bunun için. Bazen bir yazar, şubeyi daha yeni bir kaynağa yeniden dayandırıyor olabilir.
puan. Bazen, bir yazar erken bir taahhütte bir hata bulmuş olabilir.
dalı blead ile birleştirmeden önce düzeltmek istedi.
Şu anda ana depo, hızlı ileri sarma olmayan birleştirmeleri yasaklayacak şekilde yapılandırılmıştır. Bu
içindeki dalların yeniden temellendirilemeyeceği ve tek bir adım olarak itilemeyeceği anlamına gelir.
İtilen bir dalın geçmişini yeniden temellendirmenize veya değiştirmenize izin verilecek tek yol
onu silmek ve aynı ad altında yeni bir dal olarak itmektir. lütfen dikkatlice düşünün
Bunu yapmakla ilgili. Şubelerinizi sırayla yeniden adlandırmak daha iyi olabilir, böylece
sizinle birlikte çalışan diğerlerinin yerel değişikliklerini yeniye göre seçmesi daha kolay
sürüm. (XXX: açıklama gerekiyor).
Kişisel bir konu dalını yeniden temellendirmek istiyorsanız, mevcut konunuzu silmeniz gerekecektir.
dal ve bunun yeni bir sürümü olarak itin. Bunu aşağıdaki formülle yapabilirsiniz (bkz.
Ayrıntılar için git push belgelerinde "refspec" ler hakkında açıklama) yaptıktan sonra
şubenizi yeniden temellendirin:
# ilk yeniden yapılandırma
$ git ödeme $kullanıcı/$konu
$ git getir
$ git rebase Origin/blead
# ardından "sil ve bas"
$ git push kaynağı :$kullanıcı/$konu
$ git push kaynağı $kullanıcı/$konu
NOT: depo düzeyinde "birincil" dallardan herhangi birinin silinmesi yasaktır.
Bu, "m!^(blead|maint|perl)!" ile eşleşen herhangi bir daldır. Bunu yapmaya yönelik herhangi bir girişim,
git şöyle bir hata üretiyor:
$ git push kaynağı :blead
*** Bu depodaki blead/maint dallarının silinmesi yasaktır.
hata: kancalar/güncelleme hata kodu 1 ile çıkıldı
hata: kanca refs/heads/blead'ı güncellemeyi reddetti
ssh://perl5.git.perl.org/perl adresine
! [uzaktan reddedildi] boşluk (kanca reddedildi)
hata: bazı referanslar 'ssh://perl5.git.perl.org/perl' adresine gönderilemedi
Politika olarak yaptığımız değil blead ve maint-* dallarının geçmişini düzenleyin. Eğer bir
yazım hatası (veya daha kötüsü) blead veya maint-* taahhüdüne gizlice girerse, bunu başka bir taahhütte düzeltiriz.
Bu dallarda izin verilen tek güncelleme türü "hızlı ileri sarmalardır";
tarih korunur.
Kurallı perl.git deposundaki açıklamalı etiketler asla silinmeyecek veya değiştirilmeyecektir.
Yapmadan önce yerel bir etiketi Perl.git'e göndermek isteyip istemediğinizi uzun uzun düşünün.
Bu yüzden. (Açıklamasız etiketlerin itilmesine izin verilmez.)
Greftler
Perl geçmişi, dönüşümde yakalanmayan bir hata içeriyor: bir birleştirme yapıldı.
blead ve maint-5.10 arasındaki tarihte, gerçekte hiçbir birleştirmenin olmadığı yerde kaydedildi. Vadesi dolmuş
git'in doğası gereği, bunu halka açık depoda düzeltmek artık imkansız. Yapabilirsiniz
".git/info/grafts" dosyanıza aşağıdaki satırı ekleyerek bu yanlış birleştirmeyi yerel olarak kaldırın
Dosya:
296f12bbbbaa06de9be9d09d3dcf8f4528898a49 434946e0cb7a32589ed92d18008aaa1d88515930
Bölgede herhangi bir ikiye bölme işlemi yapılırsa, bu greft hattına sahip olmak özellikle önemlidir.
söz konusu "birleştirme".
YAZ ERİŞİM TO L' GYTE DEPO
Yazma erişimine sahip olduğunuzda, Origin uzaktan kumandasının URL'sini değiştirmeniz gerekecektir.
itmeyi etkinleştirin. Düzenlemek .git/config ile git-config(1) komut:
% git yapılandırması remote.origin.url ssh://Perl5.git.Perl.org/perl.git
Ayrıca kullanıcı adınızı ve e-posta adresinizi de ayarlayabilirsiniz. Çoğu insan bunu küresel olarak bir kez yapar
kendi içinde ~ / .gitconfig şöyle bir şey yaparak:
% git config --global user.name "AEvar Arnfjoer` Bjarmason"
% git yapılandırma --global user.email [e-posta korumalı]
Ancak, bunu yalnızca Perl için geçersiz kılmak istiyorsanız, şunun gibi bir şey yürütün:
takiben perl:
% git yapılandırma kullanıcı.e-posta [e-posta korumalı]
"Origin" i git remote olarak tutmak ve ssh erişimi için yeni bir uzaktan kumanda eklemek de mümkündür:
% git uzaktan deve ekle perl5.git.perl.org:/perl.git
Bu, daha hızlı olan "Origin" den çekerek yerel deponuzu güncellemenizi sağlar.
ve kimlik doğrulamanızı ve değişikliklerinizi "deve" ile geri göndermenizi gerektirmez
uzak:
% git deve getir
% git deveyi it
"Getir" komutu, nesnelerin kendilerinde olması gerektiği gibi "deve" referanslarını günceller.
"Origin" den çekilirken alındı.
Kabul a yama
Yukarıdaki bölüm kullanılarak oluşturulmuş bir yama dosyası aldıysanız, denemelisiniz.
yama.
Öncelikle bu değişiklikler için geçici bir yeni dal oluşturmamız ve buna geçmemiz gerekiyor:
% git checkout -b deneysel
"git format-patch" ile biçimlendirilen yamalar "git am" ile uygulanır:
% git am 0001-Leon-Brocard-Orange-Brocard.patch'e yeniden adlandır
Leon Brocard'ı Orange Brocard'a Yeniden Adlandırma Uygulaması
Yalnızca ham fark sağlanırsa, bu iki aşamalı işlemi kullanmak da mümkündür:
% git bugfix.diff uygula
% git commit -a -m "Bazı düzeltmeler" --author="O Adam[e-posta korumalı]>"
Şimdi değişikliği inceleyebiliriz:
% git KAFA göster
commit b1b3dab48344cff6de4087efca3dbd63548ab5e2
Yazar: Leon Brocard[e-posta korumalı]>
Tarih: 19 Aralık Cuma 17:02:59 2008 +0000
Leon Brocard'ı Orange Brocard olarak yeniden adlandırın
diff --git a/YAZARLAR b/YAZARLAR
index 293dd70..722c93e 100644
--- a/ YAZARLAR
+++ b/YAZARLAR
@@ -541,7 +541,7 @@ Lars Hecking[e-posta korumalı]>
Laszlo Molnar[e-posta korumalı]>
Leif Huhn[e-posta korumalı]>
len johnson[e-posta korumalı]>
-Leon Brocard[e-posta korumalı]>
+Turuncu Brokar[e-posta korumalı]>
Les Peters[e-posta korumalı]>
Lesley Binks[e-posta korumalı]>
Lincoln D.Stein[e-posta korumalı]>
Perl'e bağlıysanız ve yamanın iyi olduğunu düşünüyorsanız, onu daha sonra birleştirebilirsiniz.
blead ve ardından ana depoya itin:
% git ödeme sayfası
% git birleştirme deneysel
% git push kaynak bilgisi
Geçici şubenizi silmek istiyorsanız, bunu şu şekilde yapabilirsiniz:
% git ödeme sayfası
% git branch -d deneysel
hata: 'deneysel' dalı, mevcut HEAD'inizin atası değil.
Silmek istediğinizden eminseniz, 'git branch -D deneysel' komutunu çalıştırın.
% git branch -D deneysel
Silinen dal denemesi.
Committing için kanama
'blead' dalı, Perl'in bir sonraki üretim sürümü olacak.
itmeden önce herhangi blead için yerel değişiklik, birkaç tane yapmanız inanılmaz derecede önemli
diğer suçlular dirgenler ve meşalelerle peşinizden gelmesinler diye:
· İyi bir taahhüt mesajınız olduğundan emin olun. için perlhack'te "Mesaj gönder" konusuna bakın.
detaylar.
· Test takımını çalıştırın. Bir yazım hatası düzeltmesinin bir test dosyasını bozacağını düşünmeyebilirsiniz.
Yanılıyorsun. İşte paketi çalıştırmamanın sorunlara neden olduğu bir örnek. A
mevcut bir .t. dosyasına birkaç test ekleyen yama gönderildi. olamaz
muhtemelen başka bir şeyi etkiler, bu nedenle etkilenen tek .t'nin ötesinde test etmeye gerek yoktur,
sağ? Ancak, gönderenin e-posta adresi, son gönderiminden bu yana değişmiştir.
ve bu, diğer testlerin başarısız olmasına neden oldu. içinde verilen test hedefini çalıştırma
sonraki öğe bu sorunu yakalayabilirdi.
· Tam test paketini çalıştırmazsanız, en azından "test_porting yapın". Bu çalışacak
temel akıl sağlığı kontrolleri. Hangi akıl sağlığının kontrol edildiğini görmek için şuraya bir göz atın: t/taşıma.
· Miniperl veya farklı kodlara sahip çekirdek rutinleri etkileyen herhangi bir değişiklik yaparsanız
miniperl için yollar, "minitest yap" komutunu çalıştırdığınızdan emin olun. Bu, şu sorunları yakalayacaktır:
altında bir dizi test çalıştırdığı için tam test paketi bile yakalanmayacaktır.
perl yerine miniperl.
On birleştirme ve yeniden sıralama
'Blead' şubesine gönderilen basit, bir kerelik taahhütler, geçerli olan basit taahhütler olmalıdır.
temiz. Başka bir deyişle, işinizin mevcut duruma karşı taahhüt edildiğinden emin olmalısınız.
birleştirme yapmadan ana depoya geri gönderebilmeniz için blead konumu.
Bazen, değişikliklerinizi oluştururken veya test ederken blead hareket eder. Bu ne zaman
olduğunda, push işleminiz aşağıdaki gibi bir mesajla reddedilecektir:
ssh://perl5.git.perl.org/perl.git adresine gidin
! [reddedildi] blead -> blead (hızlı ileri sarmıyor)
hata: bazı referanslar 'ssh://perl5.git.perl.org/perl.git' adresine gönderilemedi
Geçmişi kaybetmenizi önlemek için hızlı ileri sarma olmayan güncellemeler reddedildi
Tekrar basmadan önce uzaktan değişiklikleri (örneğin 'git pull') birleştirin. Bkz.
Ayrıntılar için 'git push --help' bölümünün 'hızlı ileri sarma hakkında not' bölümüne bakın.
Bu olduğunda, sadece yeniden baz almak çalışmanız, kanın yeni konumuna karşı, örneğin
bu (ana depo için uzaktan kumandanızın "p5p" olduğunu varsayarak):
$ git p5p getir
$ git rebase p5p/blead
Taahhütlerinizin yeniden uygulandığını göreceksiniz ve ardından güvenle itebileceksiniz.
Yeniden temellendirme hakkında daha fazla bilgi için belgelerde bulunabilir. git-rebase(1)
Komut.
Yalnızca birlikte anlamlı olan veya bir
kümenin amacının özeti, bir birleştirme taahhüdü kullanmalısınız. işini yapmalısın
emin olmak için düzenli olarak yeniden temellendirmeniz gereken bir konu dalında
kod, kanat hareketiyle bozulmaz. İşinizi bitirdiğinizde lütfen bir
son rebase ve test. Doğrusal geçmiş, her taahhütte kaybolan bir şeydir.
can sıkıcı, ancak son bir yeniden temel, geçmişi tekrar doğrusal hale getirerek gelecek için kolaylaştırıyor
Ne olduğunu görmek için bakıcılar. Aşağıdaki gibi yeniden temellendirin (çalışmanızın
şube "komisyoncu/bir iş"):
$ git ödeme sorumlusu/bir iş
$ git rebase kanaması
Ardından, bunu şu şekilde master ile birleştirebilirsiniz:
$ git ödeme sayfası
$ git merge --no-ff --no-commit taahhüt eden/bir iş
$ git taahhüt -a
Yukarıdaki anahtarlar açıklamayı hak ediyor. "--no-ff", tüm çalışmanız olsa bile
blead'e karşı doğrusal olarak uygulanabilir, yine de bir birleştirme taahhüdü hazırlanmalıdır. Bu
tüm çalışmalarınızın birleştirilmiş tüm taahhütleri ile bir yan dal olarak gösterilmesini sağlar
birleştirme taahhüdü ile ana akıma.
"--no-commit", birleştirme taahhüdünün hazırlanmış Ama değil taahhüt. taahhüt
daha sonra, editörünüzü getirecek olan bir sonraki komutu çalıştırdığınızda gerçekleştirilir.
taahhüdü açıklamak için. "--no-commit" olmadan, taahhüt neredeyse hiçbir
birleştirme taahhüdünün değerini büyük ölçüde azaltacak yararlı mesaj
işin açıklaması için yer tutucu.
Birleştirme taahhüdünü tanımlarken, şubenin amacını açıklayın ve şunu unutmayın:
bu açıklama muhtemelen nihai sürüm mühendisi tarafından
sonraki perldelta belgesi.
Committing için bakım sürümler
Bakım sürümleri yalnızca kritik hata düzeltmeleri eklemek için değiştirilmelidir, bkz. perlpolicy.
Perl'in bakım sürümünü taahhüt etmek için yerel bir izleme dalı oluşturmanız gerekir:
% git checkout --track -b maint-5.005 Origin/maint-5.005
Bu, uzak dalı izleyen "maint-5.005" adlı yerel bir dal oluşturur.
"origin/maint-5.005". Ardından, daha önce olduğu gibi çekebilir, taahhüt edebilir, birleştirebilir ve itebilirsiniz.
Ayrıca, "git" komutunu kullanarak blead ve başka bir daldan kesin olarak taahhütler alabilirsiniz.
kiraz toplama" komutu. -x sırayla "cherry-pick" seçeneği
orijinal taahhüdün SHA1'ini yeni taahhüt mesajına kaydetmek için.
Herhangi bir değişikliği ana sürüme göndermeden önce, aşağıdaki adımları uyguladığınızdan emin olun.
Yukarıdaki "kanamaya bağlı kalmak".
Birleştirme itibaren a şube üzerinden GitHub
Yamaların GitHub aracılığıyla gönderilmesini teşvik etmesek de, bu yine de olacaktır.
İşte bir GitHub deposundaki yamaları birleştirmek için bir kılavuz.
% git uzaktan avar ekle git://github.com/avar/perl.git
% git getir avar
Şimdi dal ve blead arasındaki farkları görebilirsiniz:
% git fark ortalaması/turuncu
Ve taahhütleri görebilirsiniz:
% git log avar/turuncu
Belirli bir taahhüdü onaylarsanız, onu seçebilirsiniz:
% git cherry-pick 0c24b290ae02b2ab3304f51d5e11e85eb3659eae
Veya hepsini beğenirseniz, tüm dalı birleştirebilirsiniz:
% git birleştirme avar/turuncu
Ve sonra depoya geri itin:
% git push kaynak bilgisi
kullanma a iç Beni şube için test değişiklikler
Bazen bir değişiklik, doğrudan işletim sistemi üzerinde test edemediğiniz kod yollarını etkiler.
kullanılabilir ve diğer işletim sistemlerindeki kullanıcıların değişikliği daha önce test etmesi akıllıca olacaktır.
onu kana bulayacaksın.
Neyse ki, değişikliğinizi çeşitli işletim sistemlerinde duman testinden geçirmenin bir yolu var:
"smoke-me" şubesine gidin ve belirli otomatik duman test cihazlarının sonuçları rapor etmesini bekleyin.
onların işletim sistemleri.
Bunu yapma prosedürü kabaca aşağıdaki gibidir (tonyc'in dumanı örneğini kullanarak-
bana win32stat adı verilen şube):
İlk önce yerel bir şube yapın ve ona geçin:
% git ödeme -b win32stat
Bazı değişiklikler yapın, perl oluşturun ve değişikliklerinizi test edin, ardından bunları yerel
dal. Ardından yerel şubenizi uzak bir duman-me şubesine itin:
% git push Origin win32stat:smoke-me/tonyc/win32stat
Artık yerel olarak blead'a geri dönebilirsiniz:
% git ödeme sayfası
ve bir veya iki gün beklerken başka şeyler üzerinde çalışmaya devam edin,
Smoke-me şubeniz için raporlanan sonuçlar
<http://perl.develop-help.com/?b=duman-ben/tonyc/win32state>.
Her şey yolundaysa, blead şubenizi güncelleyin:
% git çekme
ardından Smoke-me şubenizi bir kez daha kontrol edin ve onu blead'e göre yeniden düzenleyin:
% git rebase kanayan win32stat
Şimdi blead'e geri dönün ve Smoke-me dalınızı onunla birleştirin:
% git ödeme sayfası
% git birleştirme win32stat
Daha önce açıklandığı gibi, Smoke-me şubenizde çok fazla değişiklik varsa,
kullanarak bu değişikliklere genel bir bakış sunabileceğiniz bir birleştirme taahhüdü hazırlayın.
yukarıdaki son komut yerine aşağıdaki komut:
% git birleştirme win32stat --no-ff --no-commit
Şimdi perl oluşturmalı ve (birleştirilmiş) değişikliklerinizi son bir kez test etmelisiniz (ideal olarak
tüm test paketi, ancak en azından t/taşıma/*.t testler) itmeden önce
değişiklikleriniz her zamanki gibi:
% git push kaynak bilgisi
Son olarak, uzak duman-me dalını silmelisiniz:
% git push kaynağı :smoke-me/tonyc/win32stat
(bunun gibi bir uyarı vermesi muhtemeldir, bu da göz ardı edilebilir:
uzak: ölümcül: belirsiz argüman 'refs/heads/smoke-me/tonyc/win32stat':
bilinmeyen revizyon veya yol çalışma ağacında değil.
uzak: Düzeltmelerden yolları ayırmak için '--' kullanın
) ve ardından yerel şubenizi silin:
% git şube -d win32stat
A notlar on deve ve tek hörgüçlü deve
Taahhüt edenlerin "perl5.git.perl.org" hizmeti veren iki sunucuya SSH erişimi vardır. Biri
"perl5.git.perl.org"un kendisi (deve), 'ana' depodur. ikincisi
"users.perl5.git.perl.org" (tek hörgüçlü deve), genel testler için kullanılabilir ve
gelişim. Dromedary birkaç dakikada bir git ağacını deveden senkronize eder, bunu yapmamalısınız.
oraya itin. Her iki makine de /srv/CPAN'da tam bir CPAN aynasına sahiptir, lütfen bunu kullanın. NS
dosyaları genel halkla paylaşın, dromedary size hizmet eder ~/public_html/ as
"http://users.perl5.git.perl.org/~yourlogin/"
Bu ana bilgisayarların dışarıya oldukça sıkı güvenlik duvarları vardır. Giden, yalnızca rsync, ssh ve git
izin verilir. http ve ftp için kullanabilirsiniz http://webproxy:3128 vekil olarak. gelen,
güvenlik duvarı saldırıları algılamaya çalışır ve şüpheli etkinliğe sahip IP adreslerini engeller. Bu
bazen (ancak çok nadiren) yanlış pozitifler olabilir ve engellenebilirsiniz. en hızlı
Engeli kaldırmanın yolu adminlere haber vermektir.
Bu iki kutu Booking.com'a aittir, barındırılır ve işletilir. adresinden ulaşabilirsiniz.
sistem yöneticileri irc.perl.org'da #p5p'de veya posta yoluyla "[e-posta korumalı]".
onworks.net hizmetlerini kullanarak perlgit'i çevrimiçi kullanın