web-dev-qa-db-fra.com

Comment fonctionne le commit non récursif de Tortoise?

J'ai extrait localement une copie de la branche SVN (ma branche) à laquelle j'ai fusionné à partir d'une autre branche (dont la structure de dossiers est complètement différente). Donc, fondamentalement, il y a beaucoup de suppressions (d'anciens fichiers) et d'ajouts (de nouveaux fichiers). 

Quand j'essaie de valider la fusion dans le référentiel (dans ma branche), Tortoise dit

Cette validation n'est pas récursive et il existe des dossiers déplacés/renommés sélectionnés pour la validation. Ces déplacements/renominations sont toujours effectués de manière récursive dans le référentiel. Voulez-vous vous engager quand même?

Est-ce bien de procéder avec ce commit? Si non, que dois-je faire pour qu'il n'y ait pas de problème?

En outre, pour certains fichiers que j'ai ajoutés, j'ai apporté des modifications après l'ajout (si cela affecte la nature).

104
user1447725

Trouvé par Google comment y remédier: appuyez sur F5 dans la fenêtre de validation (pas dans la "fenêtre d'avertissement")

Voir http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045 pour plus de détails.

Le 26.08.2011 22:39, Ryan J Ollos a écrit:

Cela fait plusieurs mois que la boîte de dialogue suivante s’affiche lorsque Commit Commit. Cela arrive fréquemment lorsque vous essayez de vous engager après une fusion.

Ce que j’ai remarqué récemment, c’est que si j’annule puis, puis actualiser manuellement la liste de fichiers (F5), je ne vois plus le message quand lancer le commit une seconde fois. Le commit semble bien réussir et sans plus de problèmes.

La boîte de dialogue de validation surveille la copie de travail dans un fil d’arrière-plan pour modifier les notifications. Ces notifications sont envoyées par le système d'exploitation au cas où les fichiers sont modifiés/déplacés/renommés /... Si une telle notification est reçue, la boîte de dialogue de validation effectue d'abord quelques opérations contrôles afin qu'il puisse laisser tomber la plupart d'entre eux. Si la notification indique que Le fichier non vérifié et non visible dans la boîte de dialogue de validation contient en quelque sorte changé, il repasse en engagement non récursif . C'est parce que si vous avez par exemple un fichier ouvert dans un autre éditeur et enregistrez vos modifications alors que la boîte de dialogue de validation est ouverte, ce fichier obtiendra alors commis aussi bien que vous ne l'ayez pas coché dans le commit dialogue (il n'apparaît que lorsque vous actualisez le dialogue avec F5).

Donc, si vous voyez souvent ce dialogue d’avertissement, veuillez vérifier s’il existe un autre fichier outil/application en cours d'exécution qui modifie les fichiers de votre copie de travail.

Et comme vous l'avez remarqué: si vous appuyez sur F5, ce "drapeau non récursif" est réinitialisé car après un rafraîchissement, vous voyez à nouveau tous les fichiers, même ceux que vous avez modifié après le début du dialogue.

Stefan

121
ichaki5748

J'avais le même problème, mais je l'ai résolu en rétablissant les modifications apportées aux fichiers que j'avais marqués comme "ignorer lors de la validation".

Une fois que j'ai restauré ces fichiers, Tortoisesvn a pu valider tous les autres fichiers de la fusion.

25
Kevin Brady

Est-ce bien si je procède avec ce commit?

Non, votre commit ignorera toutes les modifications dans l'arborescence WC et ne reflétera que les modifications de niveau racine (fusion cassée).

Vous avez commis une erreur lors de la vérification initiale de la méthode non récursive. Vous pouvez essayer d'effectuer une bonne validation complète à l'aide du paramètre --depth infinity dans la CLI ou trouver ce commutateur dans l'interface graphique de TortoiseSVN.

svn commit --depth infinity . -m "Merge"
6
Lazy Badger

De plus, pour certains fichiers que j'ai ajoutés au SVN, j'ai apporté des modifications après l'ajout (si cela affecte la nature).

Dans mon cas, c’est précisément ce qui a fait apparaître le message, même si j’ai désélectionné ces fichiers pour le commit.

Solution laide qui ne fonctionne en toute sécurité que si quelques fichiers seulement sont affectés: 

  1. Créer une copie des fichiers modifiés 
  2. Rétablir les fichiers modifiés
  3. Commettre la fusion/réintégration
  4. Copier les fichiers modifiés à leur emplacement d'origine

Rappel à soi-même: réintégrer une branche uniquement si la cible (tronc) est propre.

1
Thomas Weller

Je pensais juste poster ça parce que ça marchait pour moi ...

Cela s’explique par le fait que j’avais partiellement renommé l’un des nouveaux projets que j’avais créé et que, pour une raison quelconque, ils étaient tous indiqués comme "manquants" sur la page de validation.

Après avoir enlevé le projet et le dossier (sur lesquels SVN avait coché) et l'avoir remis en tant que nouveau projet, soudainement, tous les "manquants" sont devenus "ajoutés" et le commit s'est bien déroulé sans m'avertir de rien .

J'espère que cela t'aides!

1
Danny Lager

Il semble que TortoiseSVN effectue une sorte de vérification de validité avant d'appeler commit. Bon mais le message d'erreur est très flou.

Lorsque j'ai fait face à ce problème, je suis revenu à utiliser la ligne de commande svn pour valider. La validation a échoué car l'un des dossiers n'était pas à jour. Après avoir mis à jour uniquement ce dossier, j'ai exécuté "svn commit" une fois de plus et le processus a abouti.

Edit: PS: Avant de commencer, essayez ceci, assurez-vous de ne pas avoir de fichiers marqués "Ignorer à la validation". "Ignore on commit" est spécifique à la tortue et SVN commit sélectionne également ces modifications.

1
sgowd

J'ai vu ce problème et la cause était quelques fichiers ajoutés n'ayant pas le statut ajouté sans raison apparente. Ils étaient «normaux» même si le dossier parent était correctement indiqué par «ajouté». J'ai annulé ces modifications «normales», puis les ai refait manuellement. Cela a fait apparaître chaque élément ajouté deux fois dans la liste de validation, mais cela a résolu l'erreur et tout semble en ordre de marche maintenant.

Cela n'avait rien à voir avec ignore-on-commit comme dans une autre réponse, cela ressemblait simplement à un bug dans TortoiseSVN.

0
Chris

Je viens d'avoir le même problème. Au lieu de sélectionner tous les fichiers, j'ai cliqué sur le versionné et tout a bien fonctionné. Dans mon cas, l'option versionnée sélectionnait tous les fichiers, donc tout va bien maintenant.

0
Bruno Milanez

Le problème peut être que votre information de fusion est supprimée par quelqu'un ou automatiquement, car les informations sont déplacées dans l'arborescence. Si vous les fusionnez à nouveau, cela fonctionnera pour le moment. Mais tous les autres auront des problèmes avec leurs branches non fusionnées. SVN perdra du code et fusionnera à nouveau le code déjà soumis.

Donc, restaurer ces fichiers et les modifier à nouveau peut fonctionner, mais vous ne devez pas simplement valider les modifications.

0
Nicolas