我正在使用eclipse / subclipse进行开发。我也有TortoiseSVN客户端。
我正在尝试移动CVS存储库。旧的CVS存储库只有一个项目。我们想要重新规划,因为有几个项目有自己的开发流,应该单独管理。
我使用cvs2svn运行了存储库的标准完整移动,并且没有任何问题。
我想重构subversion存储库中的项目,所以在cvs2svn之后,我尝试进行svn移动并进行重组。我能够成功地做出这一举动,再次没有问题。
我在eclipse中查看项目,然后在其中一个移动的项目中选择一个文件。看似无关紧要哪个项目。如果我在eclipse中执行更新版本,并选择文件历史记录中的版本进行更新,则文件将从我的文件系统中删除,但旧版本永远不会丢失。该文件已经消失。
我使用TortoiseSVN也有同样的问题,所以我认为它不是一个subclipse问题。
有趣的是,如果我将项目的svn move
返回到它最初转换为的原始位置,并按照相同的步骤操作,我没有任何问题,更新版本都按预期工作。
所以,对于我的问题:
答案 0 :(得分:1)
此症状的原因:
您总是需要签出一个文件夹。如果您更新到以前的版本,此文件夹可能不存在(文件夹已移动),然后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的效果很好。