Oto skrypt mam wymyślić:
#!/bin/sh
if [ -z "$(git status --porcelain)" ]; then
TAG=`date +xcarchive-%Y%m%d-%H%M%S`
echo "Working directory clean, creating tag ${TAG}"
git tag -a -m "Xcode Archive created" ${TAG}
exit 0
else
echo "error: Working directory dirty, stopping build"
exit 1
fi
Jako bonus, tworzy tag jeśli kopia robocza jest czysta.
Kontrola czysta/brudna opiera się na this question (o której zapomniałem, że zaproponowałem odpowiedź). Jeśli nie chcesz utworzyć znacznika, usuń linię .
Jeśli nie chcesz zatrzymywać kompilacji, usuń linię exit 1
.
Aby zainstalować to w projekcie:
- umieścić to w pliku w katalogu projektu (nazwałem go
ArchiveHousekeeper.sh
) i upewnić się, że plik wykonywalny bit jest ustawiony (chmod +x
)
- w twojej Xcode Projektu dodaj nowy "zewnętrzny system budowania" target
- Nazwa: "Archiwum Gosposia" (lub cokolwiek chcesz)
- Budowa narzędzi:
./ArchiveHousekeeper.sh
- W menu Xcode, wybierz produkt -> Schematu Edit ...
- W sekcji Build dodać nowy cel, a następnie usuń zaznaczenie wszystkich pól z wyjątkiem jednego w kolumnie Archiwum. Dzięki temu skrypt będzie uruchamiany tylko w Archiwum. (Patrz: this question, aby uzyskać wyjaśnienie i ładny zrzut ekranu.)
- Teraz spróbuj utworzyć archiwum i zobacz, jak to się nie uda, ponieważ nie sprawdziłeś tych zmian!
Byłoby miło, gdyby można było użyć Xcode 4 przed i po akcji (więc nie trzeba tworzyć "fałszywego" celu), ale nie wydają się one w stanie wpłynąć na kompilacji, a także nie mam pojęcia, w którym katalogu są wykonywane, jakie zmienne środowiskowe są dostępne lub dokąd trafiają ich dane wyjściowe.
Dzięki! Zajęło mi trochę czasu, aby dowiedzieć się, jak [dodać nowy cel] (http://stackoverflow.com/a/10407469/2547229)! – Benjohn
Jestem dość chętny, aby móc używać ustawień kompilacji w skrypcie - w zasadzie chcę [nazwę kompilacji, wersję i numer kompilacji w tagu] (http://stackoverflow.com/q/27326469/2547229). Te zmienne nie wydają się być podane skryptowi przy użyciu tego podejścia? – Benjohn
W Xcode 8.3.2, dodaj cel "Zewnętrzny system kompilacji" poprzez Plik> Nowy> Cel ...> Wieloplatformowy> Zewnętrzny system kompilacji. –