Web barındırıcınızda “git push” güncelleme dosyaları nasıl yapılır?


13

Ben tüm paylaşılan web altında aynı web barındırma hizmeti barındırılan bir kaç site var. Web barındırıcım Git'i destekliyor ve buna SSH erişimim var ve dizüstü bilgisayarımda da Git kurulumu var.

Bir "git push origin master" yaptığımda, otomatik olarak web sunucumdaki dosyaları güncelleyecek ve ayrıca isterseniz önceki geri dönüş dosyalarının bir yedeğini kaydedecek şekilde yapmak istiyorum. Mümkün mü?


Meraklı - hosting sağlayıcınız kim?
kullanıcı

Ve neden "önceki işlem dosyalarının yedeğini" almak istesin? Geri almak isterseniz önceki taahhüdü zorlayabilirsiniz (en son ne ittiğinizi her zaman bildiğinizi varsayarsak - ama yine de bilmelisiniz).
sleske

Yanıtlar:


12

Bu, bir web sitesini yönetmek için Git'i kullanma ile özetlenmiştir

Sürecin anahtarı sunucu tarafı kancası 'sonradan alma' ( Git'i özelleştirme Git - Git Kancaları ve githooks man sayfasında ). Bu kanca, sunucu tüm verileri aldıktan sonra çalışır.

Sunucu verileri aldıktan sonra, git checkout -f -f seçeneği, yerel farklılıklar olsa bile başa bir ödeme yapmaya zorlar.

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

Bunu hooks/dizine post-receiveve çalıştırılabilir olarak koyun . Tabii ki, yol web sunucunuzun dosyalarına sahip olduğunuz yere değişir ( GIT_WORK_TREEsunucuda nokta dosyalarını ve git ayarlarını oynatmanıza gerek kalmayacak şekilde ortam değişkenini ayarlar).

Geri almak için, her bir sürümü etiketlemeniz gerekir (bu işlem, işlem sonrası kancanın bir parçası olarak da yapılabilir). Sürümü etiketleyerek, geri dönülecek noktayı kolayca tanımlayabilirsiniz, ancak bu muhtemelen sunucuda oturum açmayı ve bu etiketi kontrol etmeyi içerir.


Bunun, git'i bir dağıtım aracı olarak kullandığınız anlamına gelir, ki bu gerçekten amaçlanmayan bir şeydir. Çalışabilir, ancak çok sayıda sınırlama vardır (tüm repoyu indirmeniz gerekir, komut dosyalarını çağırmanın veya dosya izinlerini yönetmenin bir yolu yoktur, bir şeyleri açmanın hiçbir yolu yoktur ...). Muhtemelen uygun bir dağıtım aracı kullanmak daha iyidir.
sleske

@sleske Tüm bunları çengelde yapabilirsiniz post-receive, bu gerçekten istediğinizi koyabileceğiniz bir senaryodur.
Mario

@Mario: Evet, yapabilirsiniz - bu, kendi dağıtım çözümünüzü alma sonrası kanca olarak etkili bir şekilde uyguladığınız anlamına gelir. Mevcut bir çözümü kullanmanın hala faydaları vardır, ancak bazen kendi
çözümünüz

Web klasörünüzde .git dosyalarının bulunmasını önlemek için bir ara klasöre de ödeme yapabilir ve web klasöründen ara klasöre bağlantılara sahip olabilirsiniz.
Bent

0

İçe aktardığınız havuzun çalışma ağacını güncellemenin en basit yolu git config receive.denyCurrentBranch updateInstead , alıcı tarafında ayar yapmaktır. Bkz. Https://git-scm.com/docs/git-config/#git-config-receivedenyCurrentBranch

Ryan'ın post taahhüt kancalarıyla yanıtı, farklı bir konuma göz atmaya izin vermesi açısından daha iyidir (muhtemelen web klasörünüzde .git olmasını istemezsiniz). Ancak bu düzeyde, yorumlarda belirtildiği gibi, mevcut bir dağıtım aracını kullanmak iyi bir fikir olabilir.

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.