Git Üretime Gönderme (FTP)


130

Bir GIT havuzunu üretime (bir FTP sunucusunda) itmenin kolay bir yolu olup olmadığını bilmek istiyorum. Teşekkürler

Yanıtlar:


162

Yakın zamanda Git wiki'ye eklenen bazı araçlar :

Git-ftp by René Moser, FTP'yi Git yolu ile yapmak için basit bir kabuk betiğidir. Son yüklemeden bu yana değişen bir FTP sunucusuna yalnızca Git tarafından izlenen dosyaları yüklemek için git-ftp.sh'yi kullanın. Bu, zamandan ve bant genişliğinden tasarruf sağlar. Farklı dallarla oynasanız bile git-ftp.sh hangi dosyaların farklı olduğunu bilir. Sıradan hiçbir FTP istemcisi bunu yapamaz.

git-ftp by Edward Z. Yang, python'da FTP aracılığıyla bir Git deposundaki dosyaları yüklemek, yalnızca yeni dosyaları aktarmak ve eski dosyaları kaldırmak için yazılmış basit bir komut dosyasıdır.


3
git-ftp kullanarak, sadece bir alt dizini (örneğin, html5 standart metninin yayınlama klasörü) belirtilen ftp dizinine itmenin bir yolu var mı?
çete

Ya takımda birkaç geliştirici varsa? Bu komut dosyalarını kullanmak hala mümkün mü?
Trilliput

@Trilliput: Burada biraz geç, ama evet, ağda herkesin ittiği yer olarak bir ara sunucu / vm ve ardından: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃

github.com/banago/PHPloy da benzer bir şey yapıyor ancak alt modüller ile çalışıyor, söz konusu araçlardan bazılarının zorlandığından şüpheleniyorum.
Simon East

Git-ftp ile ilgili ana sorun (emin komut dosyası veya python) Denedim, çok sayıda dosya ve uzun dosya listesi yüklerken çok kötüydü.
indianwebdevil


11

PHPloy'u Git kayıtlarınızı FTP üzerinden uzak sunuculara göndermek için harika bir araç buldum . Komut satırından çalışır ve PHP'de yazılır (ve hatta alt modüllerdeki değişiklikleri algılar).

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

Bitti!

(Sorumluluk reddi: Bir süre kullandıktan sonra, bazı kod yamaları ve iyileştirmeleriyle Windows uyumlu hale getirerek şimdi katkıda bulundum.)


10

