Подтвердить что ты не робот

SVN X остается в конфликте дерева

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

Спасибо!

4b9b3361

Ответ 1

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

Найдите, какой процесс имеет блокировку. Загрузите Handle.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

Ответ 2

Я не уверен, в каком состоянии это сейчас, но лучше всего будет:

  • Полностью переместите папку из вашего репозитория.
  • Сделайте svn cleanup
  • Сделайте svn update
  • Скопируйте файлы из папки обратно (без файлов .svn), перезаписав старые исходные файлы, которые были обновлены только svn.

Ответ 3

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

Edit

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

Ответ 4

У меня была такая же проблема при попытке удалить ветвь в среде linux. Я сделал это:

  • svn вернуть ветку
  • svn up
  • svn cleanup
  • svn удалить ветку - отметьте ветвь снова для удаления
  • svn ci

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

Ответ 5

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

Ответ 6

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

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