143 votes

Comment puis-je déployer à partir d'un sous-répertoire Git?

J'ai un projet qui utilise la Servir et la version est contrôlé à l'aide de Git. Servir crée un output le dossier avec les fichiers statiques que je veux déployer sur Heroku.

Je ne veux pas déployer le service projet lui-même depuis le Heroku Cèdre pile ne semble pas trop friands, mais plus important encore, je veux profiter de Heroku est un grand soutien pour les sites statiques.

Est-il un moyen de déployer un sous-dossier pour un git remote? Dois-je créer un repo Git dans l' output le dossier (qui sonne faux) et pousser à Heroku?

253voto

anshumans Points 980

Il existe un moyen encore plus simple via git-subtree . En supposant que vous vouliez pousser votre dossier 'sortie' en tant que racine de Heroku, vous pouvez faire:

 git subtree push --prefix output heroku master
 

Il semble actuellement que git-subtree soit inclus dans git-core, mais je ne sais pas si cette version de git-core a déjà été publiée.

11voto

LessQuesar Points 638

J'ai commencé avec ce que John Berryman a dit, mais en réalité, cela peut être plus simple si vous ne vous souciez pas du tout de l'histoire de heroku git.

 cd bin
git init
git add .
git commit -m"deploy"
git push git@heroku.com:your-project-name.git -f
rm -fr .git
 

Je suppose que git subtree officiel est la meilleure réponse, mais j’ai eu du mal à faire en sorte que subtree fonctionne sur mon mac.

9voto

JnBrymn Points 5199

J'ai eu un problème similaire. Dans mon cas, tout ce qui se trouve dans le référentiel heroku n'a pas été supprimé et remplacé par ce qui se trouve dans mon sous-répertoire. Si c'est votre cas, vous pouvez utiliser le script bash suivant. Il suffit de le mettre dans votre répertoire d'application Rails.

 #!/bin/bash

#change to whichever directory this lives in
cd "$( dirname "$0" )"

#create new git repository and add everything
git init
git add .
git commit -m"init"
git remote add heroku git@heroku.com:young-rain-5086.git

#pull heroku but then checkback out our current local master and mark everything as merged
git pull heroku master
git checkout --ours .
git add -u
git commit -m"merged"

#push back to heroku, open web browser, and remove git repository
git push heroku master
heroku open
rm -fr .git

#go back to wherever we started.
cd -
 

Je suis sûr qu'il y a beaucoup de façons d'améliorer cela - alors n'hésitez pas à me dire comment!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X