2010-04-28 25 views
1

Je suis un novice de Fossil (et de configuration CVS) qui tente de créer et de gérer un ensemble de référentiels Fossil distribués pour un projet Delphi.Gestion des composants communs avec Fossil CVS

je l'arborescence suivante sur ma machine de développement:

Projects 
    Some Project 
    Delphi Components 
     LookupListView 
    Some Client 
     Some Project For Client 
     Some Other Project For Client 
      Source Code 
       Project Resources 
       Project Database 

Je vais mettre en place le contrôle de version fossile pour les projets de version et partager \ Some client \ un autre projet pour le client \ code source, qui contient la source Delphi 2010 pour un projet de base de données.

Ce projet fait appel à Projects \ Delphi Components \ LookupListView qui est un composant Delphi. J'ai besoin que ce code soit inclus dans le système de gestion de versions pour mon projet. En théorie, je devrai également l'inclure dans d'autres dépôts de fossiles à l'avenir.

Si je crée mon référentiel Fossil au niveau du code source ou d'un autre projet pour le client, je ne peux pas ajouter de code au-dessus de ce niveau dans mon référentiel. Quelle est la bonne façon de faire face à cela? 1) Créer un référentiel séparé pour LookupListView et s'assurer que tous ceux qui utilisent un référentiel pour un projet qui le référence "savent" qu'ils doivent également obtenir la version actuelle de ce projet en tant que bien. Cela semble aller à l'encontre du but de pouvoir obtenir une version complète et à jour du projet avec une seule commande. Le problème est amplifié car il existe d'autres dépendances de composants communes dans ce projet.

2) Établir mon référentiel Fossil dans le répertoire Projects, afin que je puisse vérifier les fichiers de différents sous-dossiers. Cela me semble impliquer énormément de path-typing supplémentaire quand on fait des adds, et aussi d'imposer ma structure de répertoire (Some Client \ Some Other Project pour Client \ Source) sur les autres utilisateurs du référentiel - dans ce cas, le client réel.

Toute suggestion appréciée.

Répondre

3

J'utilise Git, mais mon approche peut être appliquée dans votre situation.

J'ai un dépôt pour tous mes dossiers de composants. Cela me donne la possibilité de tous les obtenir avec seulement quelques commandes de console (au cas où je réinstallerais mon OS ou irais à un autre ordinateur etc.).

J'ai aussi un référentiel pour chacun de mes projets. Si un projet utilise des contrôles tiers, je crée un sous-dossier "components" et fais des liens symboliques (junctions) de chaque jeu de composants. Cette approche présente des inconvénients (lorsque vous "revenez" dans l'historique des validations de certains projets, les composants peuvent être modifiés et si de nombreux projets utilisent des composants identiques, cela peut causer des problèmes). Mais je n'avais encore aucun problème :)

+0

Les jonctions fonctionnent bien ici. J'utilise le programme de http://technet.microsoft.com/en-us/sysinternals/bb896768 pour les créer à partir d'un fichier batch que j'utilise pour configurer chaque environnement de projet. – skamradt