2013-08-09 1 views
1

J'ai une question d'aménagement de projet intéressante pour vous tous. Je ne sais pas vraiment comment gérer ça, alors j'espère que quelqu'un ici a une bonne idée. Fondamentalement, j'ai une application Web qui, pour la plupart, est la même par client (sauf les fichiers de configuration). Il y a certains fichiers qui sont différents pour chaque client (javascript, css, sql snippets), et gérer tout cela est un peu pénible avec la configuration que nous avons maintenant. Actuellement, tous ces fichiers personnalisés sont stockés dans le dépôt SVN. Lorsqu'une personne vient apporter des modifications, elle vérifie d'abord le projet de base (application Web Forms composée de pages, de classes C#, de fichiers javascript, de styles globaux et d'images). , etc.) dans un nouveau répertoire de travail, puis extraire les fichiers personnalisés et les exporter dans le répertoire de travail du projet de base. Une fois qu'ils auront fini d'apporter des modifications, ils valideront tous les changements survenus dans le projet principal (corrections de bugs, modifications/fonctionnalités souhaitées par d'autres clients), puis copieront les fichiers personnalisés dans le répertoire de travail personnalisé et valideront. Inutile de dire que c'est une grande souffrance et que les choses nous manquent.Comment gérer le projet d'application Web fractionnée

Mon objectif final est d'avoir un seul répertoire de travail pour le projet de base (à l'exclusion des branches de développement spéciales), et un projet personnalisé par client. Le développeur disposerait d'un fichier de solution contenant ces deux projets, il pourrait apporter des modifications à l'un ou l'autre, et les commits seraient mis à la bonne place.

Maintenant, je pourrais mettre en place une solution multi-projet qui ressemble à ceci, mais fonctionnellement je n'ai aucune idée de quoi faire. Comment puis-je exécuter le projet principal et avoir tous les fichiers personnalisés disponibles? Comment déployons-nous sur un serveur de test ou de production? Comment gérons-nous des choses comme la configuration web qui ne sont que partiellement personnalisées (par exemple les chaînes de connexion)?

Si quelqu'un a travaillé sur quelque chose comme ça, ou a une idée sur la façon dont nous pourrions mettre en place un projet comme celui-ci, il serait grandement apprécié.

Répondre

0

Ok, mon lieu de travail a connu le même problème avant. Nous avons fini par utiliser la branche.

Supposons que vous avez 2 projets dans un répertoire (principal), et maintenant vous avez un autre client arrive.

une simple succursale de ce répertoire (principal) à un autre répertoire (ClientA). Maintenant dans le répertoire clientA, vous devriez avoir 2 projets. Faites votre développement quotidien comme d'habitude, mais fusionnez juste dans les changements dans le projet de base à la branche principale.

---Main 
    ----Core 
    ----CustomisedSkeleton 

---ClientA (branch) 
    ----Core (do merge back later) 
    ----ClientACustomised (client based code, do not do any merge in) 

Un morething, depuis votre travail est applicaton web, vous devez mettre à jour chaque dossier de projets web Branchs, pour le rendre contraignant à différentes URL sur votre IIS local.

Say principale url de webapplication est "http://yourmachine.com/main/login.aspx", et vous application web de la branche personnalisée url est "http://yourmachine.com/clientA/login.aspx"

+0

Cela ressemble à une assez bonne solution au problème. Je vais le montrer aux plus hauts et voir ce qu'ils disent. Mettra à jour une fois que j'ai fait cela. Merci de votre aide. – djstamp

+0

@djstamp comment ça va? Tout retour de niveau supérieur. – ValidfroM

+0

J'implémente cette solution sur une instance de test pour voir si cela fonctionne, mais jusqu'ici tout va bien. Si tout se passe comme prévu, je marquerai cela correctement d'ici la fin de la journée de travail. – djstamp