Mac kullanıyorsanız ve Transmit kullanıyorsanız, aşağıdaki git-tranmit komut dosyasını ( https://gist.github.com/379750 ) tavsiye ederim . Yalnızca son güncellenen dosyaları göndermek için DockSend'i kullanır. DockSend'e aşina değilseniz, http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ adresine bakın .

Kurmak:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-iletimi
  4. Canlı uygulamanız için drop send'i kurun
  5. Git deponuzda git-transmit'i çalıştırın.

1
Bu komut dosyası, 'son güncellenen dosyaları' seçmek konusunda oldukça beceriksizdir. Check out bu çatalı daha şık bir çözüm için.
quickshiftin

Buna ek olarak, yalnızca izlenen ve yüklenmemiş dosyaları iletmek isteyebilirsiniz. İşte tam da bunu yapan küçük bir komut dosyası: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

Açıkçası git bunun için değil. Bununla birlikte, kaynağınız derlenmesi veya işlenmesi gerekmeyen bir şeyse, örneğin tamamen html ve javascript dosyalarından ve benzerlerinden oluşan bir web sitesi varsa, web sunucunuzda reponun bir klonuna sahip olabilir ve git pullbunu devam ettirmek için sunucudan kullanabilirsiniz . -bugüne kadar. Not, web sunucunuzu git dizinini vb. Gizleyecek şekilde yapılandırırdım. Ve bu, güvenlik endişelerinin sadece başlangıcı.

Herhangi bir derleme veya işlemeye sahipseniz, Ant , Maven , BuildR , SBT , vb.'ye bakmaya başlamalısınız .


29
Bununla ilgili tek sorun, üretim sunucusuna erişiminiz olmadığı zamandır, yani sadece FTP erişimi olan basit paylaşımlı barındırma olabilir.
dodgy_coder

4

Deployhq.com'u kullanabilirsiniz , bir cazibe gibi çalışır, yapmanız gereken tek şey deponuzu ve FTP hesabınızı ayarlamaktır.

Şu anda aşağıdaki sürüm kontrol sistemleri:

Git, Subversion, Mercurial.

Depo barındırılan

  • GitHub
  • Bitbucket
  • GitLab
  • Codebase

görüntü açıklamasını buraya girin




1

Burada bir Ruby betiği var - FTP veya SSH yoluyla Ruby git-deploy , git deposundaki yalnızca değiştirilmiş dosyaları FTP veya SSH yoluyla yükler.

Başka bir yanıtta belirtildiği gibi, işte benzer bir şey yapan Python git-ftp.py betiği .

Ve işte git-ftp'nin kabuk betiği sürümü .

Heroku ve Azure hizmetlerinde olduğu gibi, komutu kullanarak bir git uzaktan kumandası aracılığıyla özel bir dağıtım kurmanıza izin veren git-deploy adlı bir Ruby gem projesi de vardır git push. Bunun için FTP yoluyla dağıtmak için özel yöntemler yazmanız gerekebilir ve bence üretim sunucunuza SSH erişiminiz olduğunu varsayar.


0

Kodu üretime koyuyorsanız, kodunuzu yüklemek için RPM paketi gibi bir "yükleyici" kullanmanızı öneririm. Bu şekilde sürüm damgalı olur ve üretim kodundaki güncellemeleri desteklemek için yükleyici paketinden yararlanabilirsiniz. Git, üretim kurulumlarını desteklemek için gerçekten tasarlanmamıştır, kodun kendisindeki değişiklikleri izlemesi amaçlanmıştır.

Her durumda, bir .RPM (veya EXE veya her neyse) oluşturulmuşsa, bunu üretim sistemine FTP ile gönderebilir ve başka herhangi bir paket gibi yükleyebilirsiniz.


5
Aslında git, gerçekte bu amaç için oldukça iyi bir kaldıraç olabilir. Etiketi kontrol edin ve gereken kurulum prosedürlerini işlemek için ödeme sonrası, birleştirme sonrası vb. Kancalar oluşturun. Eskiden RPM paketleri kullanıyorduk, ancak git'e geçtikten sonra aşırıya kaçtı.
d11wtq

0

Uzaktan kumanda olarak ekleyin, sonra ona itebilirsiniz, ancak basitçe kodu itmek yeterli değildir, çalışma ağacıyla birleştirilmesi gerekir. En kolay yol, diğer tarafa gitmek, sunucuda bir çalışma ağacına sahip olmak ve onu getirip birleştirmektir.



0

Bunu anlamak için çok çabalıyordum. Bunu çeşitli kaynaklardan yapmanın kolay bir yolunu buldum ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Referans için okuyabilirsiniz ama gerek yok çünkü aşağıda adım adım işlemden bahsetmiştim.

İlk önce: git ve curl'yi MAC OS'de brew kullanarak kurun

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

Aşağıdaki komutları çalıştırın:

git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Git kullanarak güncelleme

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Kurmak

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

Tüm dosyaları yükle

git ftp init

Veya dosyalar zaten oradaysa

git ftp catchup

Çalışın ve dağıtın

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

Bir hata varsa: pathspec 'index.txt' git tarafından bilinen hiçbir dosya (lar) ile eşleşmedi . Bu, dosyanın henüz hazırlanmadığı anlamına gelir, bu nedenle dosyayı ekleyin ve ardından kaydetmeyi deneyin.

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

Bu yardımcı olur umarım.


0

FTPloy'u deneyebilirsiniz ...

https://ftploy.com

"Değişiklikleri GitHub veya Bitbucket'a gönderin."

"Değişiklikleri otomatik olarak sunucunuza dağıtın"

Denemek için bir ücretsiz projeniz var. Şu anda küçük bir php web sitesi için kullanıyorum ve oldukça iyi çalışıyor. Sitedeki birkaç hata var ama aktif bir proje yani en azından üzerinde çalışıyorlar.


1
Bu cevabı vaktinden önce gönderdim. FTPloy tam olarak 'üretime hazır' değildir ve çok sayıda hata vardır. Çalışmasını sağlayamadım. Çok iyi çalışan DeployHQ kullanıyorum.
Dave Thompson

0

Check out https://gitftp-deploy.com/ Eğer GUI'leri gibi MacOS ve sizin iseniz.

Değişiklikleri izlemek ve sadece değiştirilen dosyaları FTP ile yüklemek için Git kullanan güzel bir küçük uygulamadır.

Küçük ekiplerle düzinelerce küçük proje için aylık ücret ödemeyi sevmiyorsanız özellikle kullanışlıdır.

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.