Subversion 的奇怪问题 - 尝试重新创建曾经在我的存储库中的目录时“文件已存在”

2024-01-06

所以 - 我曾经有一个名为 mysql 的目录,几次修订前。我删除了它,并决定重新开始 - 但是当我尝试创建新的 mysql 目录时 - 我不断遇到“文件已存在”错误:

support:/etc/puppet/modules# mkdir mysql
support:/etc/puppet/modules# svn add mysql/
A         mysql
support:/etc/puppet/modules# svn commit -m " Test"
Adding         modules/mysql
svn: Commit failed (details follow):
svn: File already exists: filesystem '/var/lib/svn/puppet/db', transaction '11-r', path '/trunk/modules/mysql'
support:/etc/puppet/modules# svn delete mysql
svn: Use --force to override this restriction
svn: 'mysql' has local modifications
support:/etc/puppet/modules# svn --force delete mysql
D         mysql

我看到其他一些帖子建议强制更新

support:/etc/puppet/modules# svn status
support:/etc/puppet/modules# svn update
At revision 11.
support:/etc/puppet/modules# svn mkdir mysql
A         mysql
support:/etc/puppet/modules# svn commit -m "Test"
Adding         modules/mysql
svn: Commit failed (details follow):
svn: File already exists: filesystem '/var/lib/svn/puppet/db', transaction '11-s', path '/trunk/modules/mysql'

当我删除了一个文件夹(和子文件夹)并转到从头开始重新创建它们。您因手动删除并重新添加而收到此错误folders(然而files似乎可以应付这个问题)。

经过一番令人沮丧的混乱后,发现我必须:
(在 Windows 上使用 TortoiseSVN)

  1. 将冲突的文件夹移出工作副本(这样我就不会丢失正在进行的工作)
  2. Do an svn update将旧文件/文件夹添加回工作副本
  3. svn delete folder
  4. commit
  5. 将新文件夹复制回工作副本(确保删除其中的所有 .svn 文件夹)
  6. commit

不幸的是,它(A)需要两次提交,并且(B)丢失文件修订历史记录,因为它只能追溯到最近的重新添加(除非有人可以解释如何解决这个问题)。解决这两个问题的替代解决方案是跳过步骤 3 和 4,唯一的问题是旧的/不必要的文件可能仍然存在于您的目录中。您可以手动删除这些。

很想听听其他人对此可能有的任何其他见解。

Simon.


[Update]好吧,当时我又遇到了同样的问题,但是有问题的文件夹不在最后一次提交中,所以update没有恢复它。相反,我不得不浏览存储库并delete有问题的文件夹。那时我可以add文件夹返回并commit成功地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Subversion 的奇怪问题 - 尝试重新创建曾经在我的存储库中的目录时“文件已存在” 的相关文章

随机推荐