Używam Capistrano do wdrażania aplikacji RoR. Baza kodu znajduje się w repozytorium git, a rozgałęzianie jest szeroko stosowane w programowaniu. Capistrano używa deploy.rb
pliku dla swoich ustawień, z których jedną jest gałąź do wdrożenia.
Mój problem jest taki: powiedzmy, że tworzę nową gałąź A z mastera . Plik wdrażania będzie odnosił się do gałęzi głównej . I edycja że tak A może zostać wdrożony do środowiska testowego. Kończę pracę nad funkcją i łączę gałąź A w master . Ponieważ deploy.rb
plik A jest świeższe, to zostanie połączone i teraz deploy.rb
w głównej referencje Branża A . Czas ponownie edytować.
To dużo pozornie niepotrzebnej ręcznej edycji - parametr powinien zawsze pasować do nazwy aktualnej gałęzi. Co więcej, za każdym razem łatwo zapomnieć o edycji ustawień.
Jaki byłby najlepszy sposób na zautomatyzowanie tego procesu?
Edycja: okazuje się, że ktoś już zrobił dokładnie to, czego potrzebowałem :
Dziś rano miałem okazję wdrożyć gałąź repozytorium git na serwerze pomostowym, ale nie miałem pojęcia, jak to zrobić. Szybkie przeszukanie kodu źródłowego Capistrano ujawniło, że mogę użyć zestawu
:branch "branch_name"
w moim skrypcie wdrażania. Spróbowałem i zadziałało. Wtedy pomyślałem, że będę musiał dokonać podobnej zmiany we wszystkich moich oddziałach. Oczywiście jestem leniwym draniem i zastanawiałem się, czy nie ma lepszego sposobu.Jeśli nie jesteś zaznajomiony z git, wynikiem polecenia git branch jest lista gałęzi z gwiazdką oznaczającą to, które jest aktualnie pobrane na twoim lokalnym komputerze. Na przykład:
> git branch * drupal_authentication fragment_caching master
Pomyślałem więc, co jeśli po prostu przeanalizuję dane wyjściowe i poszukałem gałęzi oznaczonej jako bieżąca:
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
Teraz mogę wdrożyć bieżącą gałąź na moim komputerze lokalnym za pomocą pojedynczego, współużytkowanego skryptu wdrażania.