Saya menggunakan capistrano untuk menyebarkan aplikasi RoR. Basis kode ada dalam repositori git, dan percabangan banyak digunakan dalam pengembangan. Capistrano menggunakan deploy.rb
file untuk pengaturannya, salah satunya adalah cabang untuk digunakan.
Masalah saya adalah ini: katakanlah saya membuat cabang A baru dari master . File penerapan akan mereferensikan cabang master . Saya mengeditnya, sehingga A dapat digunakan untuk menguji lingkungan. Saya selesai mengerjakan fitur tersebut, dan menggabungkan cabang A menjadi master . Karena deploy.rb
file dari A lebih baru, itu akan digabungkan dan sekarang deploy.rb
dalam referensi cabang master A . Saatnya mengedit lagi.
Itu banyak dari pengeditan manual yang tampaknya tidak perlu - parameter harus selalu cocok dengan nama cabang saat ini. Selain itu, Anda dapat dengan mudah lupa mengedit pengaturan setiap saat.
Apa cara terbaik untuk mengotomatiskan proses ini?
Sunting: Ternyata seseorang telah melakukan apa yang saya butuhkan :
Pagi ini saya memiliki kesempatan untuk menerapkan cabang repositori git ke server pementasan tetapi tidak tahu caranya. Pencarian cepat melalui kode sumber capistrano mengungkapkan bahwa saya dapat menggunakan set
:branch "branch_name"
dalam skrip penerapan saya. Saya mencobanya dan berhasil. Saya kemudian berpikir bahwa saya perlu melakukan perubahan serupa di semua cabang saya. Tentu saja, saya orang yang malas dan bertanya-tanya apakah tidak ada cara yang lebih baik.Jika Anda tidak terbiasa dengan git, output dari perintah git branch adalah daftar cabang dengan tanda asterisk yang saat ini diperiksa di mesin lokal Anda. Sebagai contoh:
> git branch * drupal_authentication fragment_caching master
Jadi, saya pikir, bagaimana jika saya baru saja mem-parsing output dan mencari cabang yang ditandai sebagai saat ini:
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
Sekarang saya dapat menerapkan cabang apa pun yang ada di mesin lokal saya dari satu skrip penerapan bersama.