2011-11-01 2 views
1

J'ai donc un fichier de construction local.SVN: Rétablir la validation tout en préservant les modifications locales

Il ne devrait pas être dans SVN du tout, mais, il est. (Merci, mainteneur précédent!) Mais des modifications ont été apportées à la copie locale, qui ne s'applique qu'à la construction de la boîte sur laquelle elle se trouve.

Je bousille et fais un commit qui valide ce fichier de construction local. Maintenant, la copie repo SVN a ces changements locaux; c'est mauvais.

Comment puis-je retourner au statu quo ante , où les changements locaux sont dans la copie locale, pas dans le repo SVN, et une svn update ultérieure ne remplacera pas les changements locaux?

Répondre

2
  1. sauvegarder le fichier avec les modifications locales quelque part.
  2. faire un journal show sur le fichier, et rétablir ce fichier à la révision avant que les modifications indésirables (à l'aide d'une mise à jour avec le numéro de révision donné)
  3. valider le fichier
  4. mise à jour l'ensemble de la copie de travail
  5. restauration la sauvegarde effectuée à l'étape 1

Vous pouvez utiliser des listes de modifications ou verrouiller le fichier pour éviter de refaire la même erreur.

+0

Merci pour la réponse. Mais sérieusement, il n'y a pas un moyen plus facile cuit dans SVN? Je * ne peux pas * avoir été la première personne (idiot) à le faire. – tpdi

+0

Je ne vois pas vraiment comment cela pourrait être plus facile. Vous devez conserver les modifications locales, donc une sauvegarde est nécessaire. Vous devez revenir à une révision précédente, donc vous devez dire lequel. SVN ne peut pas le deviner pour vous. Habituellement, si un fichier ne doit pas être validé, il ne devrait pas être dans SVN. –

+0

> Généralement, si un fichier ne doit pas être validé, il ne devrait pas être dans SVN. Vrai dat. ; ( – tpdi

0
  1. Vous ne pouvez pas stocker dans WC changements « local uniquement », si les fichiers modifiés sont versionnées (sauf ajout mis à ignorer liste)
  2. Vous pouvez annuler tout précédent commit (s) par inversion de la fusion
0

Pour moi, celui-ci fonctionne:

> svn st 
M  0027 
> svn info 0027 | grep URL 
URL: svn://localhost/xxx/trunk/0027 
> svn rm -m "remove accidently checked in file" svn://localhost/xxx/trunk/0027 
Revision ... 
> svn update 
    C 0027 
At revision 42. 
Summary of conflicts: 
    Tree conflicts: 1 
> svn revert 0027 
Reverted '0027' 
> svn status 
?  0027 

fichier est donc 0027 encore en vie, a son ancien contenu mais pas dans le repo plus.

0

Si votre fichier ne doit pas être versionné, vous pouvez un version il:

svn rm --keep-local filename 

Cela permet de garder un fichier local, mais SVN cessera de suivre ce.

Questions connexes