SVN 错误 - 不是工作副本
Posted
技术标签:
【中文标题】SVN 错误 - 不是工作副本【英文标题】:SVN Error - Not a working copy 【发布时间】:2010-09-27 07:43:24 【问题描述】:最近我们的svn服务器发生了变化,我们做了一个svn切换。
由于工作副本有大量未版本化的资源,工作副本被锁定,我们开始逐个文件夹切换 svn 下的所有文件夹,效果很好。
但是在存储库的最顶层,当我尝试更新文件时,我得到 svn: Working copy '.'锁定错误和清理也无济于事。当我进行清理时,我会收到这样的错误 - svn: 'content' is not a working copy directory
新鲜结帐根本不是一种选择。还有其他方法可以清理和释放锁并完全切换吗?
编辑: JesperE回答的最后一段
如果您在收到“非工作副本”时 做一个递归的“svn清理”我 猜测是你有一个目录 这应该是一个工作副本(即 顶层的 .svn 目录 这么说),但它缺少自己的 .svn 目录。在这种情况下,你 可以尝试删除/移动它 目录,然后进行本地更新
似乎是存储库中问题的解决方案。我已经确定了这些文件夹并单独对这些特定文件夹进行了新的检查,哇,锁定在随后的清理中被释放!非常感谢 JesperE !!
但是,我仍然无法弄清楚 svn switch 错误,它现在看起来像,
svn:存储库位于 'svn://repourl/reponame/文件夹名' 有 uuid 'm/reponame',但是 WC 有'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'
有什么想法吗?
【问题讨论】:
对于遇到此错误的 R 用户:github.com/wch/r-source/wiki#adding-svn-information 【参考方案1】:如果您在执行递归svn cleanup
时得到“不是工作副本”,我的猜测是您有一个应该是工作副本的目录(即顶层的.svn
目录是这样说的),但是它缺少自己的.svn
目录。在这种情况下,您可以尝试仅删除/移动该目录,然后进行本地更新(即rm -rf content; svn checkout content
)。
如果你得到一个not a working copy
错误,这意味着Subversion 找不到合适的.svn
目录。查看contents
中是否有.svn
目录
如果可能的话,理想的解决方案是重新结帐。
【讨论】:
我同意,请重新结帐,而不是尝试将您的工作副本与 repo 一起移动。 我的问题是我已经迁移到新服务器并恢复了我的文件系统备份,但工作尚未提交,并使用 svnadmin 过滤掉我不再需要的旧项目。所以我的存储库包含我需要的所有信息,但有一个新的 UUID。在这种情况下,我只是将更改的文件 tar,重新签出,然后解压缩。 您在第一段中的建议不适用于我的系统(W7+Cygwin)。而是 rm & svn update 做到了。 警告:rm -rf
永久删除文件夹 content
。在执行之前进行备份。【参考方案2】:
我以不同的方式遇到了类似的情况 (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
成功了。
【讨论】:
【参考方案3】:我解决了
-
复制受影响文件夹的备份
SVN 还原受影响的文件夹
从备份中粘贴回文件
在我的情况下,问题是由于删除了 .svn 文件。
【讨论】:
怎么做?请简要说明【参考方案4】:也许您只是复制了文件夹树并尝试添加最低的一个。
SVN
|_
|
subfolder1
|
subfolder2 (here you get an error)
在这种情况下,您必须在上层提交目录。
【讨论】:
【参考方案5】:解决方法: 重命名不是“工作副本”的目录 再次签出/更新/恢复此目录 将文件从重命名目录移动到新目录 提交更改
原因: 您对 .svn 目录下的某些文件进行了一些更改,这会破坏“工作副本”
【讨论】:
【参考方案6】:如果您在新目录中创建了一个文件,请使用 'svn add newdir' 而不是 'svn add newdir/newfile',因为您需要添加目录。默认会添加目录内的所有文件。
【讨论】:
【参考方案7】:我刚得到“不是工作副本”,对我来说,原因是 Unix 上的 Automouter。 只需一个新的“cd /path/to/work/directory”就可以了。
【讨论】:
【参考方案8】:同样,我需要更新一个“contrib”文件夹:
-
将旧文件夹移出,
复制了新的
将 .svn 文件夹复制到每个(在我的例子中只有三个)新文件夹中。
我的情况也是,问题是由于删除了 .svn 文件夹。
解决了。
【讨论】:
使用 Eclipse 插件进行 SVN 清理大约 4 小时后发现这个 - 好时光!工作副本已锁定 - 不,不是,请为 Eclipse 人员提供更好的信息,谢谢。【参考方案9】:我尝试将 .svn 文件夹从子文件夹粘贴到根文件夹。好用!!!
【讨论】:
【参考方案10】:这就是我所做的:
-
将中继重命名为中继_
创建一个新文件夹trunk
检出少量文件后重新检出并中断进程
将文件从trunk_移动到trunk
做 svn 清理
进行 svn 更新。这将更新文件的状态,然后您的所有文件都将被版本化。
【讨论】:
【参考方案11】:我在svn diff操作中也遇到这个问题,是文件路径不正确造成的,需要加'./'
表示当前文件目录。
【讨论】:
【参考方案12】:在尝试从大型 svn 项目中检查部分源代码时遇到同样的错误
svn co --depth empty svn://tug.org/texlive/trunk/Build
cd Build
svn update --set-depth infinity --parents ./source/texk/web2c
这里--parents是成功的关键
【讨论】:
【参考方案13】:svn: 'svn://repourl/reponame/foldername' 的仓库有 uuid 'm/reponame',但 WC 有 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'
每个 subversion repo 都有一个唯一的标识符 (uuid)。 Subversion 使用它来确保 repo 在执行切换等操作时实际上是相同的。您可能应该将服务器上的 uuid 更改为与以前相同。
【讨论】:
更改服务器上的 uuid - 怎么做? 老实说,我不知道,我只是假设它可以做到。你在 Subversion Book 上查过吗?【参考方案14】:可能是工作副本格式不匹配?它在 svn 1.4 和 1.5 之间发生了变化,更新的工具会自动转换格式,但旧的工具不再适用于转换后的副本。
【讨论】:
【参考方案15】:您必须已从您的项目中删除了一个 SVN - 基础文件(它们是只读文件)。因此,您会收到此错误。
再次签出新项目,使用“Winmerge”将旧 SVN 项目的更改(如果有)与新项目合并,并在最近签出时提交更改。
【讨论】:
【参考方案16】:@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 发表了评论,但创建此答案是为了使其对人们更明显,对谷歌更有帮助。从那以后,我删除了我的 cmets。 ]
【讨论】:
【参考方案17】:遇到同样的问题,原来我们在同一台机器上安装了 Slik 1.6.2 和 Tortoise。 Tortoise 已更新(并已更新工作副本)但 Slik 没有,因此 Tortoise 工作正常,但命令行失败:
svn: '.'不是工作副本目录
删除 Tortoise 和 Slik,然后在启用命令行工具的情况下重新安装 Tortoise 为我解决了这个问题。
【讨论】:
【参考方案18】:对于 mac :- 从服务器端结帐,然后将打开一个新窗口以从本地计算机中选择目录,而不是将所有代码放在选定的文件夹中,然后打开 svn 本地端并添加并提交项目
【讨论】:
【参考方案19】:今天早上我发现了同样的问题/FILE_NAME/ is not a working copy
,我花了两个多小时来解决它。经过长时间的 RND 和 Google,我找到了一些解决方案,那就是 CHECKOUT
。
CHECKOUT
从 SUBVERSION
到本地作为新项目。
更改 java 文件中的一些代码并提交项目。
它对我有用。
希望对你有帮助。
【讨论】:
【参考方案20】:最近我在使用其他开发者 Mac 我有同样的情况,问题是;首先,我需要输入 get repo path to terminal 但我没有,它会显示您的用户名和密码是什么。
【讨论】:
【参考方案21】:我刚刚遇到了 .svn 目录位于另一台机器上的 nfs 服务器上的情况,并且 nfs 客户端没有运行文件锁定服务 (lockd
)。
svn: E155007: '/mnt/svnworkdir' is not a working copy
在 nfs 客户端主机上启动 lockd
后,这种情况就消失了。
似乎当 subversion 无法锁定文件时,它可能会提供更好的错误消息。这是颠覆 1.10.0
【讨论】:
【参考方案22】:我从同一个项目到不同的位置进行了新的结帐,然后从中复制了 .svn 文件夹并替换为我的旧 .svn 文件夹。之后调用 svn update 函数,一切都正确同步到最新状态。
【讨论】:
【参考方案23】:我有这个确切的错误。我注意到我在错误的目录中。一旦我恢复到 SVN 中继目录,问题就解决了。
【讨论】:
【参考方案24】:我在我的代码上执行 mvn release:prepare 时看到了这个错误。就我而言,我已经将项目从 SVN 迁移到 Github,并从 Github 克隆了源代码。但是在我的 pom.xml 文件中,我错过了将 SCM 位置从 SVN URL 更新到 Github URL,从而导致工作目录之间的不匹配。
更正到 Github 位置的 URL 帮助我解决了这个问题。
【讨论】:
【参考方案25】:删除本地计算机中存在的 .svn 文件夹。按 windows 图标并输入 .svn,删除整个文件夹。它对我有用。
【讨论】:
以上是关于SVN 错误 - 不是工作副本的主要内容,如果未能解决你的问题,请参考以下文章