SVN更新而不下载所有文件

时间:2015-02-27 11:45:35

标签: svn

我搜索了很多关于这个主题但我无法找到任何内容。所以我在这里问。

我在远程服务器上设置了SVN存储库。我已将更新的项目源文件夹添加到存储库中。

现在,因为,我正在尝试将SVN用于我的项目,我需要从我的本地项目源文件夹更新和提交。通过从svn存储库下载所有内容,在本地计算机上创建源文件夹副本。我希望避免下载。

存储库和本地副本中的源代码相同。现在我只想添加和提交我将在项目中进一步做的事情。

我的问题是,是否有可能更新项目文件夹而无需从我们第一次从存储库签出项目源时执行的存储库下载整个项目源。我有一个低带宽连接和源代码足够大,如果我检查整个源文件夹。这将花费很多时间。

我有我想要处理的源代码副本,只在存储库中提交新的更改。

由于

2 个答案:

答案 0 :(得分:0)

如果你有:

  
      
  • 躯干   
        
    • FOO
    •   
    • foo2的
    •   
    • foo3
    •   
  •   

要从主干更新单个文件夹,请使用:

svn update trunk/foo

答案 1 :(得分:0)

首先,只检查你需要的东西。例如,如果您需要的所有文件都在http://server/svn/trunk/foo下,请从svn co http://server/svn/trunk/foo结帐,而不是http://server/svn结帐。

许多使用Git(你将克隆整个存储库)转向Subversion的人都对此感到困惑。当他们被告知存储库位于http://server/svn时,他们将尝试签出http://server/svn,这将为他们提供存储库中的每个分支和标记,并且可能会填满数百GB的驱动器数据。在Subversion中,您只需在您需要的分支或主干上签出项目本身。

您还可以使用--depth选项和--set-depth选项进行结帐和更新,以创建所谓的稀疏结帐。例如。假设您的项目包含源,文档,javascript,QA测试和架构计划。这样做:

~$ svn co http://server/svn/trunk/proj

将为您提供大量您不想要的文件。您可以使用这些选项来减少您不想要的内容:

~$ svn co --depth=none http://server/svn/trunk/proj
A proj

你唯一拥有的是空proj目录。现在,您可以进入并更新您真正想要的代码:

~$ cd proj
proj$ svn update --set-depth=infinity source javascript
A source/...
A source/...
A javascript/...
A javascript/...

现在,只下载sourcejavascript目录。项目的其余部分包括文档,架构文档等,不会下载。

而且,它保持这种方式。这样做:

proj$ svn up
在将更新下载到sourcejavascript文件夹时,

不会下载您不想要的任何目录。