2016-04-27 8 views
0

Ich versuche, den Footprint unserer Projekte auf dem Produktionsserver zu reduzieren. Ich bin kein Experte für solche Operationen, aber ich habe das folgende Bash-Skript entwickelt.Download von einem privaten Github Repo

VERSION=$1 
rm -rf pydata 

# clone the entire github repository. This is kind of inefficient as we delete the .git folder in a moment 
git clone [email protected]:tt/pydata.git 

cd pydata 

# checkout the correct version 
git checkout $VERSION -- 

# Print the version into a txt file 
echo $VERSION > version.txt 

# Build the Python environment using conda 
make build 

# delete a bunch of files not needed on the server but contained in the git repository (documentation etc.) 
xargs rm -rf < delete.txt 
rm delete.txt 

# back into the folder 
cd .. 

Gibt es eine elegante Möglichkeit, den neuesten Tag zu finden (der Benutzer, falls nicht das gewünschte Etikett bereitstellt (in $ 1))?

Meine kleine Forschung zeigt, dass eher Klonen der gesamten Git rep und dann löschen der .git-Ordner wäre es besser, git-Archiv zur Verfügung zu haben, die nicht von github unterstützt wird?

Die Alternative wäre wget in den tar.gz-Archiven zu verwenden? Dies würde den Download des .git-Ordners verhindern, scheint aber alle möglichen zusätzlichen Kopfschmerzen zu verursachen, da SSH nicht sofort unterstützt wird.

dank

+1

Ich würde empfehlen, Releases von einem separaten "Release" Zweig zu verwenden. Es gibt auch eine API von Github, um die neueste zu erhalten: https://developer.github.com/v3/repos/releases/#get-the-lates-release – rinukkusu

Antwort

1

Um den neuesten git-Tag erhalten Sie git describe verwenden können.

if [ ''$VERSION = '' ] 
then 
    VERSION=$(git describe) 
fi