2009-07-21 9 views
7

Je ftp actuellement tous mes fichiers sur mon site quand je fais une mise à jour (via une connexion adsl slowish)la publication d'un site Web en utilisant svn export

Et je veux rendre les choses plus faciles, alors je viens récemment commencé à utiliser un organisé svn service, et je pensais que je pourrais accélérer les choses un peu en faisant une exportation svn de mon site web directement sur mon serveur web

J'ai essayé ça plusieurs fois et ça a l'air de fonctionner, mais ça va chercher tout le site chaque fois qui est un peu lent pour une mise à jour 1 fichier

alors mes questions sont

est-il possible de faire une exportation et seulement obtenir les changements intervenus depuis la dernière exportation (Comment cela gérer les fichiers supprimés?)

OU il sera plus facile de faire une caisse svn et mettre à jour svn tout le temps au lieu d'exportation svn et juste cacher les dossiers .svn utilisant apache .htaccess

est-ce une bonne idée, ou est-il une meilleure façon de publier mon site je suis en train de réaliser le 1 clic Déployez type idéal

peut-être il y a quelques getcha je n'ai pas pensé que quelqu'un d'autre a couru

debian/apache/php

Répondre

8

Je ferais une vérification svn, et l'ai fait avec succès sur un site en direct pendant un certain nombre d'années. Vous devez ajouter mod_rewrite règles à 404 les répertoires .svn (et fichiers) cependant.

+0

RewriteEngine sur RewriteRule * \ svn /.* - [F] –

+0

pour nier, permettre nier de tous

+0

Impossible faire FilesMatch de travailler car il ne correspond pas aux répertoires, mais DirectoryMatch a bien fonctionné: pour allow, deny deny from all Miquel

5

C'est ce que je fais sur mon hôte:

Pour chaque projet, j'ai une structure qui ressemble plus moins comme ceci:

~/projects/myproj 
~/public_html/myproj 

First dir est une caisse de SVN, tandis que le second on est juste export svn.

J'ai un petit script bash

#!/bin/bash 
SOURCE="$HOME/projects/" 
TARGET="$HOME/public_html/" 
for x in `ls $SOURCE` 
do 
    if [ -d $SOURCE$x ]; then 
     svn update $SOURCE$x 
     svn export --force $SOURCE$x $TARGET$x 
    fi 
done 

Export est fait à partir de la copie de travail il est très rapide.

+0

ce qui se passe avec les fichiers que vous avez supprimés de svn, les supprimez-vous manuellement? – bumperbox

+0

ajoutez un 'rm -Rf $ TARGET $ x' après la commande svn update dans le script ci-dessus et vous n'aurez plus à vous en soucier – RaYell

1

Ce n'est peut-être pas exactement la réponse que vous recherchez, mais si vous avez un accès SSH à votre serveur web (cela dépend de votre service d'hébergement, certains "low cost" n'offrent pas ce type d'accès), vous pouvez utiliser rsync pour "synchroniser" le site distant avec ce que vous avez sur votre disque. Dans le passé, j'utilisais quelque chose comme l'idée que vous décrivez (aller chercher le svn log entre la dernière révision poussée en production et HEAD, analyser chaque ligne, et finalement calculer ce qu'il faut envoyer au serveur); mais ce n'était pas vraiment un bon processus; J'utilise maintenant rsync, et j'aime beaucoup mieux.

(Ici aussi, vous devrez exclure les répertoires .svn, btw)

0

Vous pouvez simplement accepter d'avoir des répertoires .svn dans votre site Web (généralement pas un problème esp. Si vous le configurez de ne pas permettre l'accès à ceux-ci) - c'est l'option facile. Sinon, faites ce que fait RaYell et ayez deux copies de votre site web sur le serveur web. Une extraction normale en dehors du répertoire Web et une dans votre répertoire Web.Lorsque vous mettez à jour, il suffit d'exporter le svn (juste une copie avec .svn dirs supprimés) dans le répertoire web (et vous devez d'abord supprimer les anciens fichiers si vous souhaitez éviter que les fichiers supprimés de SVN restent sur votre site). Je fais quelque chose comme ça, en utilisant robocopy set pour refléter svn checkout en excluant les répertoires .svn, et obtenir à la fois l'exportation et la suppression de l'ancien fichier en une seule étape, minimisant ainsi les temps d'arrêt si la copie prend longtemps. Je suis sûr que c'est aussi facile sur Unix, si c'est votre environnement d'hébergement. Par exemple, vous pouvez utiliser un rsync local: http://blog.gilluminate.com/2006/12/12/yes-you-can-rsync-between-two-local-directories/

0

Ancien sujet mais puisque c'est ce qui est apparu dans Google au cours de mes recherches, j'ai pensé que j'ajouterais à cela. Je recommande de faire une exportation sur le site au lieu de vérifier. J'aime garder les dépôts et les sites séparés. Je ne recommande pas non plus d'exporter le repo entier sur le site à chaque fois, spécialement si seulement quelques fichiers changent à la fois. Ce que vous pouvez faire à la place est de faire un diff sur le repo pour voir ce qui a changé d'une version à une autre et seulement exporter ces fichiers. Plus d'infos sur:.. http://www.joeyrivera.com/2011/automate-svn-export-to-site-w-bash-script/

Questions connexes