2009-12-26 1 views
4

Je vois des insinuations ici et là qu'il est mauvais d'exécuter un déploiement en direct directement à partir d'un clone DVCS, et mieux d'exporter un arbre propre ou une archive tar et de déployer cela. Il me semble que courir directement à partir d'un clone DVCS a plusieurs avantages:Quel est le problème avec l'exécution d'un site en direct à partir d'un clone DVCS?

  1. Pas besoin de transporter la base de code entière sur chaque déploiement.
  2. Trivial pour mettre à jour le code à n'importe quelle version désirée.
  3. Légère à revenir à la version précédente si le déploiement se passe mal.

Et je ne vois pas vraiment d'inconvénients. La présence des fichiers repo (dans mon cas, un seul répertoire .hg /) ne cause aucun problème.

Existe-t-il vraiment une bonne raison de ne pas exécuter un déploiement en direct à partir d'un clone DVCS?

Répondre

2

C'est ce que je fais. Le seul "désavantage" est que vous ne pouvez pas vraiment contrôler la version des bases de données ou du contenu généré par le site (téléchargements d'utilisateurs). Ce n'est pas un inconvénient du tout, car il n'y a pas d'alternative. Comme d'habitude, vous avez besoin d'un script de sauvegarde pour copier tout ce contenu.

Ceci n'est pas une réponse mais plutôt une explication des mises en page de répertoire webapp modernes. Une webapp Python très simple pourrait ressembler à ceci:

webapp/ 
    .hg/ 
    webroot/ 
    handler.py 

Vous définiriez afin que le serveur Web sert uniquement du contenu statique de webroot/ et si le chemin n'existe pas là, il demande python (dans ce cas) pour cette page.

Puisqu'aucun code source côté serveur n'est dans webroot/, il ne peut pas être servi (sauf si vous avez une directive python l'ordonnant de servir le code source). La même chose s'applique au répertoire .hg/.

Note: SVN (< 1.7) et CVS sont des exceptions car ils pulvérisation leurs .svn répertoires sur chaque sous-répertoire. Dans ce cas, cela inclurait webroot/ alors, oui, vous devez vous assurer que vous ne fournissiez pas de fichiers cachés, mais c'est généralement le cas de toute façon.

1

Eh bien, j'en connais un.

Si quelqu'un peut accéder à votre répertoire .hg, il pourrait potentiellement voir votre code source. Mais vraiment, l'accès à ce répertoire devrait être interdit par le serveur ou par les fichiers .htaccess.

+1

Dans toute pile web-dev moderne que je connais (sauf PHP, que je n'utilise pas), le code source de l'application web ne se trouve pas dans un répertoire affichable sur le web de toute façon. Donc, ceci n'est pertinent que si vous travaillez en PHP. –

+1

Vous manquez le point. Si quelqu'un trouve le moyen d'obtenir votre répertoire .hg, il aura l'historique complet de votre projet et de toutes vos sources. Donc, ils peuvent le voler et utiliser cette connaissance gratuitement. – bialix

+2

bialix, vous manquez le point. Regardez ma réponse pour une explication sur la façon dont les webapps modernes structurent leurs fichiers - le répertoire '.hg' ne sera jamais servi car il ne fait pas partie de la racine web. – Oli