svn checkout / update而不删除磁盘上的现有(版本化)文件

时间:2017-06-15 12:03:30

标签: svn tortoisesvn svn-checkout

我正在执行许多python脚本,所有这些脚本都使用相同(大)框架的部分。我使用这个框架的各种版本,都在版本控制之下,并且由于每个测试使用不同的部分,我决定只检查我需要的部分会更快。换句话说,我期待使用稀疏结账。我的目的是逐步检查一个空的工作副本,并通过更新更新以随时间收集(几乎)完整的框架。我正在使用带有modulefinder的python脚本来决定每个项目所需的框架部分。所以我得到了以下内容:

Project Foo,框架树:

\R100
   \Framework
     \Module_1
       \Submodule_1
       \Submodule_5
     \Module_2
     \Module_3

结账常规:

svn checkout repo.url/Framework@100 local\R100\Framework --depth empty
svn update \local\R100\Framework --depth immediates --revision 100
svn update \local\R100\Framework\Module_1 --depth immediates --revision 100
svn update \local\R100\Framework\Module_1\Submodule_1 --depth immediates --revision 100
svn update \local\R100\Framework\Module_1\Submodule_5 --depth immediates --revision 100
svn update \local\R100\Framework\Module_2 --depth immediates --revision 100
svn update \local\R100\Framework\Module_3 --depth immediates --revision 100

项目栏:

\R100
   \Framework
     \Module_1
       \Submodule_1
       \Submodule_2
     \Module_2
     \Module_3

结账常规:

svn checkout repo.url/Framework@100 local\R100\Framework --depth empty
svn update \local\R100\Framework --depth immediates --revision 100
svn update \local\R100\Framework\Module_1 --depth immediates --revision 100
svn update \local\R100\Framework\Module_1\Submodule_1 --depth immediates --revision 100
svn update \local\R100\Framework\Module_1\Submodule_2 --depth immediates --revision 100
svn update \local\R100\Framework\Module_2 --depth immediates --revision 100
svn update \local\R100\Framework\Module_3 --depth immediates --revision 100

项目Moo:

\R100
   \Framework
     \Module_1
       \Submodule_1
       \Submodule_3
     \Module_6
     \Module_9

结账常规:

svn checkout repo.url/Framework@100 local\R100\Framework --depth empty
svn update \local\R100\Framework --depth immediates --revision 100
svn update \local\R100\Framework\Module_1 --depth immediates --revision 100
svn update \local\R100\Framework\Module_1\Submodule_1 --depth immediates --revision 100
svn update \local\R100\Framework\Module_1\Submodule_3 --depth immediates --revision 100
svn update \local\R100\Framework\Module_6 --depth immediates --revision 100
svn update \local\R100\Framework\Module_9 --depth immediates --revision 100

问题是,每次连续更新都会从删除现有文件开始,而不是仅检出此工作副本文件的新内容。有没有办法克服这个问题?我意识到设置更新/结帐深度是原因,但我想克服这个告诉svn客户端“很好,那些文件和文件夹不再在结账范围内,但因为它们已经在这里,所以无论如何都要保留它们”

1 个答案:

答案 0 :(得分:0)

你决定遵循的方法不会很好地工作,我期待很多痛苦这样的工作副本。 SVN提供了考虑到这些案例而设计的工具。

在我看来,你特别想念vendor branchessvn:externals。您可以在SVN存储库中研究和实现这些功能之一或两者:

  • 使用vendor branches维护自定义代码库,具体取决于外部代码。
  • 在SVN中使用带有标签的svn:externals来构建多个项目或结帐的工作副本。