2009-07-20 7 views
3

J'ai un projet django sur lequel j'ai travaillé en tant que développeur solo, et j'ai utilisé TortoiseSVN pour garder le code géré dans un référentiel sur un serveur de travail. Je travaille sur une installation locale de django, etc.Exclure un seul fichier de projet d'un référentiel SVN

Il y a maintenant une deuxième personne qui travaillera sur ce projet, et la possibilité de travailler sur d'autres PC.

Maintenant, il ne devrait y avoir, pour le moment, qu'une seule version de développement (branche?) De ce projet, mais le fichier de configuration (settings.py) devra être différent sur chaque ordinateur utilisé. Je veux créer une version locale de ce fichier sur chaque PC qui n'aura pas besoin d'être changé à nouveau.

Comment puis-je définir le référentiel (de préférence dans TortoiseSVN) pour exclure ce fichier? Par exemple. le référentiel ne doit pas inclure settings.py. Lorsqu'une extraction survient, elle doit mettre à jour tous les fichiers du dossier local mais ne pas modifier/supprimer la copie locale de settings.py. Lorsqu'une validation se produit, settings.py doit être ignoré et non téléchargé.

Au moment où settings.py est écrasé/mis à jour comme tout autre fichier dans le dossier/référentiel du projet.

Tout nudges dans la bonne direction serait utile - je suis nouveau à SVN en général et je voudrais savoir si c'est quelque chose qui va nécessiter une compréhension détaillée de la ramification ou s'il y a une façon plus simple.

Merci

Répondre

4

Dans TortoiseSVN, lorsque vous essayez de valider vos fichiers, dans la boîte de dialogue de liste de fichiers, cliquez droit sur le fichier et recherchez l'option Ignorer. Vous pouvez ignorer par nom de fichier complet ou extension. Si le fichier est déjà dans le référentiel, et que vous voulez le supprimer et l'ignorer, vous pouvez simplement cliquer avec le bouton droit sur le fichier et dans le menu TortoiseSVN chercher l'option 'Supprimer et ajouter à la liste des ignorés' .

+0

Notez que cette opération le supprimera également de tout le monde lors de la prochaine mise à jour. Svn a un commutateur --keep-local dans les versions plus récentes, mais cela pose le même problème: vous gardez votre copie locale, mais tout le monde perd le leur. – Rytmis

+0

Donc, pour clarifier, je veux sauvegarder chaque copie locale, supprimer/ignorer le fichier du référentiel, extraire le dépôt sur chaque machine (qui supprimera le fichier), puis remettre la copie locale de sauvegarde dans le dossier local, et à partir de ce moment, le commit/checkout fonctionnera comme prévu? Ou le fichier sera-t-il toujours supprimé sur chaque mise à jour locale? – meepmeep

+0

Si les autres machines n'ont pas encore de copie de travail, tout va bien. S'ils en ont un, et ont le fichier de paramètres, faire la copie/mise à jour/copier la danse fera l'affaire. La mise à jour supprimera le fichier une seule fois (car il s'agit d'une modification en attente de la copie locale une seule fois). – Rytmis

2

La solution typique est de faire ce que bgever dit et ignorez le fichier de paramètres lui-même, puis validez un fichier avec examen ple, quelque chose comme settings.py.example. Ce fichier ne doit être mis à jour que lorsque vous ajoutez ou supprimez des paramètres. Lors du déploiement, copiez-le en settings.py et modifiez les valeurs.

Questions connexes