2012-10-13 10 views
18

Mam skrypt w jednej z moich aplikacji na iOS, który powinien otrzymać skrót wersji git i umieścić go w numerze wersji. W tym skrypcie uruchamiam git --git-dir = "$ PROJECT_DIR" show -s --pretty = format:% h do tego. Dostaję jednak komunikat, że katalog nie jest repozytorium git. Gdybym echo PROJECT_DIR var i przejść do terminala następujące prace:git z opcją --git-dir = oznacza "nie jest repozytorium git"

cd projectDirPath 
git show -s --pretty=format:%h 

co nie działa to:

git --git-dir=projectDirPath show -s --pretty=format:%h 

Am I czegoś brakuje? Dokumentacja stwierdza, że ​​mogę podać ścieżkę do repozytorium git za pomocą --git-dir, a określona ścieżka oczywiście jest repozytorium git, ponieważ wszystkie polecenia git działają bez problemu, jeśli najpierw wpadnę w tę ścieżkę. Jednak jeśli nie jestem na tej ścieżce, specyfikacja --git-dir nie działa.

poważaniem, Michael

+2

'--git-dir' musi wskazywać na folder' .git' w twoim repozytorium. Spróbuj 'git --git-dir = projectDirPath/.git show -s --pretty = format:% h'. – jszakmeister

+0

Dzięki, to był problem. Możesz napisać to jako odpowiedź, więc mogę oznaczyć ją jako odpowiedź na problem! –

+0

Świetnie! Wysłałem to również jako odpowiedź. – jszakmeister

Odpowiedz

24

Podczas korzystania --git-dir, trzeba wskazać na folderu .git z repozytorium. Wypróbuj:

git --git-dir=projectDirPath/.git show -s --pretty=format:%h 

Używam mieć problem, pamiętając o tym sam. Aby pomóc mi zapamiętać, co robić, staram się pamiętać, że opcja wymaga dokładnie tego, czego chce: ścieżki do katalogu .git (git-dir).

1

Oprócz --git-dir może pomóc również ustawienie --work-tree. W przypadku skryptu dobrze jest używać odpowiednich środowisk (jest to łatwiejsze), np.

#!/bin/bash -ex 
export GIT_WORK_TREE=/path/to/repo 
export GIT_DIR=/path/to/repo/.git 
git show -s --pretty=format:%h 
Powiązane problemy