Peut-on avoir des dossiers /.svn/ sur le site en ligne? (Comment les supprimer mais conserver la capacité de mise à jour svn?)

10

Je fais une mise à jour svn pour mettre à jour le code de mon site Web php, mais il laisse des .svn/dossiers partout.

Je pense qu'il est dangereux de laisser ces fichiers lisibles publiquement, mais il est très facile de mettre à jour le système.

Existe-t-il un moyen d'utiliser svn updatepour mettre à jour le système, mais pas pour exporter les .svn/dossiers?

siliconpi
la source

Réponses:

21

Si vous utilisez apache:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

Cela empêchera les gens d'accéder aux .svnrépertoires à distance (à l'aide du navigateur), mais vous pouvez conserver (et les capacités svn) le projet.

BTW vous pouvez remplacer \.svnpour \.gitou \.cvssi vous utilisez quelque chose de différent de la subversion.

coredump
la source
et cela bloquera tous les répertoires .svn sur le site Web? j'ai de nombreux sous
siliconpi
actuellement mon httpd.conf a <Directory /> Options FollowSymLinks AllowOverride All </Directory> puis-je ajouter ce que vous avez écrit juste en dessous comme une chose distincte ou les deux entrées doivent-elles être fusionnées?
siliconpi
Il correspondra à tout répertoire appelé .svndonc oui.
coredump
Vous pouvez l'ajouter séparément.
coredump
3

Vous souhaitez exporter votre code du SVN vers le site live ...

Ne l'utilisez pas svn updatepour ça. la mise à jour est destinée à être utilisée avec la mise à jour des copies de travail, et non à l'exportation du code. Utilisez-le à la svn exportplace car il exporte une arborescence de répertoires propre à partir du référentiel spécifié.

L' --forceindicateur permettra à l'exportation d'écraser les fichiers existants.

Entrée manuelle d'exportation SVN

gsreynolds
la source
Je peux sympathiser si l'OP ne veut pas utiliser export, car cela implique de toujours saisir une toute nouvelle copie du référentiel, ce qui est un problème si c'est un grand dépôt sur une petite connexion (par exemple, le serveur Web un serveur hébergé, mais votre dépôt SVN est dans votre bureau local et partagé par un lien de 1 Mo). updatesignifie que vous n'avez pas besoin d'obtenir le tout à chaque fois.
Mark Henderson
Un point juste. Peut-être que l'exportation vers une copie locale du site, puis simplement la synchronisation des modifications sur le serveur Web distant fonctionnerait dans cette situation? Je n'ai jamais eu ce problème donc je n'y avais pas pensé.
gsreynolds
2

Je ne les mets pas dans des sites de production / live. Parce que je ne veux pas que moi et / ou d'autres développeurs oubliez quelle mauvaise idée de modifier du code en direct. Mon script d'installation filtre mes fichiers .svn.

ekerner
la source
@kerner - comment les mettez-vous à jour alors?
siliconpi
1
Pourquoi ne pas simplement les utiliser svn exportet ne pas prendre la peine de les filtrer?
pjmorse
J'ai un script d'installation que j'utilise pour mes sites et je le modifie légèrement en fonction de chacun. Il fait également des choses comme construire les bases de données, les tables de base de données et les utilisateurs de base de données, configurer les utilisateurs ou administrateurs par défaut, etc. copier quelque part le long de ~ /, puis exécute le script d'installation qui est membre de ladite copie de travail, puis supprime éventuellement la copie de travail.
ekerner
1

Vous devez rechercher un système de déploiement approprié, tel que Capistrano . Cela signifie que vos serveurs de production n'ont pas besoin de subversion, et vous pouvez déployer sur plusieurs serveurs et ajouter une logique personnalisée aux déploiements. Cela facilite également la restauration des déploiements.

dhasenan
la source