选择性SVN导出存储库中的文件

时间:2012-01-12 20:46:31

标签: svn export

我已经解决了这个问题几天了,一直无法解决。

我不确定我的方法是否可行,所以如果有人有更好的解决方法,我会接受我的想法,所以我会提供全貌

这是方案

我们有一个大型存储库,目前我们正在从StarTeam迁移到SVN。

在存储库中,我们有一个特定的目录,其中包含一组链接的文件。这些文件链接到分布在项目树其余部分的原始文件。我们使用此目录中的文件生成翻译所需的字符串。

在SVN中没有链接功能。我需要选择只能导出与最新版本的翻译相关的文件,但只有那些不是整个修订版问题的文件才开始在存储库中分发。总共有大约300个这样的文件因此无法手动

我也可能使用属性设置所有文件,但无法通过属性导出

谢谢

3 个答案:

答案 0 :(得分:0)

我认为如果你想用svn而不是外部脚本(你应该考虑作为替代),你可能需要为此创建一个新的存储库结构。

svn的一个特性是svn:externals,你可以在其中构建一个新的存储库,它将从其他svn存储库中获取子目录。正如你所说,你有这么多文件,我认为某种外部脚本可能是唯一合理的解决方案。

我可能会使用这样的东西:我会将一个文件列表放在存储库中的文本文件中,然后让脚本获取该文件列表并将其导出到您需要它的结构中的所需位置。列表格式和要处理的工具取决于您拥有的结构和您需要导出的结构。

答案 1 :(得分:0)

这不是基于SVN的解决方案,而是针对基于SVN约束的问题的解决方法。

不确定它是否可行,但您可以考虑更改回购的布局,只需反转翻译文件链接的方向即可。您可以将实际文件保留在您的directoy中,比如要导出的文件,并使用以前实际文件所在的链接(" 分布在项目树的其余部分&# 34。)

在SVN导出翻译文件目录时,您不会遇到任何问题。

答案 2 :(得分:0)

不完全确定 links 的含义。 Unix上的Subversion可以存储到存储库中其他文件的符号链接,但我通常不推荐它。这不是Windows友好的。

您如何准确使用这些链接?您是否只导出此目录,并且由于它链接到实际内容,因此您只提取所需的文件?这些是文件系统链接,还是StarTeam的专有功能,如VisualSourceSafe中的旧共享

我通常建议通过某种构建系统来处理这样的事情。您可以使用像Ant这样的构建语言,它非常强大,可以在任何使用Java的平台上运行。或者,您可以使用Python或Perl之类的东西。我会远离shell脚本和批处理脚本,因为它们不是那么普遍。

您从存储库中执行完整检查,然后运行构建以执行导出。导出将简单地将所需文件复制到某种构建目录中。 (我建议在结帐的根目录下创建一个名为target的目录,并将所有构建生成的文件放在那里。这样可以非常直接地清理构建。我将生成的构建target/archive下。

这不仅使从版本控制系统更容易移动到版本控制系统,而且允许您使用像Jenkins这样的系统来创建和存储所需的工件。当您需要发布时,您可以直接从Jenkins网页下载,而不是查看它。