# Frage zu git in einem Shellscrpit

## 3PO

Hallo Zusammen,

ich will in einem Script folgende Bedingung einbauen:

- Mache "git pull"

- Wenn es etwas Neues gibt, dann mache "make clean all"

Ich habe das jetzt so gelöst:

```
[ ! "$(git pull |grep  'Already up-to-date.')" ]  && make clean all
```

Funktionieren tut das Ganze ja soweit, aber da gibt es doch sicherlich elegantere Lösungen?

----------

## firefly

eventuell liefert git verschiedene return werte je nachdem ob was getan wurde oder nicht.

das ganze kannst du wie folgt ausprobieren:

```
<git-command> ; echo $?
```

$? enthält den return wert des letzten kommandos.

----------

## 3PO

Nun, genau um das "<git-command>" geht es ja. Leider ist "git help" diesbezüglich nicht sehr aufschlussreich.  :Sad: 

----------

## mv

M.W. ist 

```
git status --porcelain
```

 das einzige Git-Kommando, das in garantierter Weise eine parse-bare Ausgabe für Scripts generiert. Ob da die Information dabei steht, die Du willst, weiß ich aber nicht.

----------

## 3PO

Leider zeigt das nicht an, ob beim "git pull" etwas geändert wurde.  :Sad: 

----------

## ScytheMan

du könntest einen client side git hook basteln.

im client repository muss das unter .git/hooks/

leider weiß ich nicht welches hook-file du dafür verwenden musst, aber "man githooks" dürfte weiterhelfen.

post-merge dürfte wohl passen.Last edited by ScytheMan on Sat Feb 11, 2012 4:43 pm; edited 1 time in total

----------

## manuels

Du könntest das hier mal probieren: http://git.661346.n2.nabble.com/checking-action-of-git-pull-td1624645.html

----------

## 3PO

THX @ manuels, 

ich werde es mal so probieren.  :Wink: 

```
cd $GIT_DIR

original_head=$(git rev-parse HEAD) || exit 

git pull || exit 

updated_head=$(git rev-parse HEAD) || exit 

[ $original_head != $updated_head ] && make clean all
```

----------

## cryptosteve

Ich fand die Ausgangslösung - gemessen an den sonstigen Möglichkeiten - gar nicht so übel.  :Smile: 

----------

