2009-01-31 3 views
2

J'utilise subversion pour déployer des mises à jour de mon application ASP.Net Le dossier ".svn" à l'intérieur de la corbeille est mis à jour, ce qui provoque le recyclage du domaine d'application ASP.Net. Je ne veux pas que cela se produise à moins que quelque chose dans bin n'a changé.Utilisation de subversion pour le déploiement d'asp.net - Causes appdomain recycle

Existe-t-il un moyen de dire à ASP.Net d'ignorer le dossier ".svn" à l'intérieur de la corbeille? Fondamentalement pas regarder ce dossier pour les changements? Si cela ne fonctionne pas, j'utiliserai un dossier intermédiaire en dehors des dossiers Web pour télécharger les versions sur les serveurs, puis utiliser des scripts pour corriger/mettre à jour les dossiers Web actuels. [Edit:] L'option svn export ne garde pas mon déploiement sous contrôle de version, je veux être capable de faire "svn update" sur les dossiers web pour déployer et restaurer les versions.

Répondre

0

Eh bien, malheureusement, si vous faites cela, alors, vous allez, comme vous le faites, un redémarrage AppDomain. Donc, à moins de faire comme Espo l'a dit et d'utiliser svn export, vous verrez ce problème.

Serait-il plus facile d'écrire un fichier batch à 2 lignes que svn met à jour une copie locale, puis copie les fichiers?

+0

C'est la solution que j'ai fini par utiliser. – Sijin

5

Si vous utilisez svn export au lieu de svn checkout pour obtenir les fichiers de votre référentiel, vous n'obtiendrez pas le dossier .svn sur votre serveur. [Modifier] Une autre option serait de supprimer "bin" de votre dépôt (et éventuellement de le commettre à un autre, si vous avez besoin de révisions), puis de copier le catalogue bin sur votre site web manuellement quand il change. N'oubliez pas d'ajouter "bin" à votre liste svn-ignore-list.

+0

Merci, mais L'option svn export ne gardera pas mon déploiement sous contrôle de version, je veux être en mesure de faire "svn update" sur les dossiers web pour déployer et restaurer les versions. – Sijin

1

Vous souhaitez probablement ajouter le répertoire "Bin" à votre liste svn: ignore; il ne devrait pas être engagé de toute façon car il contient du code compilé, pas de code source.

Dans tous les cas que votre déploiement final "exportation svn" est probablement un meilleur choix, comme d'autres l'ont noté.

0

Le recyclage d'une application ne devrait pas être une si grande affaire. Votre problème est peut-être que vos utilisateurs perdent leur session lorsque cela se produit? Si c'est le cas, passez aux sessions StateServer ou SQLServer au lieu d'utiliser InProc.

1

Avez-vous pensé à utiliser un serveur d'intégration continue? L'intégration continue fait essentiellement référence à une pratique de développement conçue pour augmenter la fréquence des validations dans le référentiel.

Le plus souvent vous engagez la meilleure granularité que vous avez sur les rollbacks et aussi le moins qui peut être rompu entre les validations.

Les outils répertoriés ci-dessous fonctionnent tous avec subversion et peuvent être combinés avec MSBuild sur le serveur pour produire un système de déploiement de génération automatique &.

Les directives MSBuild incluent l'option d'ignorer certains fichiers (c'est-à-dire le code derrière) lors de la copie dans le répertoire actif. En outre, certains fichiers que vous voudrez peut-être avoir une version de développement et une version live ... dans ce cas, nous devrions écrire un script "transform" pour MSBuild qui s'assure que le fichier est correct pour le serveur live lors de la copie en direct. (c'est-à-dire web.config)

Hudson - http://java.net/projects/hudson/

Draco - http://draconet.sourceforge.net/

CruiseControl - http://cruisecontrol.sourceforge.net/

0

Subversion 1.7 et vous ne crée pas les fichiers .svn dans chaque sous-répertoire plus qui permet de faire ce que vous Je veux que les fichiers .svn ne gênent pas.

0

Je suis un peu en retard dans le jeu mais je vais jeter mes 2 cents:

Vous pouvez utiliser svn export passer un -r REV param. Cela vous permet de restaurer votre application à la révision spécifiée.

Vous pouvez donc utiliser:

svn export REPOSITORY DESTINATION --force mise à jour vers HEAD (état actuel de votre application)

ou

svn export REPOSITORY -r REV DESTINATION --force mise à jour vers une autre révision (peut-être que vous devriez utiliser les tags)

Ne pas oublier le --force param afin qu'il puisse remplacer les fichiers existants dans DESTINATION.

Questions connexes