Automatyczne wersjonowanie

O wersjonowaniu już kiedyś było „Wersjonowanie aplikacji” a tym razem opiszę jak można to robić automatycznie.

W wymienionym wyżej artykule był opisany sposób wersjonowania w postaci x.y.z my teraz zajmiemy się pozycją z. Te wcześniejsze powinny być aktualizowane ręcznie ze względu na ich dość duże znaczenie.

Można założyć iż ostatnia pozycja oznacza nie wielkie zmiany. Ja wstawiam w to miejsce numer rewizji z serwera svn. Ale commity czasami dość często się robi i jakby tak za każdym razem miał aktualizować to stracił bym bardzo wiele czasu. To jak można zrobić to automatycznie?

Oto prosty skrypcik:

#!/bin/sh

repo=$1
targetFile=$2

if [ -z $repo ]
then
	echo "Brak adresu repozytorium";
	exit 1;
fi

if [ -z $targetFile ]
then
	echo "Brak docelowego pliku";
	exit 1;
fi

Teraz wystarczy go wywołać w cron’ie co określony czas (według uznania, ja mam co godzinę). A jako plik docelowy podać jakiś który wchodzi w skład danego projektu. A w projekcie przy wyświetlaniu numery wersji aplikacji użyć takiej funkcji:

public function getApplicationVersion() {

	$wersja = "2.2"

	if(file_exists(ABSPATH.'/revision')) $fileRevision = file_get_contents(ABSPATH.'/revision');
	else $fileRevision = '';

	$tmp = explode(" | ",$fileRevision);
	if(isset($tmp[0]) and $tmp[0] != '') $wersja .= '.'.str_replace('r','',$tmp[0]);

	return $wersja;
}

Rozwiązanie jest proste i wygodne. No chyba, że ktoś ma lepsze…

4 thoughts on “Automatyczne wersjonowanie

  1. Tak, ja mam lepsze, wstawienie zmiennej SVN/CVS. To co zaprezentowałeś nijak będzie wiązać się z CVSem, bo wystarczy że pliku brak, a aplikacja i tak działać będzie.

    Poza tym, otwieranie pliku przy każdym czytaniu wersji to jakaś kupa (czy nawet tylko przy uruchomieniu, skoro można w ramach checkoutu mieć stałą o odpowiedniej wartości).

    Czas poczytać manuale SVN/CVS

  2. Krytykować każdy umie. Jeśli jesteś taki obeznany „Ktosiu” to proszę pokaż jak to Ty byś zrobił.

  3. git init – uruchomienie wersjonowania w katalogu

    git commit -a – wersjonowanie

Comments are closed.