25

我正在使用 VisualSVN(它使用 Tortoise)。我不小心将文件夹移动到其他位置。当试图将其移回时,SVN 会出现此错误。它以前发生过一次,我设法进行了一些随机更新/提交,不知道我在做什么并且它被“修复”了。我不能再使用同样的魔法,所以我需要知道如何获取我的文件和目录以及树冲突。

谢谢!

4

6 回答 6

17

我不确定它现在处于什么状态,但你最好的选择可能是:

  1. 将文件夹完全移出存储库
  2. 做一个svn cleanup
  3. 做一个svn update
  4. 将文件夹中的文件复制回来(不包括 .svn 文件),覆盖刚刚更新 svn 的旧源文件。
于 2010-04-13T01:46:53.540 回答
16

我有同样的错误(树冲突),但来自不同的工作流程。

找出哪个进程有锁。下载 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
于 2012-04-02T19:18:18.657 回答
2

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
于 2010-10-26T20:06:21.930 回答
1

尝试删除 linux 环境中的分支时,我遇到了同样的问题。我所做的是:

  1. svn 恢复分支
  2. 快点
  3. svn 清理
  4. svn remove branch - 再次标记要删除的分支
  5. svn ci

我不知道问题是什么,但我在两周内经历了两次。

于 2012-08-23T07:09:18.293 回答
0

保留您已移动的文件夹的备份。现在在 SVN 中,点击 TortoiseSVN>>Resolved。选择文件/文件夹并解决。现在更新/提交 svn 数据。

于 2016-09-21T12:05:42.207 回答
0

请注意,即使您“什么都没做”也可能发生这种情况——即有人在存储库中移动您身上的文件夹而您对此一无所知。发生在我身上。如果是这种情况,请从存储库中删除问题文件夹,然后svn update.

当开发人员移动/重命名/删除文件或文件夹时会发生树冲突,而另一个开发人员也已移动/重命名/删除或只是修改了该文件或文件夹。有许多不同的情况会导致树冲突,并且所有这些情况都需要不同的步骤来解决冲突。

于 2019-06-20T16:06:57.680 回答