2012-10-13 9 views
18

Ho uno script in una delle mie app iOS che dovrebbe ottenere l'hash di revisione git e inserirlo nel numero di versione. In questo script eseguo git --git-dir = "$ PROJECT_DIR" show -s --pretty = formato:% h per quello. Tuttavia, ricevo il messaggio che la directory non è un repository git. Se Mi unisco il project_dir var e vado al terminale le seguenti opere:git con --git-dir = restituisce 'non un repository git'

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

Che cosa non funziona è:

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

mi sto perdendo qualcosa? La documentazione afferma che posso specificare il percorso di un repository git con --git-dir e che il percorso specificato è ovviamente un repository git dato che tutti i comandi git funzionano senza alcun problema se prima scrivo in quel percorso. Comunque se non sono in questo percorso, specificare --git-dir non funziona.

Con i migliori saluti, Michael

+2

'--git-dir' deve indicare la cartella' .git' del repository. Prova 'git --git-dir = projectDirPath/.git show -s --pretty = formato:% h'. – jszakmeister

+0

Grazie, quello era il problema. Potresti postare questa risposta come risposta in modo da poterla contrassegnare come risposta al problema! –

+0

Ottimo! Ho postato questo come risposta pure. – jszakmeister

risposta

24

Quando si utilizza --git-dir, è necessario puntare alla cartella .git del repository. Prova:

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

Io uso per avere un problema ricordando questo da solo. Per aiutarmi a ricordare cosa fare, cerco di ricordare che l'opzione sta chiedendo esattamente quello che vuole: il percorso della directory .git (git-dir).

1

Oltre a --git-dir, può essere utile impostare anche --work-tree. Per lo script, è opportuno utilizzare ambienti pertinenti (è più semplice), ad es.

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