GIT auto versioning - Jak zrobić?

0

Witam, i z gory przepraszam za brak Polskich znakowWitam, i z gory przepraszam za brak Polskich znakow i ewentualne bledy ortograficzne/interpunkcyjine.

Staram sie ugryzc jak zrobic auto versioning,
Szukalem juz tego w google, mowil o hook'ach, ale git'a jeszcze zbytnio nie ogarniam
A im wiecej szukam tym mam coraz wieksza sieczke z mozgu,

Dlatego kieruje do was pytanie "Jak najlepiej uzyskac auto versioning w git'cie?"

0

W C# używam GitVersion oraz MSBuilda.

Jak kiedyś potrzebowałem zrobić na szybko wersjonowanie w Arduino to do .git/hooks/post-commit wpisałem po prostu:

./version.sh

A version.sh robiło:

echo "#ifndef VERSION" > version.h
echo -n '#define VERSION "'  >> version.h
git describe --long --tags | tr -d '\n' >> version.h
echo '"' >> version.h
echo "#endif" >> version.h

I to generuje wersję na podstawie ostatniego tagu (v1.0) w postaci v1.0-11-gffd230c i zapisuje do stringa, który jest w programie gdzieś tam includowany aby go pokazać.

0

@Ktos wyglada na to ze ten GitVersion odpada :( (korzystam z linux'a).
Mogl bys bardziej opisac ten swoj skrypt? tzn. jak z niego korzystac

0

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

Co do tematu, to znacznie lepiej jest używać tagów i semantic versioning a nie numerów rewizji.

0

@winerfresh staram sie tagowac i uzywac semantic versioning, ale chcial bym w pluginach (to sie w repo znajdue), wpisac numer wersji tak abym po jej samej mogl szybko dojsc "kiedy zostala skompilowana" (moze nie kiedy, ale na ktorej wersji :) )

0

Skrypt za każdym commitem się odpala i generuje plik "version.h", który jest ignorowany w repo, ale za to jest inkludowany w projekcie. W pliku version.h definiuje symbol VERSION, będący zwykłym łańcuchem znaków, wynikiem komendy git describe. I wszędzie gdzie potem w kodzie napisze się VERSION to on to zamienia (bo to zwykłe C) na tenże łańcuch znaków.

Ogólnie: w .git/hooks/post-commit jesteś w stanie uruchomić skrypt robiący dowolną operację, przede wszystkim generowanie wszelkich plików zawierających numer wersji jako string, które potem możesz sobie w swoim kodzie już zwyczajnie dołączać.

0

A wiec tak, stworzylem sobie skrypt (nie znam zabardzo tego jezyka bash'owego.):

#!/bin/sh
major=1
minor=1
patch=0

type='alpha'

version_file_path='/sciezka/do/auto_version.inc'

commit_sha=`git rev-parse --short HEAD`

version="$major.$minor.$patch-$type-$commit_sha"

echo "#ifndef PLUGIN_VERSION" > "$version_file_path"
echo -n "  #define PLUGIN_VERSION \"$version\" \n"  >> "$version_file_path"
echo "#endif" >> "$version_file_path"

echo "Version = $version"

dodalem takze plik version gdzie:

#tryinclude "auto_version"
#ifndef PLUGIN_VERSION
  #define PLUGIN_VERSION "1.1.0-alpha-manual"
#endif

wynik:

 
plx@hellCore:~/xxx$ git commit -m "xxx"
Version = 1.1.0-alpha-3df2571

Mial bym prosbe aby ocenic ten sposob :)
stworzone na bazie tego co dal @Ktos

1 użytkowników online, w tym zalogowanych: 0, gości: 1