2009-09-28 9 views
2

Est-il possible de valider une seule modification sur SVN sans valider les autres modifications dans le fichier?Validation d'un changement unique dans SVN

Par exemple, j'ai un fichier, config.properties, source contrôlée sous SVN, et ma copie locale de ce fichier contient de nombreuses modifications qui ne concernent que mon environnement local. Cependant, je veux commettre une nouvelle entrée de configuration dans ce fichier afin que mes coéquipiers puissent le récupérer, mais je ne veux pas perdre mes modifications locales.

Y at-il un moyen de le faire?

+1

Si il est la facilité d'utilisation et les fonctionnalités que vous voulez dans un système de contrôle de version que vous devriez envisager d'utiliser Git. Ensuite, vous pouvez utiliser git add -i à commettre seulement une partie d'un fichier. –

+1

Je me souviens quand de telles remarques ont été données aux utilisateurs de CVS sur le SVN nouveau et amélioré. Maintenant, c'est au tour de SVN d'être CVS: -/ –

+1

@Artem: Chaque fois que quelqu'un pose une question SVN, au moins l'un des aficionados git caresse et annonce leur Holy Grail (TM). Garçon est-ce que je déteste ce spamming! Il a depuis longtemps pris mon désir de vérifier git. Honnêtement, à quoi cela peut-il bien servir, s'ils éprouvent le besoin de nous prêcher constamment sur sa supériorité? – sbi

Répondre

3

Non, ce n'est pas possible. Juste svn checkout ce fichier dans un endroit séparé et faire le changement leur et le fusionner dans vos autres changements.

+0

Cela pourrait être ma meilleure option pour mes besoins. Je pourrais avoir deux copies de mon projet vérifiées à deux endroits distincts: ~/svn/myproject & ~/svn/myproject-new-commits. L'emplacement myproject serait ma copie de travail, et je pourrais utiliser myproject-new-commits uniquement dans le but d'effectuer les changements requis par les autres membres de l'équipe. – rmcc

+0

Pour chaque projet "prj" je travaille un, je me retrouve très rapidement avec un checkout "prj_clean" qui est toujours à jour et est là juste pour faire ces petits changements qui doivent être faits immédiatement pendant que je travaille sur fonctionnalité qui prend un jour ou deux jusqu'à ce que je puisse le commettre. Pour ce faire, vous pouvez même utiliser votre utilitaire diff/merge favori pour fusionner les modifications de "prj" à prj_clean "et les vérifier sans vérifier votre fonction semi-cuite. – sbi

4

Je suggérerais d'avoir une config template sous svn et d'avoir une config locale ignorée. De cette façon, vous serez en mesure de faire ce que vous voulez: mettre à jour le modèle, fusionner avec la configuration locale et vous êtes prêt à partir.

2

Ce n'est pas possible facilement. Mais, la solution de contournement est:

  • copier vos config.properties modifiés dans un endroit sûr en dehors de votre dossier de travail
  • nous revenions config.properties
  • applique seulement la modification que vous souhaitez engager à config.properties
  • config.properties
  • commettre
  • copie de votre sauvegarde (copie de sécurité) sur config.properties dans votre dossier de travail pour obtenir vos modifications que vous ne vouliez pas commettre
0

Dans votre cas spécifique, je propose la suggestion de silentghost. Je ne garde jamais de copies en direct de mes fichiers de configuration dans le repo, seulement des fichiers modèles. Cela a d'autres avantages: vous ne risquez jamais d'écraser accidentellement vos fichiers de configuration de production, vous pouvez garder les informations sensibles comme les mots de passe de la base de données, et chacun peut avoir sa propre configuration de développement qui correspond à ses besoins/préférences. Lorsqu'une nouvelle ligne de configuration est requise, il suffit de la cocher dans le modèle et d'avertir les autres développeurs dont ils ont besoin de la fusionner avec leurs copies locales. (Ou, peut-être envisager de faire abstraction du fichier de configuration en un fichier qui change avec chaque environnement (connexion db, etc.) et un qui ne change pas (constantes, variables de langue, etc.) et qui peut faire partie du repo

Cela dit, la nécessité générale de fusionner un seul changement de ligne dans la prise en pension, Orbman et jeffamaphone sont corrects. (Orbman obtiendrait mon vote pour la réponse la plus complète, mais je l'avais déjà voté pour SilentGhost.)

Questions connexes