cvs2svn之后的Subversion问题

时间:2009-05-12 13:33:06

标签: svn cvs2svn

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

我正在尝试移动CVS存储库。旧的CVS存储库只有一个项目。我们想要重新规划,因为有几个项目有自己的开发流,应该单独管理。

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

我想重构subversion存储库中的项目,所以在cvs2svn之后,我尝试进行svn移动并进行重组。我能够成功地做出这一举动,再次没有问题。

我在eclipse中查看项目,然后在其中一个移动的项目中选择一个文件。看似无关紧要哪个项目。如果我在eclipse中执行更新版本,并选择文件历史记录中的版本进行更新,则文件将从我的文件系统中删除,但旧版本永远不会丢失。该文件已经消失。

我使用TortoiseSVN也有同样的问题,所以我认为它不是一个subclipse问题。

有趣的是,如果我将项目的svn move 返回到它最初转换为的原始位置,并按照相同的步骤操作,我没有任何问题,更新版本都按预期工作。

所以,对于我的问题:

  1. 在cvs2svn移动期间我做错了什么会妨碍我成功重新组织我的subversion存储库?
  2. 有没有更好的方法来做我想做的事情?

3 个答案:

答案 0 :(得分:1)

  1. 不,你没有做错什么
  2. 是。您应该重新组织您的CVS存储库,然后再通过cvs2svn 导入它

    此症状的原因:

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

    因此,在CVS中重构项目然后进行迁移会更容易。缺点:您不会有任何重组历史,也无法构建/编译以前的版本(在CVS中创建)。

答案 1 :(得分:1)

我同意Peter Parker的说法,在转换为Subversion之前重新组织CVS中的项目是很容易和可取的,如果你想要做的是重新组织各个项目中的文件夹和文件。

但是如果你想重新组织项目本身的布局(即,一个项目相对于另一个项目的位置),你可以在cvs2svn转换过程中轻松完成。当您执行multiproject conversion时,您可以指定cvs2svn应该为每个项目放置trunk,branches和tags目录的位置。只需根据您所需的新项目组织放置它们,然后使用任何常用工具处理存储库都没有问题。

答案 2 :(得分:0)

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

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

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