SVN签出特定文件夹,该文件夹最近提交了存储库中的版本

SVN签出特定文件夹,该文件夹最近提交了存储库中的版本,svn,svn-checkout,Svn,Svn Checkout,Jenkins的工作是监视SVN中的一个位置,我们的项目位于该位置的不同文件夹中。在SVN中,我们的项目大小是200GB。我们的工作每次都检查整个项目(200GB),即使是一个小的修改(50MB)。是否有任何方法仅签出根据特定修订修改的文件夹,以便Jenkins作业上的负载(SVN签出)从200GB减少到仅几百MB。 通过在Jenkins工作空间中保留工作副本,我们只需要运行SVN更新,但由于某些内部原因,这是不可能的 我知道没有从SVN存储库中检出修订范围的规定 我将非常感谢您提供的任何建议和

Jenkins的工作是监视SVN中的一个位置,我们的项目位于该位置的不同文件夹中。在SVN中,我们的项目大小是200GB。我们的工作每次都检查整个项目(200GB),即使是一个小的修改(50MB)。是否有任何方法仅签出根据特定修订修改的文件夹,以便Jenkins作业上的负载(SVN签出)从200GB减少到仅几百MB。 通过在Jenkins工作空间中保留工作副本,我们只需要运行SVN更新,但由于某些内部原因,这是不可能的

我知道没有从SVN存储库中检出修订范围的规定


我将非常感谢您提供的任何建议和解决方案

我认为您应该使用
log-v

svn log -l1 -v
它生成包含更改文件列表(在上次提交中)的输出。您可以使用
grep
筛选不需要的内容:
grep'^M'
sed
清除不需要的
M
sed-n'/^M/s@^M@@p'

svn log -l1 -v | sed -n '/^   M/ s@^   M @@p'
因此,您需要签出这些文件(
svn checkout$(svn log-l1-v|sed…


也许您希望将此解决方案扩展到新文件(
A
符号而不是
M
)。

感谢uzsolt提出的宝贵建议。如果我在两次运行您的命令的空间中有两次或更多的提交,那么这可以通过提交后挂钩实现,这样我就可以只收到最后提交中修改的内容的通知。svn log-v-r1234:HEAD可以拯救我。这可以使用post-commit钩子实现吗?请给出你的建议,我是svnI的初学者,我想是的。但是要小心:提交钩子在服务器端运行!