Вопрос

Я использую VisualSVN (который использует черепаху). Я случайно перемещаю папку в другое место. Когда пытается переместить его назад, SVN Pukes с этой ошибкой. Это произошло один раз раньше, и мне удалось сделать случайные обновления / комбиниты, не зная, что я делал, и это было «исправлено». Я не могу снова тянуть ту же магию, поэтому мне нужно знать, как получить мои файлы и каталог и конфликт в дереве.

Спасибо!

Это было полезно?

Решение

У меня была та же ошибка (конфликт деревьев), но из другого рабочего процесса.

Найти, какой процесс имеет замок. Скачать Dising.exe и открыть для папки, которую вы извлекли. Затем пробежать "C:\path\handle.exe" "C:\path\FileOrFolder".

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

Рабочий процесс для воспроизведения:

- 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)

Исправить:

- 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. Переместите папку из своего репозитория полностью
  2. Делать svn cleanup
  3. Делать svn update
  4. Скопируйте файлы из папки назад (без файлов .svn) Перезапись старых исходных файлов, которые были просто SVN обновлены.

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

Редактировать

Вот сценарий Shell из ссылки, который может быть полезен для пользователей 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

У меня была та же проблема, когда пытался удалить ветку на Linux Enviroment. Что я сделал:

  1. SVN возврат ветки
  2. SVN вверх
  3. SVN Cleanup.
  4. SVN удалить ветвь - снова отметить ветку для удаления
  5. SVN CI.

Я не знаю, в чем проблема, но я пережил ее дважды через две недели.

Держите резервную копию папки, которую вы переместили. Теперь в SVN нажмите на TortoiseSVN >> разрешен. Выберите файлы / папку и разрешите. Теперь обновите / совершайте данные SVN.

Обратите внимание, что это может произойти даже если вы «ничего не делали» - то есть кто-то перемещается вокруг папок на вас в репозитории, и вы не знаете об этом. Случилось со мной. Если это так, удалите папку «Проблема» из своего репозитория и svn update.

Конфликт дерева возникает, когда разработчик перемещался / переименован / удалил файл или папку, которую другой разработчик либо также переместил / переименован / удален или просто изменен. Существует много разных ситуаций, которые могут привести к конфликту дерева, и все они требуют разных шагов для разрешения конфликта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top