最近我们的 svn 服务器发生了变化,我们做了一个 svn 切换。
由于工作副本有大量未版本控制的资源,因此工作副本被锁定,我们开始逐个文件夹切换 svn 下的所有文件夹,效果非常好。
但是在存储库的最顶层,当我尝试更新文件时,我得到 svn: Working copy '.'锁定错误和清理也无济于事。当我进行清理时,我会收到这样的错误 - svn: 'content' is not a working copy directory
新鲜结帐根本不是一种选择。还有其他方法可以清理和释放锁并完全切换吗?
编辑:JesperE 回答的最后一段
如果在执行递归“svn cleanup”时得到“不是工作副本”,我的猜测是你有一个应该是工作副本的目录(即顶层的 .svn 目录是这样说的),但它缺少它的自己的 .svn 目录。在这种情况下,您可以尝试仅删除/移动该目录,然后进行本地更新
似乎是存储库中问题的解决方案。我已经确定了这些文件夹并单独对这些特定文件夹进行了新的检查,哇,锁定在随后的清理中被释放!非常感谢杰斯珀!
但是,我仍然无法弄清楚现在看起来像这样的 svn 开关错误,
svn:'svn://repourl/reponame/foldername' 的存储库有 uuid 'm/reponame',但 WC 有 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'
有任何想法吗 ?
如果您在执行递归 svn cleanup
时得到“不是工作副本”,我的猜测是您有一个应该是工作副本的目录(即顶层的 .svn
目录是这样说的),但它丢失了它自己的 .svn
目录。
在这种情况下,您可以尝试仅删除/移动该目录,然后进行本地更新(即 rm -rf content; svn checkout content
)。
警告:rm -rf
将永久删除文件夹内容。执行前备份
如果您收到 not a working copy
错误,则意味着 Subversion 无法在其中找到合适的 .svn
目录。检查 contents
中是否有 .svn
目录
如果可能的话,理想的解决方案是重新结帐。
我以不同的方式遇到了类似的情况(svn: 'papers' is not a working copy directory
),所以我想我会发布我的战斗故事(简化):
$ svn add papers
svn: Can't create directory 'papers/.svn': Permission denied
哎呀!修复权限...然后:
$ svn add papers
svn: warning: 'papers' is already under version control
$ svn st
~ papers
$ svn cleanup
svn: 'papers' is not a working copy directory
甚至将 papers
移开并运行 svn up
(对 OP 有效)也无法解决问题。这是我所做的:
$ mv papers papers_
$ svn cleanup
$ svn revert papers
Reverted 'papers'
$ mv papers_/ papers
$ svn add papers
那行得通。
我解决了
复制受影响文件夹的备份 SVN 恢复受影响的文件夹 从备份中粘贴文件
就我而言,问题是由于删除了 .svn 文件。
也许您只是复制了文件夹树并尝试添加最低的一个。
SVN
|_
|
subfolder1
|
subfolder2 (here you get an error)
在这种情况下,您必须在上层提交目录。
解决方法:重命名不是“工作副本”的目录再次签出/更新/恢复此目录将文件从重命名的目录移动到新的提交更改
原因:您对 .svn 目录下的某些文件进行了一些更改,这会破坏“工作副本”
如果你在一个新目录中创建了一个文件,而不是 'svn add newdir/newfile' 使用 'svn add newdir' 因为你需要添加目录。默认情况下会添加目录中的所有文件。
我刚得到“不是工作副本”,对我来说原因是 Unix 上的 Automouter。只需一个新的“cd /path/to/work/directory”就可以了。
同样,我需要更新一个“contrib”文件夹:
将旧文件夹移出,复制新文件夹将 .svn 文件夹复制到每个(在我的情况下只有三个)新文件夹中。
我也是我的情况,问题是由于删除了 .svn 文件夹。
解决了。
我尝试将 .svn 文件夹从子文件夹粘贴到根文件夹。有用!!!
这就是我所做的:
将trunk 重命名为trunk_ 创建一个新文件夹trunk 重新签出并在签出几个文件后中断该过程 将文件从trunk_ 移动到trunk 执行svn cleanup 执行svn update。这将更新文件的状态,然后您的所有文件都将被版本化。
我在svn diff操作中也遇到这个问题,是文件路径不正确造成的,需要加'./'
表示当前文件目录。
尝试从大型 svn 项目中检查部分源时遇到相同的错误
svn co --depth empty svn://tug.org/texlive/trunk/Build
cd Build
svn update --set-depth infinity --parents ./source/texk/web2c
这里 --parents 是成功的关键
svn:'svn://repourl/reponame/foldername' 的存储库有 uuid 'm/reponame',但 WC 有 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'
每个 subversion repo 都有一个唯一的标识符 (uuid)。 Subversion 使用它来确保 repo 在执行切换等操作时实际上是相同的。您可能应该将服务器上的 uuid 更改为与以前相同。
会不会是工作副本格式不匹配?它在 svn 1.4 和 1.5 之间发生了变化,更新的工具会自动转换格式,但旧的工具不再适用于转换后的副本。
您必须从项目中删除了一个 SVN - 基础文件(它们是只读文件)。因此,您会收到此错误。
再次签出一个新项目,使用“Winmerge”将旧 SVN 项目的更改(如果有)与新项目合并,并在最新签出时提交更改。
@JesperE mentions 您需要更改 uuid。以下内容应该可以帮助您实现这一目标。
在 SVN 1.5+ 上,您可以执行 svnadmin setuuid;然后您可以使用 svnlook uuid 检查它是否已正确设置。在早期版本的 SVN 上,这是一个更难的过程。请参阅http://chestofbooks.com/computers/revision-control/subversion-svn/Managing-Repository-UUIDs-Reposadmin-Maint-Uuids.html
此外,“m/reponame”的 UUID 看起来很可疑。我相信它应该是一个十六进制格式的数字,就像工作副本的一样,所以也许这个动作会全面改善:-)
[我最初对 @JesperE's answer 发表了评论,但创建此答案是为了使其对人们更明显并且对 Google 更有帮助。我已经删除了我的评论。 ]
有同样的问题,原来我们在同一台机器上安装了 Slik 1.6.2 和 Tortoise。 Tortoise 已更新(并已更新工作副本)但 Slik 没有,因此 Tortoise 工作正常,但命令行失败:
svn:'。'不是工作副本目录
删除 Tortoise 和 Slik,然后重新安装 Tortoise 并启用命令行工具为我解决了这个问题。
对于 mac:- 从服务器端结帐,然后将打开一个新窗口以从本地计算机中选择目录,而不是将所有代码放在选定的文件夹中,然后打开 svn 本地端并添加并提交项目
今天早上我发现了同样的问题/FILE_NAME/ is not a working copy
,我花了两个多小时来解决它。经过长时间的 RND 和 Google,我找到了一些解决方案,那就是 CHECKOUT
。
从 SUBVERSION 到本地作为新项目签出。更改 java 文件中的一些代码并提交项目。这对我有用。
希望对您有所帮助。
最近我在使用其他开发者的 Mac 我遇到了同样的情况,问题是;首先我需要输入 get repo path to terminal 但我没有,它会显示您的用户名和密码是什么。
我刚刚遇到了 .svn 目录位于另一台机器上的 nfs 服务器上的情况,并且 nfs 客户端没有运行文件锁定服务 (lockd
)。
svn: E155007: '/mnt/svnworkdir' is not a working copy
在 nfs 客户端主机上启动 lockd
后,这种情况就消失了。
似乎 subversion 在锁定文件时遇到问题时可能会提供更好的错误消息。这是颠覆 1.10.0
我从同一个项目进行了新的结帐到不同的位置,然后从中复制了 .svn 文件夹并替换为我的旧 .svn 文件夹。之后调用 svn update 函数,一切都正确同步到最新状态。
我有这个确切的错误。我注意到我在错误的目录中。一旦我恢复到 SVN Trunk 目录,问题就解决了。
我在我的代码上执行 mvn release:prepare 时看到了这个错误。就我而言,我已经将项目从 SVN 迁移到 Github,并从 Github 克隆了源代码。但是在我的 pom.xml 文件中,我错过了将 SCM 位置从 SVN URL 更新到 Github URL,这导致工作目录之间的不匹配。
将 URL 更正到 Github 位置帮助我解决了这个问题。
删除本地计算机中存在的 .svn 文件夹。按 windows 图标并输入 .svn,删除整个文件夹。它对我有用。
rm -rf
永久删除文件夹content
。在执行之前进行备份。