如何使SVN仅更新文件而不添加新文件

时间:2020-03-06 14:38:35  来源:igfitidea点击:

我有一个文件存储库,这些文件互不相关,但在多个项目中是相同的。每个项目可能只需要这些文件的子集。例如:

/myRepo:
    /jquery.js
    /jquery.form.js
    /jquery.ui.js

项目A需要jquery.jsjquery.form.js,而项目B需要jquery.jsjquery.ui.js

我可以在两个项目中都签出" myRepo",但这会在两个项目中添加很多不必要的文件。我想要的是每种项目仅获得所需文件的某种方式。我认为可能的一种方式是,如果我仅将所需的文件放入每个项目,然后在其上运行" svn更新",但是以某种方式阻止了SVN向每个目录添加新文件。他们仍然可以对现有文件进行修改,但是不会添加不必要的文件。

这有可能吗?

解决方案

如果我正确理解了问题,是否要在项目之间共享代码?如果是这样,请查看svn:externals属性。

Subversion红皮书中解释的外部

svn:Windows中的外部对象

不要让自己复杂化。或者取出所有文件(这是什么缺点?几百个Ks的空间?),或者将文件分成几个目录,然后仅在相关项目中检出所需目录(使用'externals'属性) 。

K,这不是完美的,但可以。最大的问题是它将分别更新每个文件:

find . -print | grep -v '\.svn' | xargs svn update

我敢肯定,有更多人可以找到mojo的人可以找到一种更好的方法来处理svn目录排除。

在我们公司中,我们将所有项目都存储在相同的资源库中,但位于它们自己的项目文件夹中。然后,如果需要共享代码,我们将其移至库文件夹。这有助于重用,并且不会违反DRY原则。

因此,就服务器而言,我们可以将所有库导出到中心位置,也可以将项目导出到任何地方,而不会重叠。