Git Version mit Hooks

Ich arbeite ja sehr viel mit TYPO3 und ein sauberer Aufbau innerhalb von TYPO3 sieht vor, dass man die Versionen seiner Extensions pflegt.

Da aktuell immer mehr Extensions StandAlone in Git auftauchen ( Github, Gitlab oder halt Composer ) haben wir eine Inkonsistenz in der Versionspflege zu befürchten, denn sowohl Git, als auch die TYPO3 Extension als solche Pflegen Versionsnummern.

Im Rahmen meines letzten Beitrags habe ich mich mit ein paar Hooks von Git befasst. Das Ziel war im Falle folgendes Szenario abzubilden:

  1. Git Commit mit Code Änderungen
  2. Git Tag mit neuer Version
  3. Hier sollte der Hook jetzt hin kommen und die Version in der ext_emconf.php sollte vor dem Ändern der Version mit einem eigenen Commit verändert werden.

Hier ist meine Working Demo:

#!/usr/bin/php
<?php

echo "Running" . PHP_EOL;
$extEmConfVersion = getExtEmConfVersion();
$gitVersion = getGitVersion();
if(
 isset($extEmConfVersion) &&
 !empty($extEmConfVersion) &&
 isset($gitVersion) &&
 !empty($gitVersion))
{
 if($extEmConfVersion != $gitVersion) {
 adjustEmConfVersion($gitVersion);
 }
}

exit(0);


function getGitVersion()
{
 $return = exec('git describe --tags');
 if(strpos($return, 'fatal') === FALSE)
 {
 return $return;
 } else {
 return NULL;
 }
}


function getExtEmConfVersion()
{
 if(!file_exists('ext_emconf.php'))
 {
 return NULL;
 }
 $content = file_get_contents('ext_emconf.php');
 preg_match_all("/'version'\s*=>\s*'(.*?)'/", $content, $return);

 if(isset($return[1][0]))
 {
 return $return[1][0];
 }
 return NULL;
}


function adjustEmConfVersion($gitVersion)
{
 if(!file_exists('ext_emconf.php'))
 {
 return NULL;
 }
 $content = file_get_contents('ext_emconf.php');
 $content = preg_replace("/'version'\s*=>\s*'(.*?)'/", "'version' => '" . $gitVersion . "'", $content);
 file_put_contents('ext_emconf.php', $content);
 exec('git add ext_emconf.php');
}

Der Hook ist derzeit allerdings nicht wirklich funktional, denn er reagiert nicht auf die neue Version, sondern nur auf neue Commits. Also müsste ich entweder die Versionen in der ext_emconf.php pflegen und dann per modifizierten Hook die Git Versionen pflegen, oder ich muss mir eine Alternative mit dem Hook überlegen.

Wenn da jemand ne Idee oder ne Lösung hat, bin ich für alles offen und für jede Hilfe dankbar!

Hey, ich bin Bastian, ein Netzzombie vor dem Herrn. Gemeinsam mit meiner Freundin habe ich 2015 eine Medienagentur mit Schwerpunkt TYPO3 und Hosting gegründet, aber in meiner Freizeit kümmere ich mich um die wirklich wichtigen Dinge: Whiskey, Hörspiele, Comics und Rollenspiel! Das sind meine Laster. Nur nicht in der Reihenfolge...

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

top