/ / version.gradle oparte na git - git, groovy, gradle

Wersje build.gradle oparte na git - git, groovy, gradle

Jestem modder Minecraft i używam ForgeGradle wtyczka do budowania moich modów.

Obecnie próbuję ustawić schemat wersjonowania oparty na moich wersjach git i hash. W systemie PKGBUILD systemu arch linux użyłbym:

pkgver() {
cd $_pkgbase
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

który zakończyłby się czymś podobnym do r392.2cc2ebc

Próbuję wykonać następujące czynności:

ext.revision = "git rev-list --count HEAD".execute()
ext.hash     = "git rev-parse --short HEAD".execute()
version      = "r${revision.text}.${hash.text}"

co daje mi prawie to, czego potrzebuję, r70?.11ae542?; nie wiem, jak się pozbyć ? w każdej części wersji. Gradle 2.0, sugestie?

Dalsze dochodzenie z powodu Peter NiederwieserKomentarz doprowadził mnie do uruchomienia kompilacji z flagą informacyjną i wygląda na to, że znaki nowej linii utknęły w nazwie pliku:

Executing task ":reobf" (up-to-date check took 0.004 secs) due to:
Output file build/libs/CreepyPastaCraft-1.7.x-r70
.11ae542
-universal.jar has changed.

Odpowiedzi:

8 dla odpowiedzi № 1

Cóż, skoro Piotr odmówił przekształcenia tego komentarza w odpowiedź, odpowiem na moje własne pytanie z korzyścią dla innych, którzy chcą zrobić to samo:

ext.revision = "git rev-list --count HEAD".execute().text.trim()
ext.hash = "git rev-parse --short HEAD".execute().text.trim()
version = "r${revision}.${hash}"

To dało taki sam wynik jak wyrażenie bash w moim pytaniu.


1 dla odpowiedzi nr 2

Jeśli chcesz, aby wersja była aktualnie wyewidencjonowanym skrótem referencyjnym (nazwa oddziału lub nazwa tagu), to wszystko, czego potrzeba:

version "git rev-parse --abbrev-ref HEAD".execute().getText().trim()

Jednak ustawi to wersję jako "HEAD", jeśli head nie jest gałęzią lub tagiem. Jeśli chcesz, aby wersja była oparta na krótkim haszu w tych okolicznościach, możesz wykonać następujące czynności:

version "git rev-parse --abbrev-ref HEAD".execute().getText().trim()
if (version.equals("HEAD")) {
version "git rev-parse --short HEAD".execute().getText().trim()
}