2011-02-07 5 views
2

Après l'adoption de Kiln il y a environ un an, j'ai respecté la convention d'avoir un projet de contrôle de source par projet de studio visuel. Tandis que je trouve cela maintient les commits gentils et simples et le projet de contrôle de source très concentré, il commence à conduire à beaucoup de commits pour ce qui est essentiellement un changement.Plusieurs projets dans une solution par rapport à plusieurs projets dans le contrôle de source

Exemple: Un de mes solutions de visual studio est configuration comme ceci:

  • App.Core (Couche de service)
  • App.Core.Tests (couche d'essai)
  • de App.Web. base (contrôleurs)
  • App.Web.UI (vues/js/etc ..)
  • App.Web.Admin (site administratif pour le web)
  • App.Web.Tests (t couche Esting)
  • de App.ChromeExtension

Finalement, j'ajouterons une andriod et la couche vue iphone et (probablement MonoTouch/monodriod)

dire que j'ajouter une fonctionnalité sur le côté de la couche de service J'ai besoin d'une mise à jour de l'interface, je dois ensuite propager ce changement à travers les différentes méthodes web et peut-être même l'extension chrome. C'est assez simple, mais cela pourrait signifier que je devrais faire jusqu'à 7 commits différents pour ce qui est essentiellement un seul "changement". Cela signifie également tirer beaucoup de changements pour d'autres développeurs ou pour moi-même lorsque je passe de/à mon ordinateur portable.

Est-ce que quelqu'un qui a traité de grands projets peut nous dire quelle est la «meilleure» approche? Est-ce que je m'en tiens aux projets de contrôle de sources multiples de sorte que chaque arbre de commit est super concis et gère les frais généraux? Est-ce que je colle tout dans un projet de contrôle de source unique pour plus de simplicité? Est-ce que je fais un hybride où je fusionne n'importe quoi lié au Web dans un projet, et tout service lié à un autre projet? Ou autre chose? Pour référence: le projet est géré par un développeur UX et par moi-même, mais cela pourrait facilement changer à l'avenir.

(aussi:. Je ne sais pas si cela était programmeurs ou Stackoverflow digne, et a décidé d'y aller à la place Si un mod veut le déplacer, je n'ai pas d'objection.)

Merci!

Répondre

2

Dès que vous avez des composants inter-dépendants (ensemble de fichiers, ici solutions), où un changement à un module doit se propager aux autres, vous pourriez envisager un "system" approach (c.-à-un référentiel, avec tout il):
Cela a du sens si vous considérez que vous ne pouvez pas avoir un tag sur un seul module sans définir ce tag sur tous les autres.

Si ces composants peuvent être développés indépendamment les uns des autres, vous pouvez réduire le nombre de commits par les scripts, like in this script 'git-submodule-recur.sh:' (ici pour Git):

#!/bin/sh 

case "$1" in 
     "init") CMD="submodule update --init" ;; 
     *) CMD="$*" ;; 
esac 

git $CMD 
git submodule foreach "$0" $CMD 

commande On pourrait alors engager dans tous les sous-modules:

git-submodule-recur commit -a -m "some comment" 
+0

Merci pour vos commentaires. L'approche du système était une bonne lecture. – TheRightChoyce

Questions connexes