Comment puis-je transférer une partie de mon repository git sur Heroku?

J’ai une application multi-module qui est déjà sur Github. Il est composé de deux modules, l’une d’entre elles est une application Android et l’autre une application Web basée sur Rails. Ainsi, la structure de répertoires de mon projet prend la forme de:

ProjectRoot | +-- web | +-- android | +-- .git 

En tant que tel, je ne peux pas simplement insérer cd dans ProjectRoot et pousser mon application vers Heroku car le dossier racine de l’application Rails est ProjectRoot/web . Existe-t-il un moyen de pousser le dossier web vers Heroku? Si je transforme le Web en un sous-module git, cela devrait être facile, mais je n’ai que 5 repos privés sur Git et je préfère ne consumr qu’un seul repo pour toute mon application.

Vous pouvez utiliser le sous-arbre git . Il va générer un nouvel arbre de validation avec votre répertoire en tant que root et le pousser.

 git subtree push --prefix web heroku master 

La documentation complète est ici .

Pour l’installer:

 git clone git://github.com/apenwarr/git-subtree.git cd git-subtree sudo sh install.sh 

La commande git subtree (intégrée, maintenant) est un bon moyen de le faire. Si vous voulez pousser un sous-arbre d’une twig pour devenir votre maître, vous pouvez utiliser quelque chose comme:

git push --force heroku `git subtree split --prefix web HEAD`:master

Vous pouvez également utiliser les twigs git au lieu des sous-dossiers. Si vous avez git 1.7.2 ou plus récent, vous pouvez simplement git checkout --orphan android pour créer une twig qui est déconnectée de votre twig principale (supposée ici être le dossier Web). Une fois que vous avez extrait la twig orpheline, lancez git rm -rf . pour supprimer les fichiers existants avant de les copier dans vos fichiers spécifiques à Android dans le répertoire racine maintenant vide.

Si vous souhaitez utiliser des dossiers séparés pour chaque module, vous pouvez cloner le référentiel deux fois et utiliser cette structure:

 ProjectRoot ├── android │  └── .git └── web └── .git