Ich verwende capistrano, um eine RoR-Anwendung bereitzustellen. Die Codebasis befindet sich in einem Git-Repository, und Verzweigungen werden in der Entwicklung häufig verwendet. Capistrano verwendet deploy.rb
Dateien für seine Einstellungen. Eine davon ist der Zweig, von dem aus bereitgestellt werden soll.
Mein Problem ist folgendes: Nehmen wir an, ich erstelle einen neuen Zweig A vom Master . Die deploy Datei Referenz Master - Zweig. Ich bearbeite das, damit A für die Testumgebung bereitgestellt werden kann. Ich beende die Arbeit an der Funktion und füge Zweig A in Master zusammen . Da die deploy.rb
Datei von A frischer ist, wird es fusioniert und die jetzt deploy.rb
in Master - Zweig Referenzen A . Zeit zum erneuten Bearbeiten.
Das ist eine Menge scheinbar unnötiger manueller Bearbeitung - der Parameter sollte immer mit dem aktuellen Zweignamen übereinstimmen. Darüber hinaus kann man leicht vergessen, die Einstellungen jedes Mal zu bearbeiten.
Was wäre der beste Weg, um diesen Prozess zu automatisieren?
Bearbeiten: Es stellte sich heraus, dass jemand bereits genau das getan hatte, was ich brauchte :
Heute Morgen hatte ich Gelegenheit, einen Zweig eines Git-Repositorys auf einem Staging-Server bereitzustellen, hatte aber nicht die geringste Ahnung, wie. Eine schnelle Suche im Capistrano-Quellcode ergab, dass ich set
:branch "branch_name"
in meinem Bereitstellungsskript verwenden konnte. Ich habe es versucht und es hat funktioniert. Ich dachte dann, ich müsste eine ähnliche Änderung in allen meinen Filialen vornehmen. Natürlich bin ich ein Faulpelz und habe mich gefragt, ob es keinen besseren Weg gibt.Wenn Sie mit git nicht vertraut sind, ist die Ausgabe des Befehls git branch eine Liste von Zweigen mit einem Sternchen, das den aktuell auf Ihrem lokalen Computer ausgecheckten markiert. Beispielsweise:
> git branch * drupal_authentication fragment_caching master
Also dachte ich mir, was wäre, wenn ich nur die Ausgabe analysieren und nach dem als aktuell markierten Zweig suchen würde:
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m
Jetzt kann ich jeden auf meinem lokalen Computer aktuellen Zweig über ein einziges freigegebenes Bereitstellungsskript bereitstellen.