2010-02-16 20 views
10

Küçük içerik: Biz bir web uygulaması çalışan 6 geliştiriciden oluşan bir ekibiz. Lansmanından bu yana, CVS'yi ColdFusion/Eclipse kullanarak bir Windows sunucusundaki kaynak kontrol sistemimiz olarak kullanıyoruz. Git ve dağıtılmış sistemlerde bulunan tüm hype ile son zamanlarda kontrol edeceğimizi düşündük.Git webdevelopment ve çoklu ortam için kaynak kontrolü olarak kullanma

Standart bir web uygulaması olarak, yeni özellikler/hata düzeltmeleri geliştirdiğimiz yerel ortama sahibiz. KG tarafından ilk test için her şeyi yaptığımız bir geliştirme ortamı. Zaten test edilmiş özellikler/düzeltmeler gönderdiğimiz evreleme, üretim sunucularımızı olabildiğince taklit etmektir. Nihayet her şey vahşi doğada canlı sistemde devam ediyor ...

Bu işlem, birçoğu FTP ile yapıldığı ve bir şey her zamankinden daha uzun sürdüğü için, ne zaman ve ne zaman sık sık çatışmalar ile karşılaştığımızdan dolayı, oldukça acı verici bir süreçtir. sınama veya hızlı bir hata düzeltmesi gerektiğinde acilen.

Git'in bu durumda nasıl çalışacağı konusunda biraz kafam karıştı, açıkçası nadir görülen bir senaryo değil ama bulduğum şeylerin çoğu ayrıntıda konuşmadı.

Yerel şubelerin doğru bir şekilde Git'i anladığım halde Git ile önemli bir rol oynar, önce git deposunu klonladıktan sonra bir şeyleri düzeltmek ve tüm yerel olarak geri vermek için şubelerimi ekledim.

Daha sonra, eğer varsa, çatışmaları birleştiren bagaj altındaki ana depoya geri veriyorum.

Varsayımlarım doğruysa, asıl soru sahneleme ile olan şeydir. Açıkçası bazı özellikler/düzeltmeler test etmek için daha uzun sürer, bazıları daha acildir, vb. Son imzalama için belirli özelliklerin/dalların çekilmesi gibi bir şey yapabilmem ve daha sonra canlı sunucudan aynısını yapabilecek miyim? imzalandıkça çekin)?

CVS arka planından gelmek oldukça fazla bir şey ... herhangi bir yardım çok takdir edilecektir!

cevap

4
  • Yerel şubeler önemlidir, çünkü istediğiniz kadar çok oluşturabilir ve bunları kolayca birleştirebilirsiniz.
  • Tracking branches (aslında local branch following a remote tracking one) sana sen resmen yayını amaç (DVCS başka büyük bir özelliği için, uzak bir birine yerel şube bağlamak için izin verdiği, senin durumunda çok daha geçerli: yapabilirsiniz "publish" bir uzaktan repo ya da başka) taahhüt

fikri tanımlamaktır:

  • çıplak repo itme amacıyla
    • bir dev çıplak bütün Devs bugünkü çalışmalarını itin ve/veya meslektaşları eserleri indirebiliriz Repo
    • (Yerel "Merkez" repo tür, ancak birçok other workflows bu ProGit book page açıklanan gibi, mevcut) Bir evreleme dalının test/geçerlilik için bir şeyle itildiği bir çıplak evre repo.
      QA ekibi, web sitesini çalıştırabilecekleri ve test edebilecekleri bir çalışma çalışma dizinini almak için bu repo'yu klonlayabilir.
    • Üretim ortamında bir sunucuda çıplak bir repo.Ürün yöneticisi bunu klonlayabilir ve ardından canlı web sitesini yönetecek olan gerçek üretim sunucularına rsync/ftp gönderebilir.
      Not: Gerçek üretim sunucusunda hiç DVCS bulunmamalıdır. Bir üretim ortamını çalıştırmanız/izlemeniz için gerekenlere sahip olmanız gerekir.

temel workflow (repo) bu ortamları arasında dalları çekerek/bastırıyor dayanmaktadır:

  • dev ve repo evreleme, birkaç resmi kamu dalları koruyabilirsiniz, bir Git maintainer Julio C. Hamano gibi bit with his 'public', 'maint', 'next', 'pu' branches yapar.
  • evreleme için her şeyi bastırıyor önce, sırayla ilk uzaktan evreleme dalı üstünde rebase İşinizi lokal herhangi bir çakışma çözmek için ve herhangi oluşturarak yerel dev çalışma güncellemek düzeltmek tespit/hazırlık alanında yaptı. Yalnızca belirli dalları kabul
  • size evreleme repo ve prod repo kancaları tanımlayabilir (hiçbir değişiklik prod repo tarafında yapılır, çünkü hiçbir çakışma) önemsiz olması ve herhangi bir dalı çöp gerekir eşya için evreleme gelen itme
  • oluşturma (gereksinim duyduğunuz kadar çok dal tanımlayabileceğiniz/itebileceğiniz/dağıtabileceğiniz tüm dev reposların karşıtı olarak)
+0

Çalışma aşaması almak için depoyu klonlamak zorunda kalırsam, açıkken nasıl çalışır yerel olarak bir web sunucusu. Makinemizde CVS'yi kullanarak dosyaları doğrudan web kökümüzde bulundururuz, böylece hemen değiştirip test edebiliriz. Git ile, doğru bir şekilde anlarsam, her şeyin bir anlık görüntüsünü oluşturur, böylece dosyaların yollarını değiştirir, bir dalı test etmek istediğinizde bunu web kökünüze kopyalamanız gerekir mi? Aynı anda farklı hatalar üzerinde çalışabileceğinden hantal gibi görünüyor. – jfrobishow

+0

Nevermind - ProGit kitabı soruyu yanıtladı. Dosyalar taşınmadı, sadece bir karma kullanıldı. Bağlantı için teşekkürler, çok kullanışlı. – jfrobishow

+1

@jfrobishow: Dosyalar gerçekten taşınmıyor: dallar Git dizindeki bir diziyle değil, yalnızca işlem grafiğinde bir işaretçi olarak gösteriliyor. Ayrıca bkz. Http://stackoverflow.com/questions/1438662/which-of-the-two-is-bettergit-or-svn/1438697#1438697 – VonC

İlgili konular