2010-04-13 8 views
24

J'utilise VisualSVN (qui utilise Tortoise). Je déplace accidentellement un dossier vers un autre emplacement. Quand essaie de le reculer, SVN vomit avec cette erreur. C'est arrivé une fois avant et j'ai réussi à faire quelques mises à jour/commits aléatoires, ne sachant pas ce que je faisais et il a été "réparé". Je ne peux plus tirer la même magie, donc j'ai besoin de savoir comment obtenir mes fichiers et mon répertoire et de l'arbre-conflit.SVN X reste en conflit d'arbre

Merci!

+1

Voir aussi http://stackoverflow.com/questions/2406469/svn-remains-in-conflict (aucune des réponses sur cette page n'a fonctionné pour moi) –

Répondre

15

J'ai eu la même erreur (conflit d'arborescence), mais à partir d'un flux de travail différent.

Trouvez quel processus a le verrou. Téléchargez Handle.exe et ouvrez le dossier que vous avez extrait. Ensuite, exécutez "C:\path\handle.exe" "C:\path\FileOrFolder".

https://technet.microsoft.com/en-us/sysinternals/bb896655.aspx

Workflow pour reproduire:

- delete folder (having one of the files locked by a program that is within this folder) 
- commit parent folder of folder you deleted, and look for red text of the folder you deleted (it should be brown, not red if there aren't issues in SVN) 

Pour fixer:

- forcefully kill the lock (or close the program so it releases the lock) 
- run cleanup command on folder you deleted 
- revert folder you deleted 
- delete folder you deleted 
- commit parent folder of folder you deleted 
+1

C'est de loin la meilleure réponse. – robomc

16

Je ne suis pas sûr de ce que l'état, il est maintenant, mais votre meilleur pari serait probablement:

  1. Déplacer le dossier de votre référentiel complètement
  2. faire une svn cleanup
  3. faire une svn update
  4. Copiez les fichiers du dossier (sans les fichiers .svn) en écrasant les anciens fichiers source qui étaient juste svn mis à jour.
+1

Ne fonctionne pas pour moi.Je reçois "svn: Impossible de verrouiller le chemin/vers/répertoire/I/juste/déplacé/arrière" en essayant de valider après. – aioobe

+1

Ne le résout pas pour moi – Tjorriemorrie

2

http://rubyjunction.us/subversion-hell-sh

Modifier

Voici le script shell à partir du lien, ce qui pourrait être utile pour les utilisateurs Linux/Unix ...

#!/bin/sh 

if [ "" == "$1" ] ; then 
    echo "Usage: subversion-hell.sh A_PROJECT" 
    echo "A_PROJECT should be a Subversion folder you are having problems with," 
    echo "and you should be in the folder above A_PROJECT" 
fi 

DIR=`pwd` 
PWD=$DIR 
DIR=`echo $DIR | sed s/^.*\\\/trunk/trunk/` 

mkdir ~/tmp/  2>/dev/null 
rm -Rf ~/tmp/$1 2>/dev/null 
mv ~/$DIR/$1 ~/tmp/ 
find ~/tmp/$1/ -iname '.svn*' -exec rm -Rf {} \; 2>/dev/null 
cd $PWD 
echo svn co YOUR_URL_HERE/$DIR/$1 $1 
svn co YOUR_URL_HERE/$DIR/$1 $1 
cp -Rf ~/tmp/$1/* $PWD/$1/ 

# YOUR_URL_HERE can be found by looking in file .svn/entries, near the top 
+1

Ehm ... cela ne supprimera-t-il pas votre répertoire personnel si le "dossier problématique" est ".." ?! (Ce serait ignorer les informations d'utilisation dans le script bien sûr, mais encore un peu dangereux) –

+1

Une autre chose, le "cp" à la fin ne copiera pas les fichiers modifiés ou des répertoires commençant par un "." (point) sur ce qui a été mis à jour à partir de SVN. –

+0

J'ai fait une copie, puis supprimé les dossiers de la svn et le système de fichiers local. Ensuite, sur les fenêtres, je devais rendre les dossiers cachés visibles. Puis j'ai supprimé tous les dossiers avec le .svn dans les dossiers que je souhaite mettre à jour. alors j'ai commis les dossiers. et cela a fonctionné – Leoa

1

J'ai eu le même problème quand essayé de supprimer une branche sur linux ambience. Ce que je faisais était:

  1. svn retournent branche
  2. svn up
  3. svn nettoyage
  4. svn supprimer branche - marquer la branche à nouveau pour l'enlèvement
  5. svn ci

I Je ne sais pas quel était le problème mais je l'ai vécu deux fois en deux semaines.

0

Conservez une copie de sauvegarde du dossier que vous avez déplacé. Maintenant dans SVN, cliquez sur TortoiseSVN >> Résolu. Sélectionnez les fichiers/dossiers et résolvez. Maintenant, mettez à jour/validez les données svn.