Tek geliştirici GIT iş akışı (basit FTP'den geçiş)


11

VCS'ye geçmenin benim için mantıklı olup olmadığına karar vermeye çalışıyorum. Küçük bir kuruluşta (5 kişi) tek bir web geliştiricisiyim. Bu nedenlerle VCS (Git) düşünüyorum: sürüm kontrolü, site dışı yedekleme, merkezi kod deposu (evden erişebilirsiniz).

Şu anda genellikle canlı bir sunucu üzerinde çalışıyorum. FTP'ye giriyorum, düzenlemelerimi yapıyorum ve kaydediyorum, sonra yeniden yükleyin ve yenileyin. Düzenlemeler genellikle CMS'ler için tema / eklenti dosyalarına yapılır (örn. Concrete5 veya Wordpress). Bu iyi çalışır, ancak yedekleme ve sürüm kontrolü sağlamaz.

VCS'nin bu prosedüre en iyi nasıl entegre edileceğini merak ediyorum. Şirketin web sunucusunda bir Git sunucusu kurmayı öngörürdüm, ancak değişiklikleri müşteri hesaplarına (genellikle aynı sunucudaki VPS'ler) nasıl aktaracağımı netleştiremiyorum - şu anda SFTP'ye giriş yaparak ayrıntıları ile değişiklikleri doğrudan.

Ayrıca neyin mantıklı bir havuzu temsil edeceğinden de emin değilim - her müşterinin web sitesi kendi deposunu alacak mı?

Herhangi bir görüş veya deneyim gerçekten yararlı olacaktır. Git'in tam gücüne hiçbir şekilde ihtiyacım olmadığını düşünmüyorum, ancak temel sürüm kontrolü ve fiili bulut erişimi gerçekten yararlı olacaktır.

EDIT: Bunu en mantıklı görünen iki seçeneğe daralttım. Birincisi, ZweiBlumen'in cevabına dayanır , burada canlı sunucuda düzenlemeler yapılır ve oradan (harici) Git sunucusuna yapılır. Bu, iş akışımın çok fazla değişmeyeceği avantajına sahiptir (taahhütleri gerçekleştirmenin ekstra adımı vardır, ancak aksi takdirde aynıdır).

