Comment fonctionne le commit non récursif de Tortoise?

110

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

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

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

Est-ce bien de poursuivre ce commit? Sinon, que dois-je faire pour qu'il n'y ait pas de problème?

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

user1447725
la source

Réponses:

129

Trouvé par Google comment y remédier: appuyez sur F5 dans la fenêtre de validation (pas dans la "popup 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:

Depuis plusieurs mois maintenant, je vois la boîte de dialogue suivante apparaître lors du lancement de Commit. Cela se produit fréquemment lors d'une tentative de validation après une fusion.

Ce que j'ai remarqué récemment, cependant, c'est que si j'annule puis actualise manuellement la liste des fichiers (F5), je ne vois plus le message lors du lancement de la validation une deuxième fois. Le commit semble bien réussir et sans autre problème.

La boîte de dialogue de validation surveille la copie de travail dans un thread d'arrière-plan pour les notifications de modification. De telles notifications sont envoyées par le système d'exploitation au cas où les fichiers seraient 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 vérifications afin de pouvoir supprimer la plupart d'entre eux. Si la notification indique qu'un fichier qui n'est pas vérifié et non visible dans la boîte de dialogue de validation a changé d'une manière ou d'une autre, il repasse en validation non récursive. C'est parce que si vous avez par exemple un fichier ouvert dans un autre éditeur et que vous enregistrez vos modifications pendant que la boîte de dialogue de validation est ouverte, alors ce fichier sera également validé même si vous ne l'avez pas vérifié dans la boîte de dialogue de validation (il n'apparaît pas jusqu'à ce que vous actualisiez la boîte de dialogue avec F5).

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

Et comme vous l'avez remarqué: si vous appuyez sur F5, cet 'indicateur non récursif' est réinitialisé car après une actualisation, vous voyez à nouveau tous les fichiers - même ceux que vous avez modifiés après avoir ouvert la boîte de dialogue.

Stefan

ichaki5748
la source
1
Le lien dans la réponse semble mort. En voici une valide de l'Internet Archive web.archive.org/web/20150306224932/http
//...
1
J'ai juste essayé d'appuyer sur F5. L'effet est que maintenant, la liste des fichiers de la boîte de dialogue de validation affiche la plupart de mes fichiers deux fois (avec exactement le même chemin et le même nom), et le message d'avertissement apparaît toujours lorsque je tente de valider.
OR Mapper
26

J'ai eu 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 rétabli ces fichiers, tortoisesvn a pu valider tous les autres fichiers de la fusion

Kevin Brady
la source
quelle est une raison réelle? pourquoi ou comment ces fichiers causent-ils le problème?
Mannoj
5

Est-ce que je peux continuer avec ce commit?

Non, votre validation ignorera toutes les modifications dans l'arborescence WC et ne reflétera que les modifications au niveau racine (fusion interrompue).

Vous avez fait une erreur lors de l'extraction initiale non récursive. Vous pouvez essayer d'effectuer une bonne validation complète en utilisant le --depth infinityparamètre dans la CLI ou trouver ce commutateur dans l'interface graphique de TortoiseSVN.

svn commit --depth infinity . -m "Merge"
Blaireau paresseux
la source
1
"Vous avez fait une erreur lors de l'extraction de données non récursives au départ." Non pas forcément. J'ai vérifié mon WC de la même manière que je le fais toujours, mais j'ai toujours ce problème soudainement. En fait, cela ne semble pas être le cas pour aucune des solutions alternatives ci-dessous.
Keith M
C'est complètement faux. Je reçois ce message de temps en temps et j'ai vérifié ma copie de travail de manière récursive de la même manière que je l'ai toujours fait
1800 INFORMATION
1

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

Dans mon cas, c'est exactement 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 seuls quelques fichiers sont affectés:

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

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

Thomas Weller
la source
1

Il semble que TortoiseSVN effectue une sorte de vérification de validité avant d'appeler commit. Bon mais le message d'erreur n'est pas clair.

Lorsque j'ai rencontré ce problème, je suis retourné à l'utilisation de la ligne de commande svn pour commettre. La validation a échoué car l'un des dossiers n'était pas à jour. Après avoir mis à jour juste ce dossier, j'ai exécuté à nouveau "svn commit" et il est passé.

Edit: PS: Avant d'utiliser, essayez ceci, assurez-vous que vous n'avez aucun fichier marqué comme "ignorer lors de la validation". "Ignorer lors de la validation" est spécifique à la tortue et SVN commit sélectionne également ces changements.

sgowd
la source
1

Je pensais juste que je publierais ceci parce que cela a fonctionné pour moi ...

La raison pour laquelle cela s'est produit est que j'avais partiellement renommé l'un des nouveaux projets que j'avais créés et que, pour une raison quelconque, ils étaient tous apparus comme "manquants" sur l'écran de validation.

Après avoir supprimé le projet et le dossier (sur lequel SVN avait coché) et les avoir remis en tant que nouveau projet, soudainement, tous les "Missing" étaient devenus "Added" et le commit s'est bien déroulé sans me prévenir de quoi que ce soit .

J'espère que cela t'aides!

Danny Lager
la source
1

J'ai vu ce problème et la cause était que quelques fichiers ajoutés n'avaient pas le statut ajouté sans raison apparente. Ils étaient «normaux» même si le dossier parent était correctement affiché comme «ajouté». J'ai annulé ces modifications «normales», puis je les ai refaites 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 être en ordre de marche maintenant.

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

Chris
la source
D'après ce que je peux dire, TortoiseSVN ne déplace pas les fichiers de manière récursive. Le déplacement d'un dossier modifie l'historique du dossier, mais pas les fichiers qu'il contient. Cela signifie que pour déplacer des dossiers avec TortoiseSVN, vous devez recréer le dossier dans la destination souhaitée, ajouter le dossier, puis déplacer le contenu du dossier d'origine vers le nouveau. Ou utilisez simplement la ligne de commande.
Bradley Singer
Je crois que c'était une fusion, pas un déménagement. À moins que ce ne soit des opérations similaires, je ne suis pas en train de suivre.
Chris
0

Le problème pourrait être que votre mergeinfo est supprimée par quelqu'un ou automatiquement, car les informations ont été déplacées vers le haut dans l'arborescence. Si vous comptez les fusionner à 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 pourrait fonctionner, mais vous ne devez pas simplement valider les modifications.

Nicolas
la source
0

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

Bruno Milanez
la source
-4

je ne connais pas d'option pour tortoisesvn mais vous pouvez utiliser la ligne de commande

svn commit --non-recursive [folder]

Cela devrait fonctionner comme vous l'aimez pour travailler

jaune
la source
D'autres réponses disent que cela n'engagera pas ce que vous voulez réellement engager.
Keith M