2009-10-28 49 views
3

基本上我正在寻找一种在大型/复杂的SVN仓库中更容易地找到事物的方法。我经常在小工具应用程序上工作,并且很快将它们移动到一个通用的SVN仓库中,所以我想到的情况是在一个地方可能有几十个甚至几百个小工具应用程序,已经有一两个,并且我已经失去了有时使用某些特定功能或库或构建技术,甚至哪个工具做什么的地方)。svn仓库中子项目的元数据

有没有人在svn中使用过元数据库?什么工作,什么没有?

我说的不仅是如何存储元数据,但你用它做,就像生成HTML指标是什么。对于存储,我看到它的方式有3点基本的可能性:

  1. 把你的元数据,在签入SVN仓库一个纯文本文件。(例如,一些xml文件具有特殊的文件约定,例如svn-metadata.xml)然后这将被版本化,但它使它独立于svn。

  2. 使用SVN属性来存储元数据。(工程确定,并版本,但你被绑定到SVN。好的方面是,你可以专门配合元数据的单个文件。)

  3. 存储元数据在外部位置如数据库或一个wiki 。 (集成了更直接的存储位置的功能,但不会进行版本控制,并绑定到该类型的存储。)

我想在一个纯文本文件可能使用RDF + RSS作为元数据的,然后编写一些定期扫描SVN存储库中的元数据的东西,将其索引到数据库中,并生成一个易于使用的Web应用程序,以便于查找。

回答

2

其实我会混合svn属性和(版本化)普通的类xml文件中的元数据。

1)关系到服务器的一切都可以方便地存储在SVN属性,如果你需要的可能不是在这里如此。我的意思是当您继续提交,检出/导出时,对文件或目录做一些特殊的属性......例如,如果您想在每次触摸特定文件时使用钩子脚本来更新一些外部文档。

像使用钩子脚本维护单独的信息跟上时代的通常避免了扫描整个数据库更耗时的程序,它是服务器更少较重。

2)脚本来处理你的数据库会在仓库里的文件一个更好的地方(XML,或任何你觉得最放心使用)。一个典型的例子是编译所有工具或部分工具并构建安装程序的脚本,将工具的具体信息存储在易读/易管理的文件中很有意义。正如你所指出的那样,它必须尽可能地独立于服务器(但你可以有一些链接,比如在最终的应用程序中包含修订版来跟踪它们的版本)。

这是我现在该怎么进行,而且运作良好(不多阐​​述了钩子脚本尚未虽然)。它有助于将两者分开。

我只是不确定实现钩子脚本的最佳语言是什么。 Python(pysvn)很棒,但每次都强制解释器重新加载并动态输入 - 没有检查影响。我还找不到任何可靠的C#API,它也可以用于Mono,也许C或C++的Linux。它主要取决于我想要做什么。