2009-10-14 7 views
0

J'ai ce que je crois être une situation délicate, mais cela indique généralement que je suis ignorant de quelque chose de très simple.svn - 2 'paquets' l'un utilisant des éléments de l'autre, la meilleure façon de structurer cela?

J'ai actuellement un projet php qui est dans un repo svn, appelez-le 'firstproject'. La copie de travail de ceci est un répertoire d'hôte virtuel apache afin que je puisse exécuter ce projet à n'importe quel point de développement via un navigateur. J'ai maintenant un autre projet « newproject » que je veux utiliser une partie du code de base de « firstproject » mais quand newproject me oblige à factoriser parties des firstproject classes que je voudrais pour cela d'être intégré de nouveau dans premier projet à un moment donné.

Est-il possible de mettre svn en place pour que je puisse avoir une copie de travail de newproject joyeusement dans son propre hôte virtuel apache et comprenant un code de firstproject et son propre code et pour svn garder un œil sur qui est ou est-ce un cas de créer une branche 'newproject' de firstproject, en éditant en ajoutant le code newproject puis en faisant une sorte de fusion de code dans 'firstproject' quand cela semble approprié?

Un grand merci à tous ceux qui peuvent m'aider à réfléchir à ce sujet, il me semble qu'il devrait y avoir un bon moyen, mais peut-être qu'il n'y en a pas.

Répondre

1

Il me semble que premier projet devrait libérer certains livrable (une bibliothèque). newproject peut alors consommer ceci.

Si cette bibliothèque doit être modifiée, les modifications doivent être effectuées dans firstproject et libérées.

C'est comme ça que je gère normalement ce genre de dépendance dans un monde non-PHP. Je ne suis pas sûr qu'en PHP cela devrait être différent. C'est un peu un casse-tête, mais vous construisez une bibliothèque réutilisable qu'un projet en aval peut consommer (et choisissez la version qu'il consomme, notez).

+0

merci pour vos pensées brian, c'est en effet un mal de tête! – Tofuwarrior

0

Si une grande partie du code est commune, vous pouvez envisager d'utiliser un référentiel commun au lieu de deux référentiels distincts pour ces deux projets. Vous pouvez ensuite sortir une branche pour le code qui pourrait changer dans le projet newproject. L'espace de travail sur le serveur apache newproject devra provenir de cette branche afin que toutes les modifications puissent être renvoyées à la branche et fusionnées sur le tronc lorsque vous serez prêt. De cette façon, vous pouvez incorporer les modifications au firstproject mainline/trunk.

Vous pouvez également explorer svn externals pour une autre approche de mélange et de correspondance si vous avez besoin d'un espace de travail avec des extractions de plusieurs référentiels. Je ne l'ai pas mis en œuvre moi-même mais vous pouvez trouver les détails ici: http://svnbook.red-bean.com/en/1.1/ch07s04.html

Questions connexes