10
votes

Comment puis-je forcer la subversion à commettre un fichier obsolète?

J'aimerais "écraser" mon dernier engagement avec la version précédente. J'ai essayé de vérifier la version 631, faites-la modifier et de l'engager comme la version 633. Mais SVN n'est pas d'accord, car la version 632 existe.

Quel est le moyen le plus simple de le faire? C'est un commit multi-fichiers. Je ne veux pas le faire manuellement.


0 commentaires

5 Réponses :


9
votes

au lieu de vérifier 631, faites un revenir à 631. Ensuite, vous pouvez changer et vérifier.


3 commentaires

Merci. Celui-ci fonctionne. J'ai fait la caisse de la révision de la tête (633). Mise à jour de l'ancien (631), appliquez les modifications et commettez. Cela marche.


Je viens d'avoir une startant de subversion sur plusieurs dossiers que j'avais déplacé tous les fichiers de. J'ai fait une sauvegarde de mon travail, puis revenait simplement les dossiers spécifiques en question. J'ai fait pas Utilisez -r pour recueillir les fichiers de ces dossiers, viennent de retourner les dossiers eux-mêmes. Ensuite, tout ce qui est arrivé à bien et je suis retourné et j'ai fait un svn rm pour nettoyer les dossiers et les a vérifiées correctement. Petit moment de stress à fort stress cependant ... merci pour le conseil!


Comment puis-je revenir à 631? "SVN Revert" n'accepte pas un numéro de révision et la page d'aide indique que la commande est uniquement destinée à jeter les modifications locales.



3
votes

Si vous ne pouvez pas faire un retour à la version 631, procédez comme suit:

  • Enregistrez vos modifications en dehors de votre zone de travail.
  • Mettez à jour votre espace de travail à la version 632 (tête).
  • réappliquer les modifications apportées à votre zone de travail.
  • commit.

1 commentaires

C'est l'une des solutions, mais elle nécessite une fusion manuelle. Je travaille sur le noyau et "sauvegardez vos modifications quelque part en dehors de votre zone de travail" est vraiment ennuyeux.



8
votes

La question est un peu ancienne, mais la réponse peut être utile pour référence future:

Eh bien, en fait, on n'est pas censé commettre des fichiers obsolètes à SVN. Le serveur lui-même refuse ces fichiers pour une raison de sécurité. Une chose à faire est de faire une mise à jour de la dernière version, mais de garder vos fichiers "obsolètes" pendant le processus de fusion automatiquement:

svn up --Accept Mine-Full

En d'autres termes, cela effectuera la mise à jour, mais ignorera toute fusion entrante.


2 commentaires

Sachez que, même s'il ignore le fusion entrant, il restaurera toujours des fichiers manquants qui n'ont pas été signalés dans SVN comme supprimés.


Ce n'est pas une bonne idée. Parce que les fichiers supprimés localement seront restaurés. et les fichiers non modifiés localement seront mis à jour.



1
votes

Je veux aussi avoir cette fonctionnalité. Pourquoi n'y a-t-il pas une commande similaire à svn commit -force-overwrite-nouvelle version code>?

Copier la révision SVN 631 à la révision SVN 633, puis vous pouvez engager vos modifications à la révision SVN 634. P>

svn copy remote_url@631 remote_url
svn commit


0 commentaires

0
votes

Copiez le fichier avec les anciens changements ailleurs, effectuez une mise à jour SVN du fichier à enregistrer. Lorsqu'il est complet écrasé le fichier récent nouvellement mis à jour avec votre ancien fichier, puis faites un commit SVN.


0 commentaires