SVN更新而不下载所有文件

SVN Update without Downloading all the files

我在谷歌上搜索了很多关于这个主题的内容,但我找不到任何关于它的内容。所以我在这里问。

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

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

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

我的问题是,是否可以在不从存储库下载整个项目源代码的情况下更新项目文件夹,这是我们第一次从存储库检出项目源代码时所做的。我有一个低带宽连接,源代码足够大,如果我检查整个源文件夹。这会花费很多时间。

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

谢谢

如果你有:

  • trunk
    • foo
    • foo2
    • foo3

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

svn update trunk/foo

首先,只检查您需要的东西。例如,如果您需要的所有文件都在 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

会给你带来大量你不想要的文件。您可以使用这些选项 trim 减少您不想要的内容:

~$ 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 文件夹时,不会下载任何您不需要的目录。