Git Push to Production (FTP)


130

Saya ingin tahu apakah ada cara mudah untuk mendorong repositori GIT ke dalam produksi (pada server FTP)? Terima kasih

Jawaban:


162

Beberapa alat baru-baru ini ditambahkan ke wiki Git :

git-ftp oleh René Moser adalah skrip shell sederhana untuk melakukan FTP dengan cara Git. Gunakan git-ftp.sh untuk hanya mengunggah file yang dilacak Git ke server FTP, yang telah berubah sejak unggahan terakhir. Ini menghemat waktu dan bandwidth. Bahkan jika Anda bermain dengan cabang yang berbeda, git-ftp.sh tahu file mana yang berbeda. Tidak ada klien FTP biasa yang bisa melakukannya.

git-ftp oleh Edward Z. Yang adalah skrip sederhana yang ditulis dengan python untuk mengunggah file dalam repositori Git melalui FTP, hanya mentransfer file baru dan menghapus file lama.


3
menggunakan git-ftp, apakah ada cara untuk mendorong hanya subdirektori (misalnya folder publish html5 boilerplate) ke direktori ftp yang ditentukan?
geng

Dan bagaimana jika ada beberapa pengembang dalam tim. Apakah masih mungkin menggunakan skrip ini?
Trilliput

@Trilliput: Sedikit terlambat di sini, tapi ya, server perantara / vm di jaringan sebagai tempat di mana semua orang mendorong, dan kemudian: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃

github.com/banago/PHPloy juga melakukan hal serupa tetapi bekerja dengan submodula, yang saya curigai beberapa alat yang disebutkan mungkin akan kesulitan.
Simon East

Masalah utama dengan git-ftp (tidak yakin skrip atau python) Saya mencobanya sangat buruk ketika mengunggah potongan besar file dan daftar panjang file.
indianwebdevil


11

Saya telah menemukan PHPloy alat yang hebat untuk mengirim komit Git Anda ke server jauh melalui FTP. Ini bekerja dari baris perintah dan ditulis dalam PHP (dan bahkan mendeteksi perubahan dalam submodul).

https://github.com/banago/PHPloy

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

Selesai!

(Penafian: setelah menggunakannya untuk sementara waktu, sekarang saya menyumbang beberapa tambalan dan perbaikan kode, menjadikannya kompatibel dengan Windows.)


10

