2009-04-03 6 views
21

Je dispose d'un fichier de paramètres qui est sous contrôle de version en utilisant la subversion. Tout le monde a sa propre copie de ce fichier, et j'ai besoin que cela ne soit jamais commis. Cependant, comme je l'ai dit, il existe déjà une copie sous contrôle de version. Ma question est: comment puis-je supprimer ce fichier du contrôle de version sans supprimer le fichier de tout le monde, puis l'ajouter à la liste des ignorés afin qu'il ne soit pas validé? J'utilise la ligne de commande linux svn.SVN: Ignorer un fichier déjà commis

+0

duplication possible de [svn ignore sans supprimer les fichiers?] (Http://stackoverflow.com/questions/951032/svn-ignore-without-deleting-files) – tchrist

Répondre

20

Faire une caisse propre, svn delete le fichier et ajouter l'ignorer. Puis commettez ceci. Tout le monde devra prendre soin (une fois) que sa copie locale ne soit pas supprimée sur le svn update suivant, mais après cela, le fichier local restera non perturbé et ignoré par SVN.

+0

Comment (comme "tout le monde") empêchez-vous le supprimer à la mise à jour? –

+0

Déplacez-le avant d'exécuter la mise à jour. Recopiez-le ensuite. –

+1

Comment se fait-il qu'il n'y a pas une manière plus facile de faire cela? Quelqu'un peut-il expliquer? – DaveS

15

Si vous supprimez le fichier de contrôle de version, comment un développeur nouveau au projet (ou celui qui a accidentellement supprimé sa copie locale) l'obtenir après le départ initial? Que faire s'il y a des ajouts au fichier de paramètres?

Je suggère ce qui suit: Gardez un fichier de paramètres par défaut (sans mot de passe, noms d'hôtes, les chaînes de connexion, etc.) SVN, nommez quelque chose comme settings.dist, et laisser le code avec une copie de ce fait, le nom settings . Chaque développeur doit faire cette copie une fois, et peut ensuite travailler avec ses paramètres personnalisés. S'il y a des ajouts, ajoutez-les à settings.dist - tout le monde les obtiendra avec une mise à jour et pourra fusionner ensuite dans sa copie personnalisée.

0

définissent simplement les paramètres contenant le fichier qui surchargent ceux par défaut. Ce fichier n'est pas archivé dans Subversion et chaque développeur est responsable de la maintenance de ce fichier en fonction de son environnement.

Dans un monde basé sur Ant, vous auriez les fichiers:

settings.properties 
settings-local.properties (ignored for Subversion) 

et dans votre fichier build.xml

<property file="settings-local.properties"/> 
<property file="settings.properties"/> 

Pour ceux qui ne pouvaient pas relier les points:

  1. modifier le fichier build.xml comme proposé
  2. s et les setting-local.properties comme
  3. ignorés dans une cible init de votre build, copiez le settings.properties à settings-local.properties
  4. attendre quelques jours jusqu'à ce que tout le monde a eu la chance de courir cet objectif
  5. supprimer les setting.properties de Subversion

Voila, chaque développeur a ses propres setting-local.properties et tout a été fait automatiquement (et aucun développeur a perdu ses paramètres, ce qui arrive si vous supprimez brutalement le fichier Suvbersion et il n'y a pas "Tout le monde devra faire attention ...")

+0

Cela n'aide pas à résoudre le problème. –

+0

Il est étrange que cette réponse ait été rejetée autant de fois, car c'est la seule qui n'a pas ignoré la partie concernant la suppression du fichier local de tout le monde. –

-4

[[Je suis nouveau à la subversion, alors peut-être cela ne fait pas de sens. marquer ceci comme wiki - si vous connaissez la bonne réponse, veuillez APPENDER dans la section suivante]]

Vous ne pourriez pas avoir un ensemble personnalisé d'étapes de paiement afin que chaque utilisateur obtienne un dossier de paramètres différent?

$ svn checkout http://example.com/project project 
.. 
$ dir project 
original_settings\  folder1\  folder2\ 
$ svn checkout http://example.com/project/aaron_settings project\settings 
.. 
$ dir project 
original_settings\  folder1\  folder2\ settings\ 

Ou pour les nouveaux utilisateurs

$ svn import project\settings http://example.com/project/aaron_settings 

Ce que je veux en venir vous voulez que chaque utilisateur d'avoir une vue personnalisée du référentiel. Dans d'autres systèmes de contrôle de version, vous pouvez configurer une liste personnalisée des projets que vous utilisiez et que vous n'utilisiez pas et que vous avez placés dans des lieux inhabituels.

Est-ce que cela fonctionne dans Subversion? Le code ci-dessus semble vraiment risqué, mais peut-être que je le fais mal.

WIKI:

(rien encore)

1

Après avoir supprimé le fichier, vos utilisateurs devront récupérer le fichier à partir du référentiel en utilisant svn export.

$ svn export -r x path ./ 

x est une révision où le fichier existait avant qu'il ne soit supprimé, path est le chemin complet vers le fichier, et ./ est l'endroit où sera placé le fichier. Pour plus d'informations, voir .

0

J'ai un problème similaire. Dans mon cas, c'est un fichier de paramètres utilisateur généré automatiquement (studio visuel) qui a été accidentellement vérifié très tôt dans le projet. Bien que la suppression puisse fonctionner, il semble plus probable qu'elle soit supprimée de l'historique, car elle n'a jamais été censée être là en premier lieu.

je suis tombé sur ce qui pourrait être une nouvelle fonctionnalité puisque cette question a été publiée il y a 7,5 ans:

https://stackoverflow.com/a/6025750/779130

On dirait une idée serait de:

1) create a dump of the project. 
2) filter the dump using `svndumpfilter` to exclude the unwanted file(s). 
3) load the dump as a new project. 

Cette pourrait être le seul moyen de se débarrasser complètement du fichier. Dans la plupart des cas, l'approche "supprimer et ignorer" peut être assez bonne.

Questions connexes