使用svn时如何解决这个问题?

发布于 2024-10-31 18:16:22 字数 487 浏览 2 评论 0原文

我实际上是在IDE中玩的:zend studio,它嵌入了svn工具,但我认为它应该与eclipse相同,甚至svn工具本身。

假设svn中有一个目录A,执行以下操作进行重现:

  1. A重命名为A2(IDE之外),然后刷新 >A在IDE中,它消失
  2. 刷新A2的父目录,在IDE中命名为P,然后A2出现
  3. 重命名 >A2回到A,然后刷新P,它报告:刷新所选资源时出现问题:A2/.svn [in] 不存在

现在如何解决此问题?

I'm actually playing this in IDE: zend studio,which embeds svn tool, but I think it should be the same with eclipse, and even svn tool itself.

Suppose there's a directory A in the svn, do the following to reproduce:

  1. rename A as A2(out of IDE), then refresh A in IDE,and it disappears
  2. refresh parent directory of A2,named P in IDE,then A2 appears
  3. rename A2 back to A,then refresh P,it reports:Problems occured refreshing the selected resources: A2/.svn [in <project root>] does not exist

How to fix this issue now?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

靖瑶 2024-11-07 18:16:22

这实际上不是 SVN 应该如何工作的。对 SVN 中包含的目录结构、文件等的更改必须通过 IDE 或其他支持 SVN 的应用程序完成,而不是在文件系统本身上(即通过 Windows 资源管理器)完成。

SVN 实际上跟踪其文件系统的更改,当您使用 SVN“控制器”时,您会导致整个系统不同步。

This is actually not how SVN is supposed to work. Changes to directory structures, files, etc. that are contained in an SVN must be done through the IDE or other SVN-aware application, not on the file system itself (i.e. through Windows explorer).

SVN actually tracks changes to its file system, and when you work around the SVN "controller" you cause the whole thing to be out of sync.

ま柒月 2024-11-07 18:16:22

乔希是对的。当您在 SVN 存储库中移动或重命名文件时,您必须使用 SVN 来执行此操作,这是绝对必要的。 Svn movesvn rename (后者是前者的别名)具有非常简单的语法。 TortoiseSVN 也支持该操作。以这种方式,下次另一个用户尝试执行 SVN 操作时,程序将看到存储库已更改。如果你不告诉存储库结构何时发生变化,你就会像这样混淆它。

为了解决这个问题,我会:

  1. 查看存储库的全新副本。
  2. 将文件夹(无论是 A 还是 A2)​​复制到存储库中以保存数据。
  3. Svn删除 A或A2。
  4. Svn 提交
  5. 将 A 或 A2 复制回存储库。
  6. Svn add A 或 A2。
  7. Svn 提交

Josh is correct. It is absolutely essential when you move or rename a file in an SVN repository that you must use SVN to do so. Svn move and svn rename (the latter being an alias for the former) have very simple syntax. TortoiseSVN supports the operation as well. In this manner the next time another user tries to do an SVN operation, the program will see that the repository has changed. If you don't tell the repository when the structure changes, you're going to confuse it like this.

To fix the problem, I would:

  1. Check out a brand new copy of your repository.
  2. Copy the folder -- whether is A or A2 -- out of the repository to save your data.
  3. Svn delete A or A2.
  4. Svn commit.
  5. Copy A or A2 back into the repository.
  6. Svn add A or A2.
  7. Svn commit.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文