SVN: Comment gérer mon fichier config.blah local?
Question
Sur le serveur SVN, il existe un fichier appelé config.conf
. J'ai une version locale appelée la même chose (au même endroit). Comment puis-je m'assurer que ma configuration locale ne sera ni écrasée ni archivée?
Pendant que je suis ici, la réponse est-elle différente pour un répertoire?
J'utilise Tortoise SVN, mais les réponses en ligne de commande sont cool.
Merci!
[Désolé si cette question de base a déjà été posée ... J'ai regardé mais je ne l'ai pas trouvée.]
La solution
SVN pensera toujours que ce fichier fait partie du référentiel si vous le nommez de la même manière et le collez dans le même répertoire. Vos options sont
- Renommez-le (écrivez peut-être un script shell dans
mv config.conf config.conf.theirs & amp; & amp; mv config.conf.mine config.conf
, puis exécutez votre application) - Déplacez-le. Vous pouvez peut-être ajouter une logique à votre application qui vérifie le fichier config.conf dans un répertoire local spécifique à l'utilisateur, puis utilise le fichier config.conf par défaut s'il n'en trouve aucun
Autres conseils
TortoiseSVN a une bonne réponse pour la moitié de ce problème: ignore-on-commit
Cela vous évite de commettre accidentellement " local only " modifications, mais cela ne résout pas le problème de la mise à jour accidentelle d’un fichier modifié localement.
Consultez cet article de blog pour savoir comment:
http: //blog.baljeetsingh. net / 2009/02 / tips-tricks-svn-ignore-on-commit.html
- excluez-le du référentiel avec svn: ignore (vous devrez d'abord le supprimer du référentiel)
- conservez une copie dans config.conf.default avec les valeurs de marque de réservation. Vous pouvez conserver la copie par défaut dans le référentiel.
- utilisez config.conf comme d'habitude - la sous-version ne le verra plus
Merci à tous. Je pensais que Eoin pouvait être fou, mais en fait, c'est vrai. Vous ne pouvez pas ignorer un fichier sous contrôle de version.
Selon la documentation Tortoise
Ignorer les éléments versionnés
Les fichiers et les dossiers versionnés ne peuvent jamais être ignoré - c'est une caractéristique de Subversion. Si vous avez versionné un fichier par erreur, lisez la section intitulée & # 8220; Ignorer les fichiers déjà enregistrés versionné & # 8221; pour des instructions sur la façon de & # 8220; unversion & # 8221; il.
Et à partir des documents SVN
J'ai un fichier dans mon projet que chaque développeur doit changer, mais je ne veux que ces mods locaux soient toujours engagé. Comment puis-je faire 'svn commit' ignorer le fichier?
La réponse est: ne mettez pas ce fichier sous contrôle de version. Au lieu de cela, mettez un modèle du fichier sous version contrôle, quelque chose comme "file.tmpl".
Ensuite, après le 'svn initial la caisse ", demandez à vos utilisateurs (ou à votre construire le système) faire une copie normale du système d'exploitation de le modèle au nom de fichier correct, et demandez aux utilisateurs de personnaliser la copie. le fichier est non versé, il ne sera donc jamais être engagé. Et si vous le souhaitez, vous pouvez ajoute le fichier à son répertoire parent svn: ignore la propriété, donc ce n'est pas le cas se présenter comme '?' dans le 'statut svn' commande.
C’est terriblement ennuyant ... Je suppose que je devrai simplement faire attention à ce fichier et faire une copie de sauvegarde de ma propre configuration (que je peux ignorer).
Merci à tous pour vos réponses.
Vous pouvez ajouter un attribut svn-ignore: à votre dossier local qui exclut config.conf ou même * .conf
Mais je crois que vous devez exclure complètement ce fichier de SVN, c'est-à-dire que s'il a déjà été archivé dans le référentiel, vous devrez d'abord le supprimer du référentiel
.Ignorer le fichier devrait vous aider:
http://tortoisesvn.net/docs/release/TortoiseSVN_en /tsvn-dug-ignore.html
Lorsqu’il ya subversion de fichiers de configuration, j’ai trouvé très utile d’avoir tout un coffre dédié. Pourquoi? La plupart parce que vous pouvez simplement avoir deux copies de référentiel local, une pour les utilisations locales et une pour les modifications distantes.
Comme ceci:
/ workdir / configuration [est un lien vers / workdir / conf_local]
/ workdir / conf_local [maintient la configuration locale mise à jour mais ne dépasse pas mes paramètres]
/ workdir / conf_remote [toujours mis à jour avec les données distantes, afin que je puisse valider les modifications]
Je ne sais pas quel type d'installation vous avez, ni si cela s'applique à la langue que vous utilisez, mais c'est comme cela que je fais avec les sites Web et PHP.
Tout d’abord, vous créez une configuration par défaut, qui a probablement des valeurs naïves qui ne fonctionneront pas dans 90% des configurations, mais qui vous donnera une référence pour connaître les valeurs existantes et celles pouvant être configurées. Ce script s'appelle généralement ' config.default.php
' ou quelque chose du même genre. Au bas de ce script se trouve quelque chose à l’air:
if (file_exists("config.php")) require "config.php";
Logique simple. S'il existe un remplacement par l'utilisateur pour le fichier de configuration, chargez-le et laissez-le remplacer par tout ce dont il a besoin. Il vous suffit ensuite de garder ce fichier de configuration utilisateur ignoré via les méthodes déjà expliquées sur toutes les machines de développement et toutes les machines de production qui conservent une commande svn pour une raison quelconque. Il s’agit d’une configuration très flexible, et des procédures similaires pourraient être configurées pour la plupart des langues / environnements.
comme l'a souligné Scrappydog
Vous pouvez utiliser / créer différentes listes dans la boîte de dialogue de validation
il prend en charge la liste ignore-on-commit . Ainsi, les fichiers de cette liste ne seront pas visibles.
vous pouvez vous référer à ce lien de blog pour plus de détails.
http: //blog.baljeetsingh .net / 2009/02 / tips-tricks-svn-ignore-on-commit.html