我正在使用 eclipse/subclipse 进行开发。我还有 TortoiseSVN 客户端。

我正在尝试移动 CVS 存储库。旧的 CVS 存储库只有一个项目。我们希望重新组织,因为几个项目有自己的开发流程,应该分开管理。

我使用 cvs2svn 运行了存储库的标准完整移动,没有出现任何问题。

我想重组 subversion 存储库中的项目,因此在 cvs2svn 之后,我尝试进行 svn 移动并进行重组。我能够成功地进行移动,再次没有任何问题。

我在 eclipse 中查看该项目,然后在其中之一中选择一个文件 搬家了 项目。似乎哪个项目并不重要。如果我在 eclipse 中执行更新版本,并选择文件历史记录中的一个版本进行更新,则该文件将从我的文件系统中删除,但旧版本永远不会下降。文件就这样消失了。

我使用 TortoiseSVN 也遇到同样的问题,所以我认为这不是 subclipse 问题。

有趣的是,如果我做一个 svn move 一个项目的 后退 到最初转换到的原始位置,并按照相同的步骤操作,我没有任何问题,更新版本按预期工作。

所以,对于我的问题:

  1. 我在 cvs2svn 迁移过程中是否做错了什么,导致我无法成功地重新组织我的 subversion 存储库?
  2. 有更好的方法来做我想做的事情吗?
有帮助吗?

解决方案

在我工作的地方,我们决定从 CVS 导入后将文件移至 SVN 中。CVS 的移动历史功能有限,而 SVN 存储库可以“回滚”以随时查看它的样子。通过这样做,我们再次决定保留所有更改和移动的历史记录更为重要。

我们所做的是将模块按原样从 CVS 移至 SVN。然后,在签出之前,使用存储库浏览器根据需要移动所有文件。

现在,当您将单个文件更新到旧版本时,这并不能解决您的问题,该文件可能会消失。我们决定接受这一点,因为我们正在尝试从以文件为中心的存储库视图 (CVS) 转向基于快照的视图。因此,如果我们需要返回到旧版本,我们会更新整个项目。如果您只是查看差异历史记录,那么当我们允许移动/重命名时,TortoiseSVN 效果很好。

其他提示

  1. 不,你没有做错任何事
  2. 是的。您应该重新组织您的 CVS 存储库 你通过cvs2svn导入它

出现此症状的原因:

您始终需要签出文件夹。如果您更新到以前的版本,该文件夹可能不存在(该文件夹已被移动),然后 Subversion 将删除其内容。Subversion 中的重命名始终以删除和添加的方式实现。因此,文件之间的连接很薄弱,但这只是为了该文件的历史记录。如果您想查看新布局,您需要签出包含以下两者的文件夹:目标和源文件夹。您将能够“看到”此文件夹的移动,但是如果您签出时只有其中一个文件夹,则该文件夹将消失,您需要签出不同的 URL(目标或源)。

因此,在 CVS 中重组项目然后迁移会更容易。坏处:您将没有任何重组历史,并且无法构建/编译以前的版本(在 CVS 中创建)。

我同意 Peter Parker 的观点,即在转换为 Subversion 之前在 CVS 中重新组织项目是容易且更好的, 如果 您想要做的是重新组织各个项目中的文件夹和文件。

但是,如果您想重新组织项目本身的布局(即一个项目相对于另一个项目的位置),您可以作为 cvs2svn 转换的一部分轻松完成此操作。当你做一个 多项目转换, ,您可以指定 cvs2svn 应将每个项目的主干、分支和标签目录放置在何处。只需根据您想要的新项目组织放置它们,然后您就可以使用任何常用工具来使用存储库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top