ChatGPT解决这个技术问题 Extra ChatGPT

SVN 错误 - 不是工作副本

svn

最近我们的 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'

有任何想法吗 ?

对于遇到此错误的 R 用户:github.com/wch/r-source/wiki#adding-svn-information

e
el-teedee

如果您在执行递归 svn cleanup 时得到“不是工作副本”,我的猜测是您有一个应该是工作副本的目录(即顶层的 .svn 目录是这样说的),但它丢失了它自己的 .svn 目录。

在这种情况下,您可以尝试仅删除/移动该目录,然后进行本地更新(即 rm -rf content; svn checkout content)。

警告:rm -rf 将永久删除文件夹内容。执行前备份

如果您收到 not a working copy 错误,则意味着 Subversion 无法在其中找到合适的 .svn 目录。检查 contents 中是否有 .svn 目录

如果可能的话,理想的解决方案是重新结帐。


我同意,请重新结帐,而不是尝试将您的工作副本与 repo 一起移动。
我的问题是我已经迁移到新服务器并恢复了我的文件系统备份,但工作尚未提交,并使用 svnadmin 过滤掉我不再需要的旧项目。所以我的存储库包含我需要的所有信息,但有一个新的 UUID。在这种情况下,我只是将更改的文件 tar 压缩,重新签出,然后解压缩。
您在第一段中的建议不适用于我的系统(W7+Cygwin)。而是 rm & svn update 做到了。
警告: rm -rf 永久删除文件夹 content。在执行之前进行备份。
K
Ken Arnold

我以不同的方式遇到了类似的情况(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

那行得通。


S
Staffan Lundstrom

我解决了

复制受影响文件夹的备份 SVN 恢复受影响的文件夹 从备份中粘贴文件

就我而言,问题是由于删除了 .svn 文件。


怎么做 ?请简要说明
H
Himanshu

也许您只是复制了文件夹树并尝试添加最低的一个。

SVN
|_
  |
  subfolder1
       |
       subfolder2   (here you get an error)

在这种情况下,您必须在上层提交目录。


a
abatishchev

解决方法:重命名不是“工作副本”的目录再次签出/更新/恢复此目录将文件从重命名的目录移动到新的提交更改

原因:您对 .svn 目录下的某些文件进行了一些更改,这会破坏“工作副本”


H
HenryF

如果你在一个新目录中创建了一个文件,而不是 'svn add newdir/newfile' 使用 'svn add newdir' 因为你需要添加目录。默认情况下会添加目录中的所有文件。


A
AlexLa

我刚得到“不是工作副本”,对我来说原因是 Unix 上的 Automouter。只需一个新的“cd /path/to/work/directory”就可以了。


a
arieltools

同样,我需要更新一个“contrib”文件夹:

将旧文件夹移出,复制新文件夹将 .svn 文件夹复制到每个(在我的情况下只有三个)新文件夹中。

我也是我的情况,问题是由于删除了 .svn 文件夹。

解决了。


使用 Eclipse 插件进行 SVN 清理大约 4 小时后发现这个 - 好时光!工作副本被锁定 - 不,不是,想出更好的消息 Eclipse 人,谢谢。
n
navin

我尝试将 .svn 文件夹从子文件夹粘贴到根文件夹。有用!!!


S
Shaunak Sontakke

这就是我所做的:

将trunk 重命名为trunk_ 创建一个新文件夹trunk 重新签出并在签出几个文件后中断该过程 将文件从trunk_ 移动到trunk 执行svn cleanup 执行svn update。这将更新文件的状态,然后您的所有文件都将被版本化。


A
Armstrongya

我在svn diff操作中也遇到这个问题,是文件路径不正确造成的,需要加'./'表示当前文件目录。


m
mindon

尝试从大型 svn 项目中检查部分源时遇到相同的错误

svn co --depth empty svn://tug.org/texlive/trunk/Build
cd Build
svn update --set-depth infinity --parents ./source/texk/web2c

这里 --parents 是成功的关键


J
JesperE

svn:'svn://repourl/reponame/foldername' 的存储库有 uuid 'm/reponame',但 WC 有 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

每个 subversion repo 都有一个唯一的标识符 (uuid)。 Subversion 使用它来确保 repo 在执行切换等操作时实际上是相同的。您可能应该将服务器上的 uuid 更改为与以前相同。


更改服务器上的 uuid - 如何执行此操作?
老实说,我不知道,我只是假设它可以做到。你在 Subversion Book 上查过吗?
a
agnul

会不会是工作副本格式不匹配?它在 svn 1.4 和 1.5 之间发生了变化,更新的工具会自动转换格式,但旧的工具不再适用于转换后的副本。


S
Samiksha

您必须从项目中删除了一个 SVN - 基础文件(它们是只读文件)。因此,您会收到此错误。

再次签出一个新项目,使用“Winmerge”将旧 SVN 项目的更改(如果有)与新项目合并,并在最新签出时提交更改。


C
Community

@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 更有帮助。我已经删除了我的评论。 ]


T
Twoayem

有同样的问题,原来我们在同一台机器上安装了 Slik 1.6.2 和 Tortoise。 Tortoise 已更新(并已更新工作副本)但 Slik 没有,因此 Tortoise 工作正常,但命令行失败:

svn:'。'不是工作副本目录

删除 Tortoise 和 Slik,然后重新安装 Tortoise 并启用命令行工具为我解决了这个问题。


R
RaviPatidar

对于 mac:- 从服务器端结帐,然后将打开一个新窗口以从本地计算机中选择目录,而不是将所有代码放在选定的文件夹中,然后打开 svn 本地端并添加并提交项目


C
Chintan Khetiya

今天早上我发现了同样的问题/FILE_NAME/ is not a working copy,我花了两个多小时来解决它。经过长时间的 RND 和 Google,我找到了一些解决方案,那就是 CHECKOUT

从 SUBVERSION 到本地作为新项目签出。更改 java 文件中的一些代码并提交项目。这对我有用。

希望对您有所帮助。


M
Micha Wiedenmann

最近我在使用其他开发者的 Mac 我遇到了同样的情况,问题是;首先我需要输入 get repo path to terminal 但我没有,它会显示您的用户名和密码是什么。


J
Juan

我刚刚遇到了 .svn 目录位于另一台机器上的 nfs 服务器上的情况,并且 nfs 客户端没有运行文件锁定服务 (lockd)。

svn: E155007: '/mnt/svnworkdir' is not a working copy

在 nfs 客户端主机上启动 lockd 后,这种情况就消失了。

似乎 subversion 在锁定文件时遇到问题时可能会提供更好的错误消息。这是颠覆 1.10.0


R
Ramesh Jaya

我从同一个项目进行了新的结帐到不同的位置,然后从中复制了 .svn 文件夹并替换为我的旧 .svn 文件夹。之后调用 svn update 函数,一切都正确同步到最新状态。


s
sqrepants

我有这个确切的错误。我注意到我在错误的目录中。一旦我恢复到 SVN Trunk 目录,问题就解决了。


P
Pavan Kailash

我在我的代码上执行 mvn release:prepare 时看到了这个错误。就我而言,我已经将项目从 SVN 迁移到 Github,并从 Github 克隆了源代码。但是在我的 pom.xml 文件中,我错过了将 SCM 位置从 SVN URL 更新到 Github URL,这导致工作目录之间的不匹配。

将 URL 更正到 Github 位置帮助我解决了这个问题。


B
Bhuvana

删除本地计算机中存在的 .svn 文件夹。按 windows 图标并输入 .svn,删除整个文件夹。它对我有用。