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

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

Спасибо!


person Paul Knopf    schedule 13.04.2010    source источник
comment
Также см. stackoverflow.com/questions/2406469/svn-remains-in- конфликт (ни один из ответов на этой странице у меня не сработал)   -  person Jay Sullivan    schedule 12.02.2015
comment
Обратите внимание, что это может произойти, даже если вы все делаете правильно, то есть кто-то перемещает папки на вас в репо, а вы об этом не знаете.   -  person granters    schedule 20.06.2019


Ответы (6)


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

Найдите, какой процесс заблокирован. Загрузите 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
person MacGyver    schedule 02.04.2012
comment
Это, безусловно, лучший ответ. - person robomc; 20.08.2012

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

  1. Полностью переместите папку из репозитория
  2. Do an svn cleanup
  3. Do an svn update
  4. Скопируйте файлы из папки обратно (без файлов .svn), перезаписав старые исходные файлы, которые были только что обновлены.
person Brian R. Bondy    schedule 13.04.2010
comment
У меня не работает. Я получаю svn: Невозможно заблокировать путь / к / каталогу / я / только что / переехал / назад при последующей попытке фиксации. - person aioobe; 06.11.2011

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

Изменить

Вот сценарий оболочки из ссылки, который может быть полезен пользователям 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
person Rod McLaughlin    schedule 26.10.2010
comment
Эм ... разве это не удалит ваш домашний каталог, если проблемная папка ..?! (конечно, это будет игнорировать информацию об использовании в скрипте, но все же немного опасно) - person Stefan L; 17.12.2011
comment
Другое дело, что cp в конце не копирует никакие измененные файлы или каталоги, начинающиеся с. (точка) назад по сравнению с тем, что было обновлено из SVN. - person Stefan L; 17.12.2011
comment
Я сделал копию, а затем удалил папки из svn и локальной файловой системы. Затем в Windows мне нужно было сделать видимыми скрытые папки. Затем я удалил все папки с расширением .svn в папках, которые хочу обновить. затем я зафиксировал папки. и это сработало - person Leoa; 17.05.2013

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

  1. svn откатить ветку
  2. свн вверх
  3. svn очистка
  4. svn remove branch - снова отметить ветку для удаления
  5. svn ci

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

person satmovi    schedule 23.08.2012

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

person Shravan Hosamani    schedule 21.09.2016

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

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

person granters    schedule 20.06.2019