J'ai supprimé un fichier d'un dépôt et je souhaite maintenant le remettre. Le mieux que je puisse comprendre est de:
- mise à jour de la révision avant la suppression
- copier les fichiers ailleurs
- mise à jour à la tête
- recopiez les fichiers
- Ajoutez-les
- commettre
Cela sent juste mauvais et il perd toute l'histoire pour démarrer. Il doit y avoir une meilleure façon de faire cela. J'ai déjà regardé dans le livre SVN mais je n'ai rien trouvé et je regarde maintenant la liste des balises SVN.
Réponses:
Utilisez svn merge:
Donc un exemple:
Pour TortoiseSVN (je pense ...)
Cela n'a cependant pas été testé.
Edité par OP : Cela fonctionne sur ma version de TortoiseSVN (l'ancien type sans le bouton suivant)
L'astuce consiste à fusionner à l' envers . Bravo à sean.bright pour m'avoir pointé dans la bonne direction!
Edit: Nous utilisons différentes versions. La méthode que j'ai décrite fonctionnait parfaitement avec ma version de TortoiseSVN.
Il convient également de noter que s'il y avait plusieurs changements dans la validation que vous effectuez une fusion inverse, vous voudrez annuler ces autres modifications une fois la fusion terminée avant de valider. Sinon, ces modifications supplémentaires seront également annulées.
la source
Le problème avec une fusion svn comme suggéré par Sean Bright est que cela réintroduit d'autres modifications apportées dans la même révision que la suppression. Une copie svn est une opération plus ciblée qui n'affectera que les fichiers supprimés.
En utilisant Tortoise SVN, vous pouvez ressusciter un fichier qui a été supprimé de votre répertoire de copie de travail et des révisions SVN ultérieures, via une copie svn comme suit:
Le fichier supprimé sera maintenant dans le dossier de copie de travail. Pour le rajouter à SVN, faites un clic droit sur le fichier restauré et sélectionnez SVN Commit.
NB: Cette méthode conservera l'historique précédent du fichier restauré, cependant pour voir l'historique précédent dans le journal TortoiseSVN, vous devez vous assurer que "Arrêter à la copie / renommer" est décoché dans la boîte de dialogue des messages du journal.
la source
svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/svn/trunk/path
merge
, mais je ne l'ai pas compris.Par souci d'exhaustivité, voici ce que vous auriez trouvé dans le livre svn, si vous aviez su quoi chercher. C'est ce que vous avez déjà découvert:
Annulation des modifications
Ressusciter les éléments supprimés
Même chose, de la version la plus récente (et détaillée) du livre:
Annulation des modifications
Ressusciter les éléments supprimés
la source
Utilisez la fonctionnalité de copie de Tortoise SVN pour annuler les modifications validées:
J'espère que cela pourra aider
la source
Je semble toujours utiliser svn copy comme une opération de serveur, donc je ne sais pas si cela fonctionne avec deux chemins de travail.
Voici un exemple de restauration d'un fichier supprimé dans une copie de travail locale du projet:
Tout en étant dans le répertoire du projet. Cela fonctionne également pour la restauration de répertoires entiers.
la source
Si vous utilisez Tortoise SVN, vous devriez être en mesure de restaurer les modifications de cette seule révision dans votre copie de travail (en effectuant effectivement une fusion inversée), puis de refaire un commit pour rajouter le fichier. Les étapes à suivre sont:
la source
Le moyen le plus simple pour moi de restaurer des fichiers et de ne pas perdre l'historique des révisions est d'utiliser la copie SVN , l'exemple de fusion ci-dessus me semble être un moyen plus complexe de réaliser la même chose. Pourquoi est-il nécessaire de fusionner lorsque vous souhaitez simplement restaurer une révision?
J'utilise ce qui suit dans ce cas et cela fonctionne très bien.
Je semble toujours utiliser
svn copy
comme une opération de serveur, donc je ne sais pas si cela fonctionne avec deux chemins de travail.la source
Avec Tortoise SVN :
la source
Vous devriez pouvoir simplement extraire le fichier que vous souhaitez restaurer. Essayez quelque chose comme
svn co svn://your_repos/path/to/file/you/want/to/restore@rev
où serev
trouve la dernière révision à laquelle le fichier existait.J'ai dû faire exactement cela il y a quelque temps et si je me souviens bien, utiliser l'
-r
option desvn
ne fonctionnait pas; J'ai dû utiliser la:rev
syntaxe. (Bien que je m'en souvienne peut-être à l'envers ...)la source