İkinci seçenek XAMPP kullanarak yerel olarak çalışmak, daha sonra yerel makineden değişiklik yapmaktır. Yalnızca site yayına girdiğinde, bitmiş makaleyi yerel makineden web sunucusuna yüklerim (Git'e son işlemden hemen sonra). Bu teoride iyi görünüyor, ancak daha sonra site değişiklik gerektiriyorsa ve bunları canlı sunucuda (genellikle yaptığım gibi) yaparsam, yerel repodaki değişen dosyaları manuel olarak kopyalamam, ardından bu değişiklikleri Git sunucusu. Bu aşırı derecede karmaşık görünüyor ve belki de şu anki iş akışımdan çok fazla ayrılıyor.

Denge üzerinde # 1 seçeneği vereceğim ve nasıl başlayacağımı düşünüyorum.


1
Git (veya başka bir dağıtılmış VCS) hakkında hatırlanması gereken şey, tüm depoların en azından teknik olarak eş olmasıdır: yerel deponuz, canlı sunucudaki veya yedek havuzdaki "gerçek" gibidir. Onlara yapı sağlayan iş akışı politikalarınız - bu yüzden gerçekten canlı sunucuda birincil iş yapmaya devam etmek istiyorsanız, şunları yapabilirsiniz ...
comingstorm

Teşekkürler, bunu bilmek güzel. Git'in doğasında olan esneklik, 'en iyi uygulama' başlangıç ​​noktasını bulmayı zorlaştırır - bu, deneyimli bir kullanıcının POV'sinden gelen bir güçtür, ancak bir noob'lardan gelen bir zayıflıktır!
melat0nin

Yanıtlar:


3

Yaptığım (Subversion ile, ama Git ile de çalışacak) her şeyi bir Subversion deposuna adamak, ancak açıkça projelere, dallara, etiketlere gerektiği gibi ayrılmak. Daha sonra bu depoları canlı sunucuya alıyorum. Bu yüzden geliştirici makinemde bir değişiklik yaptığımda ve bunu depoya koyduğumda, genellikle değişiklikleri canlı hale getirmek için canlı sunucudaki kullanıma alınmış kopyayı güncelleme durumudur. Ek bonus, canlı sunucuda hızlı bir düzeltme yapmam gerekirse, bunu sunucudan depoya taahhüt ediyorum ve geliştirici makinemdeki çalışma kopyasını güncelleyeceğim.

Bunu yönetmenin başka yolları olduğundan eminim, ancak bunu oldukça basit buluyorum ve sizinle tam olarak aynı durumdayım: küçük bir kuruluştaki tek geliştirici (4 kişi).


1
Cevabın için teşekkürler! Bu, anlık görüntüyü yerel makinenize çekeceğiniz, değişiklik yapıp uyguladığınız, ardından canlı sunucudan (SSHing tarafından) bir çekme isteği yaptığınız anlamına mı geliyor? Değişiklik gerçekten küçükse ne olur? Geliştirme için yerel bir web sunucusu çalıştırıyor musunuz? (Basit CSS değişiklikleri için bu süreçten geçemedim .. Ben
delirirdim

1
Küçük bir CSS değişikliği için değişikliği doğrudan sunucuda yapacağım ve daha sonra bu değişikliği sunucudan depoya kaydedeceğim. Sitede daha ciddi bir iş yapmam gerektiğinde, dev makinemdeki siteyi depodan sitenin en son sürümüyle güncelleyeceğim. Ben depoya taahhüt sürece değişiklik (sunucu veya dev makine) nerede gerçekten önemli değil sanırım.
ZweiBlumen

Bunun için hangi araçları kullanıyorsunuz? FTP doğrudan sunucuda dosya değişiklikleri yapmak için, sonra arka planda bir SSH oturumu açmak için tekrar tekrar sunucuya taahhüt eder?
melat0nin

1
Evet, temelde bu. Aslında Subversion kullanıyorum. Linux sunucularının yanı sıra Windows'ta da sitelerimiz var. Windows'da masaüstünü uzaklara yerleştiriyorum, CSS'yi değiştirip TortoiseSVN'yi kullanmayı taahhüt ediyorum. Linux'ta değişiklikleri yapmak için bir SSH oturumu ve vim kullanıyorum (ancak sanırım değişikliklerinizi FTP de yapabilirsiniz).
ZweiBlumen

Sunucuda düzenleme önerisine gittim ve oradan birkaç gündür yaptığım SSH aracılığıyla taahhütte bulundum. Gerçekten iyi çalışıyor gibi görünüyor, teşekkürler!
melat0nin

2

Belirli bir şubeye gittiğinizde web sunucusu veri dizinini otomatik olarak güncelleyen ( güvenlik nedeniyle dışa aktarma tercih edilir) bir post-updatekanca oluşturmak oldukça kolaydır git archive.

Yani bir yerde (güvenlik nedenleriyle ben web farklı bir sunucuya koymak istiyorum) bir yere git git depo var gibi kanca ile. Elbette yerel makinenizde olabilecek veya farklı bir şubeye iterek güncellenebilecek daha büyük değişiklikleri test etmek için test sunucusuna ihtiyacınız olacaktır. Her iki durumda da, sadece taahhüt ve itme yaparak önemsiz yazım ve CSS düzeltmeleri için onu atlayabilirsiniz.


1

Şu adımları izlerdim:

  1. Uzak sunucuyu uzaktan itme / çekme için uygun bir genel / özel anahtar çifti ile kurun
  2. İki dal test etme ve yayınlama
  3. Test dalında bir test ortamıyla yerel olarak geliştirin
  4. Mutlu olduğunuzda, sürüm dalıyla birleştirme ve uzak sunucuya gönderme
  5. En son sürümüne güncellemek için uzak sunucuya bağlanın

Birbirlerine karışmalarını önlemek için web sitesi başına bir repo oluşturun. Ayrı dallar, geçerli "iyi" sürüm kilidinin şu anda üzerinde çalıştığınız şeye basmasını engellemenizi sağlar;


Doğru anlıyorum - Git için iki sunucu (1), (2) canlı web sunucusu ve bir yerel geliştirme makinesi var. Dev yerel olarak yapılır ve daha sonra canlı sunucuyu güncellemek için bir kanca olan Git sunucusuna itilir?
melat0nin

@ melat0nin Bunu yapmanın bir yolu var. Canlı sunucunun git sunucusundan bir cron işi olarak almasını sağlayabilirsiniz. Veya 2 makineniz olabilir. Yerel geliştirme makinesi ve canlı prodüksiyon web sunucusu. Bu şekilde, depoyu üretim makinesinden üretim makinesine itmek, her bastığınızda en yeni sürüm dalına güncellenir.
Spencer Rathbun
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.