Jika Anda menggunakan mac dan Transmit, saya akan merekomendasikan skrip git-tranmit berikut ( https://gist.github.com/379750 ). Ia menggunakan DockSend untuk mengirim hanya file yang terakhir diperbarui. Jika Anda tidak terbiasa dengan DockSend, periksa http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Mempersiapkan:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-transmit
  4. Atur drop send untuk aplikasi langsung Anda
  5. Jalankan git-transmit di repositori git Anda.

1
Script ini agak janggal dalam memilih 'file yang terakhir diperbarui'. Lihatlah garpu ini untuk solusi yang lebih elegan.
quickshiftin pada

Selain itu, Anda mungkin ingin mengirim hanya file yang terlacak dan tidak dikomit. Berikut ini skrip kecil yang melakukan hal itu: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

Sebenarnya bukan itu tujuan git, sebenarnya. Namun, jika sumber Anda adalah sesuatu yang tidak perlu dikompilasi atau diproses, katakanlah sebuah situs web yang seluruhnya terdiri dari file html dan javascript dan sejenisnya, Anda bisa memiliki klon repo di server web Anda dan menggunakan git pulldari server untuk mempertahankannya -saat ini. Catatan, saya akan mengkonfigurasi server web Anda untuk menyembunyikan direktori git dan semacamnya. Dan itu baru permulaan dari masalah keamanan.

Jika Anda memiliki segala macam kompilasi atau pemrosesan, Anda harus mulai melihat Ant , Maven , BuildR , SBT , dll.


29
Satu-satunya masalah dengan ini adalah ketika Anda tidak memiliki akses ke server produksi, yaitu itu mungkin shared hosting sederhana, dengan hanya akses FTP.
dodgy_coder

4

Anda bisa menggunakan Deployhq.com berfungsi seperti pesona, satu-satunya hal yang perlu Anda lakukan adalah mengatur repositori dan akun FTP Anda.

Mereka saat ini memiliki sistem kontrol versi berikut:

Git, Subversi, Mercurial.

Dengan repositori yang dihosting

  • GitHub
  • Bitbucket
  • GitLab
  • Basis kode

masukkan deskripsi gambar di sini




1

Ada skrip Ruby di sini - Ruby git-deploy via FTP atau SSH yang hanya mengunggah file yang diubah dalam repo git melalui FTP atau SSH.

Seperti disebutkan dalam jawaban lain, ini adalah skrip Python git-ftp.py yang melakukan hal serupa.

Dan ini adalah versi skrip shell dari git-ftp .

Ada juga proyek permata Ruby yang disebut git-deploy yang memungkinkan Anda mengatur penyebaran kustom melalui remote git menggunakangit push perintah, dengan cara yang sama seperti layanan Heroku dan Azure. Untuk yang ini, Anda mungkin perlu menulis metode khusus untuk digunakan melalui FTP dan saya pikir itu mengasumsikan Anda memiliki akses SSH ke server produksi Anda.


0

Jika Anda memasukkan kode ke dalam produksi, saya sarankan menggunakan "pemasang" seperti paket RPM untuk menginstal kode Anda. Dengan cara itu akan dicap versi dan Anda akan dapat memanfaatkan paket installer untuk mendukung pembaruan ke kode produksi. Git tidak benar-benar dirancang untuk mendukung instalasi produksi, ini dimaksudkan untuk melacak perubahan pada kode itu sendiri.

Dalam keadaan apa pun, dengan .RPM (atau EXE atau apa pun) yang dibangun, Anda bisa langsung meng-FTP-nya ke sistem produksi dan menginstalnya seperti paket lainnya.


5
Yah, git dapat memanfaatkan dengan cukup baik untuk tujuan ini dalam kenyataan. Lihat tag dan buat post-checkout, post-merge dll hooks untuk menangani prosedur instalasi yang diperlukan. Kami dulu menggunakan paket RPM tetapi setelah pindah ke git itu hanya berlebihan.
d11wtq

0

Tambahkan sebagai remote, maka Anda dapat mendorongnya, namun hanya mendorong kode tidak cukup, perlu digabung dengan pohon kerja. Cara termudah adalah dengan cara sebaliknya, memiliki pohon yang berfungsi di server dan mengambil dan bergabung ke dalamnya.



0

Saya banyak berjuang untuk mencari tahu ini. Saya telah menemukan cara mudah untuk menyelesaikan ini dari berbagai sumber ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Anda dapat membaca untuk referensi tetapi tidak perlu karena saya telah menyebutkan proses langkah demi langkah di bawah ini.

Hal pertama yang pertama: Instal git dan curl menggunakan brew di MAC OS

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

Jalankan perintah berikut:

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

Memperbarui menggunakan git

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

Mempersiapkan

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

Unggah semua file

git ftp init

Atau jika file sudah ada di sana

git ftp catchup

Bekerja dan gunakan

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

Jika ada kesalahan: pathspec 'index.txt' tidak cocok dengan file apa pun yang dikenal git . Ini berarti file belum dipentaskan, jadi tambahkan file dan coba komit.

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

Semoga ini membantu.


0

Anda dapat mencoba FTPloy ...

https://ftploy.com

"Dorong perubahan ke GitHub atau Bitbucket."

"Menyebarkan Perubahan secara otomatis ke server Anda"

Anda memiliki satu proyek gratis untuk mencobanya. Saat ini saya menggunakan untuk situs web php kecil dan berfungsi dengan baik. Beberapa bug di situs tetapi merupakan proyek aktif sehingga setidaknya mereka bekerja di sana.


1
Saya mengirim jawaban ini sebelum waktunya. FTPloy tidak cukup 'siap produksi' dan ada banyak bug. Saya tidak bisa membuatnya bekerja. Saya menggunakan DeployHQ yang bekerja dengan sangat baik.
Dave Thompson

0

Lihat https://gitftp-deploy.com/ jika Anda menggunakan MacOS dan Anda suka GUI.

Ini adalah aplikasi kecil yang bagus yang menggunakan Git untuk melacak perubahan dan hanya mengunggah file yang diubah dengan FTP.

Sangat berguna jika Anda tidak suka membayar biaya bulanan untuk puluhan proyek kecil dengan tim kecil.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.