2010-09-27 12 views
1

Je dois travailler sur une application Web. Le contrôle de version a des répertoires structurés comme:Contrôle de version et applications compliquées qui installent des fichiers partout

appname/conf 
appname/www 
appname/etc 
appname/keys 
appname/lib 
... 

Cependant, pour que l'application fonctionne, il est actuellement à vivre dans des répertoires du système:

/etc/httpd/conf.d 
/var/www/html 
/etc/appname 
/etc/pki/tls/ 
/usr/lib/perl5/... 
... 

Il y a un RPM de prendre le code VC'ed et créez un paquet qui place le code dans le lieu de production (ie/var/www/html et autres). Il n'y a pas d'instructions d'installation, je suis supposé utiliser le RPM et improviser (pas idéal je sais).

Dans un cas comme celui-ci, comment tout le monde édite-t-il l'application, maintenant les fonctionnalités de contrôle de version (git diff etc ...), et modifiant rapidement l'application pour qu'elle soit exécutable? L'application est écrite en Perl, donc il n'y a pas d'étape de compilation attendue.

Les façons dont j'ai pensé sont:

  • travail sur le VC'ed dir (et le code ne, vous devez exécuter pas immédiatement d'avoir une étape d'installation)
  • travail sur le code l'emplacement final (les modifications de code fonctionnent immédiatement, mais vous devez déplacer manuellement le code dans les répertoires VC)
  • écrire un programme de fichiers surveillant le programme qui surveille les modifications apportées au répertoire VC, et installe les fichiers modifiés dans leur dernière version endroits (peut-être quelque chose comme ça existe?)
  • une autre méthode évidente que j'ai oublié, j'espère que quelqu'un peut me dire :-)

Comment tout le monde gère les cas comme ça?

Répondre

0

Je travaillerais sur le code sur un serveur de test quelconque, mais avec le code dans les emplacements corrects. Le contrôle de version devra alors être capable de récupérer les fichiers nécessaires à partir de leurs emplacements respectifs, mais vous ne déployez pas à l'emplacement "final" jusqu'à ce qu'il soit prêt (ce qui serait essentiellement une étape "d'installation", comme vous le dites).

Depuis changer les choses à être plus sensibles peuvent ne pas être directement une option pour vous, est-il possible pour vous de faire un lien symbolique des répertoires du système dans le répertoire VC?

0

Il y a une différence entre:

  • contrôle de version: vous permet de gérer la source et de construire une livraison (peut être dans votre cas un tar.gz de tous les fichiers nécessaires pour être déployés dans le répertoires système)
  • de gestion des versions: où vous prenez une livraison et copier/déployer dans son environnement d'exécution.

Une sorte de processus d'intégration continue (basée sur un programmateur comme Hudson) peut vous aider à surveiller le VC et construire/déployer dès qu'un nouveau Commit est fait.