基本上我正在寻找一种在大型/复杂的SVN存储库中更容易找到的方法。
(我经常处理小型工具应用程序,并且很快就会将它们移动到一个通用的SVN存储库中。所以我想的是在一个地方可能有几十甚至几百个小工具应用程序的情况。我已经有十几个,我已经失去了有时候我使用某些特定功能或库或构建技术的地方,甚至哪个工具做了什么。)
有没有人在svn存储库中使用元数据?哪些有效,哪些无效?
我不仅在讨论如何存储元数据,还在讨论如何存储元数据,例如生成HTML索引。对于存储,我看到它的方式有3种基本可能性:
将您的元数据放入一个检查到svn存储库的普通文件中。(例如某些带有特殊文件约定的xml文件,例如svn-metadata.xml)然后将对其进行版本控制,但它使它独立于svn。
使用svn属性来存储元数据。(工作正常,并且已经过版本化,但是您与svn绑定。另外,您可以将元数据专门绑定到单个文件。)
将元数据存储在外部位置,如数据库或维基。 (更直接地集成了存储位置的功能,但不会被版本化,并且与这种存储相关联。)
我在考虑使用RDF + RSS作为普通文件中的元数据,然后编写一些定期扫描SVN存储库以获取元数据,在数据库中对其进行索引并生成易于使用的Web应用程序的内容。让它更容易找到。
答案 0 :(得分:2)
实际上我会在svn属性和(版本化的)纯xml类文件中混合元数据。
1)与服务器相关的所有内容都可以方便地存储在svn属性中,如果需要,可能不是这里的情况。我指的是在进行提交,签出/导出时,对文件或目录做一些特殊操作的属性...例如,如果您希望每次触摸特定文件时都使用钩子脚本来更新某些外部文档。 / p>
使用这样的钩子脚本来保持最新的单独信息通常可以避免更耗时的扫描整个数据库的过程,但服务器的重量更轻。
2)处理数据库的脚本在存储库文件中有更好的位置(xml,或者你最放心的任何东西)。一个典型的例子是编译工具的所有部分或部分工具并构建安装程序的脚本,在易于阅读/可管理的文件中存储有关工具的细节是有意义的。正如您所指出的那样,它必须尽可能地与服务器无关(但您可以使用一些链接,例如在最终应用程序中包含修订版以跟踪其版本)。
这就是我现在的行动方式,它运作良好(尽管在钩子脚本上还没有详细说明)。它有助于将两者分开。
我还不确定实现钩子脚本的最佳语言是什么。 Python(带pysvn)很棒,但每次强制重新加载解释器并动态输入 - 没有检查影响。我找不到任何可靠的C#API,它也适用于使用Mono的Linux,可能是C或C ++。这主要取决于我想要做的事情。