2010-09-29 25 views
7

Üniversitemiz, yönettiğimiz sunucularda kampüs bölümlerine web barındırma hizmeti sunmaktadır. Açık kaynaklı üçüncü taraf programlarını yüklemek, dosya izinlerini ve program çalıştırılmadan önce kodu değiştirmeyi gerektirir. (Eğer bilginiz varsa biz SuEXEC kullanıyoruz.)git iş akışı?

Şu anda bir yükleyici komut dizisi ile WordPress sunuyoruz. Kullanıcı en yeni kararlı sürümü yükler ve SSH üzerinden bir sunucu tarafı PHP betiğini çalıştırır. Bu PHP betiği tüm dosyaların/klasörlerin dosya izinlerini değiştirir, çeşitli dosyalarda bazı kodları ekler/kaldırır ve birkaç yeni dosya oluşturur. Bu yükleyici komut dosyası, yeni bir kararlı sürüm yayınlandığında hantal bir dengeleme eylemidir.

yerine değişiklik yapmak için bir senaryo üzerinde güvenmek bizim özel değişiklikleri izlemek için sürüm kontrolü (özellikle git'e) kullanmaya başlamak istiyorum, ama kullanmak için iş akışının emin değilim. Dallanma ve birleştirme hakkında bilgi sahibiyim, ancak yeni bir sürüm yayınlandığında eski değişikliklerin nasıl entegre edileceğinden emin değilim.

Ne benim git iş akışı WordPress çekirdekten yeni değişiklikleri entegre değil, aynı zamanda bizim eski özel değişiklikleri korumak olmalıdır?

cevap

8

Değişikliklerinizi bir dalda saklamanızı ve güncelleştirdiğinizde bu şubeyi WordPress uygulamasından en son sürüme indirmenizi öneriyorum.

   +-- WordPress 1.0 
       |  +-- WordPress 1.1 
       v  v 
[master] --*--*--*--* 
       \ 
[custom]  *--*--*  <- your customizations 
: kaba bir zaman çizgisinde ...
   +-- WordPress 1.0 
       v 
[master] --*--* 
       \ 
[custom]  *--*--*  <- your customizations 

Eğer WordPress güncelleştirmek istediğiniz

usta ve yeni son sos ile taahhüt yapmak (ya da senkronize usta tutmaya git-svn kullanın) geçmek

Şimdi, değişikliklerinizi en son ile yeniden izlemek ve yol boyunca çakışmaları çözmek için git rebase master custom yapabilirsiniz. Zaman çizelgesi sonra bu şekilde görünecektir:

   +-- WordPress 1.0 
       |  +-- WordPress 1.1 
       v  v 
[master] --*--*--*--* 
        \ 
[custom]    *--*--*  <- your customizations 

Güncelleme: o WordPress ve özelleştirmelerinizin kod arasında net farklılaşma sağladığı için mantığı biraz sağlamak ... Bu sorun için bu yaklaşım gibi. WordPress'in yeni bir sürümünü aldığınızda, gerçekten "entegrasyon" ile ilgilenmiyorsunuz. Özelleştirmelerinizi WordPress'in yeni sürümüne yeniden uygulamakla ilgileniyorsunuz. Benim görüşüme göre, bu özelleştirme en kolay şekilde bir rebase ile işlenerek yapılır. Herhangi bir ihtilaf, özelleştirme olasılığının kırıldığı anlamına gelir, bu nedenle eski özelleştirme taahhüdü zaten çöptür - sorunu kaynağında düzeltmek ve güncellenmiş geçmişi temiz tutmak daha iyidir.

master güncelleştirildikten ve custom yeniden oluşturulduktan ve itildikten sonra, ortak çalışanlar en son devam eden çalışmalarını yeniden değerlendireceklerdir.

Bu sadece bir fikrim> birleştirme yandaşı olarak benim düşüncem. Git'in güzelliği, nadiren doğru cevaptır. Sadece senin için çalışan bir şey bulana kadar ayarlama yapmaya devam et.

+3

Bu duruma karşı öneride bulunacağım gibi, bir çok problemle sonuçlanabilir. Geçmişi kaybeder (daha önce konuşlandırmış olduğunuz bir sürüme geri dönemezsiniz, ne zaman yaptığınızı söylerseniz) ve çalışma kolunuzun sürekli yeniden oluşturulmasını sağlamak, sizinle işbirliği yapmanızı çok daha zorlaştırır. Diğer insanlar, şimdi de yaptıkları herşeyi yeniden inşa etmek zorunda kalacaklar. Rebasing, daha önce hiç kimseyle paylaşılmayan ya da uçucu olduğu bilinen, yeni bir sürüm olduğunda, geçmişinizdeki tüm geçmişinizi yeniden oluşturmak için olmayan değişiklikler için en iyisi olan bir şeydir. –

+1

Yeniden oluşturma, iletişim kuramazsanız sorunlara neden olabilir, ancak tamamen yönetilebilir. Geçmiş, yalnızca söz konusu işleme referans göstermezseniz kaybedilir. Yalnızca dağıtılan sürümü etiketleyin ve hiçbir şey kaybetmezsiniz. – dahlbyk

+0

Bizim durumumuzda, rebasing iyi bir çözüm gibi görünmektedir, çünkü biz sadece kaynağı bir tarball olarak paylaşıyoruz. Nihai ürünü kullanan başka hiçbir dev, bizim gibi olduğu gibi çekirdeği değiştirmiyor, bu yüzden başkalarıyla paylaşmaya gerek yok. –

2

Benim genel yaklaşım iki şubesi, upstream ve master sahip olmaktır. (master dalında sizi başlayacaktır) deponuzu oluşturun, kullanmak memba kodunun en son kopyasında kontrol edin ve sonra git branch upstream ile upsteram şube oluşturun. Ayrıca, git tag wordpress-1.0 gibi, içe aktardığınız akış yukarı sürümünü belirten bir etiket oluşturun. Bunun için genellikle hafif etiketler kullanıyorum (herhangi bir ek açıklamaları olmayanlar, sadece bir revizyona işaret eden). Eğer master dalında hala yaparken Şimdi

[wordpress-1.0]    Key: [tag] 
v         branch 
* <- upstream      * commit 
^- master 

, değişikliklerinizi kopyalayıp olanlar kontrol edin. Artık değişiklikleri içeren iki şubesi, bozulmamış memba kaynak içeriyor upstream ve master sahip olan upstream'a yaptığınız değişiklikleri gösteren tarih.

[wordpress-1.0] 
v 
* <- upstream 
\ 
    +--* <- master 

Yap master dalında da bütün modifikasyon. memba kod yeni bir sürümü ortaya çıkınca

[wordpress-1.0] 
v 
* <- upstream 
\ 
    +--*--*--* <- master 

, senin upstream şube (git checkout upstream) kontrol .git dizinde ama her şeyi temizlemek ve yeni memba sürümde kopyalayın. Yukarı akış sürümündeki tüm değişiklikleri düzenlemek, taahhüt etmek ve etiketlemek için git add -A kullanın.

[wordpress-1.0] 
| [wordpress-1.1] 
v v 
*--* <- upstream 
\ 
    +--*--*--* <- master 

Şimdi master göz atın ve yukarı değişiklikleri birleştirmek. Bu noktada, yeni bir üst sürümün alınması, sürümünüzü almak veya normal bir birleştirme yaptığınız gibi birleştirilmiş değişiklikler almak gibi, nasıl birleştirileceğini seçebilirsiniz.

[wordpress-1.0] 
| [wordpress-1.1] 
v v 
*--*--------+ <- upstream 
\   \ 
    +--*--*--*--* <- master 

Yani, tüm değişiklikleri master üzerine olur ve upstream için olduğu gibi tüm memba versiyonları tam olarak kararlıyız. Bu, kodunuzun upstream versiyonundan nasıl farklı olduğunu tam olarak görmenize olanak tanır. Bu, upstream sürümüyle zaten birleştirdiğiniz değişiklikleri takip etmenize yardımcı olur.

[wordpress-1.0] 
| [wordpress-1.1] 
| |   [wordpress-2.0] 
v v   v 
*--*--------+--*-+ <- upstream 
\   \ \ 
    +--*--*--*--*----*--* <- master 

Başka sorularınız olursa lütfen bize bildirin.

+0

Bu teknik olarak çalışır, ancak değişikliklerin her defasında en yeni kaynak kodda yeniden uygulanabilmesi daha mantıklıdır, bu nedenle yeniden biçimlendirme, birleştirme işleminden daha iyi bir seçenek gibi görünür. –

İlgili konular