SVN X остается в конфликте деревьев - PullRequest
24 голосов
/ 13 апреля 2010

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

Спасибо!

Ответы [ 6 ]

17 голосов
/ 13 апреля 2010

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

  1. Полностью переместите папку из вашего хранилища
  2. Do svn cleanup
  3. Do svn update
  4. Скопируйте файлы из папки обратно (без файлов .svn), перезаписав старые исходные файлы, которые были только что обновлены svn.
15 голосов
/ 02 апреля 2012

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

Найдите, какой процесс имеет блокировку. Скачайте 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 голосов
/ 27 октября 2010

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
1 голос
/ 23 августа 2012

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

  1. SVN Revert Branch
  2. svn up
  3. svn cleanup
  4. svn удалить ветку - пометьте снова ветка для удаления
  5. svn ci

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

0 голосов
/ 20 июня 2019

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

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

0 голосов
/ 21 сентября 2016

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

...