基于 SQL 的存储与 SVN

本文关键字:SVN 存储 SQL 基于 | 更新日期: 2023-09-27 17:56:00

我的团队正在开发一个新的应用程序(C#,.Net 4),它涉及共享用户内容的存储库。我们需要决定在哪里存储它。要求如下:

  1. 在用户之间共享文件。
  2. 支持版本。
  3. 启用按标签搜索并支持进一步查询,例如"X 组人员创建的所有文件"
  4. 不同的人有不同的观点(团队X看到自己的内容,没有其他人可以看到他们的内容)。

我不确定什么是最好的,所以:

  • 我可以使用标签(当然不是SVN标签,更像是stackoverflow的标签)搜索SVN吗?
  • 考虑重复 - SVN和SQL - 内容有什么意义吗?
  • 还有其他建议吗?

编辑
该应用程序使用户能够编写稍后执行的验证测试。这些测试在不同站点上的许多组之间共享。出于常规原因,我们需要版本控制 - 撤消更改、突然删除等。这需要SVN。
问题是,我们还想添加一个选项来查找所有标记为"紧急"并且现在已经执行的测试,以便进行跟踪。

我希望我现在让自己更清楚:)

编辑二
我遇到了 SvnQuery,它看起来不错,但它有我可以使用的 API 吗?我宁愿将他们的机制与我自己的 GUI 一起使用。

编辑三
我的同事强烈支持仅使用数据库并忘记基于文件的存储。他声称它更适合持久性(这是必需的 - 测试不仅仅是要执行的命令列表)。我很感激对这个问题的意见,因为我认为应该可以这样或那样做。

谢谢!

基于 SQL 的存储与 SVN

首先,考虑使用 GIT 而不是 SVN。它要快得多,我怀疑它更适合您的用例:它被设计为分布式的,这意味着您的用户将能够在没有互联网访问的情况下使用它,并且您在保存文档时不会有任何与服务器通信相关的开销。

除此之外,我并没有完全理解你的问题,但似乎它的要点可以更好地改写为:"我可以对我的版本控制系统进行基于标签的搜索/访问限制吗,还是我需要在上面创建一个层来做到这一点?

如果是这样,答案是您需要在顶部添加一层。有些已经存在,既有基于Web的(例如Trac),也有基于桌面的(例如GitX)。他们不一定能完全实现你需要的东西,但它们可以成为做你所寻求的的一个很好的起点。

你可以

使用SVN。

  1. 共享文件:简单明了。它还支持二进制文件可能需要的集中锁定。
  2. 版本。明显地。
  3. 搜索...现在我们正进入困难的领域。有一个Lucene插件允许对你的存储库进行网络搜索 - opengrok,svnquery或svn-search。这些将是你最好的起点。
  4. 无法阻止人们查看 svn 存储库中存在的内容,但您可以阻止他们访问它。我不知道访问控制是否可以轻松扩展以提供隐藏文件夹,您可以询问 svn 开发人员。

有一些很棒的API可以使用SVN,可能最容易访问的是SharpSVN,它为您提供了一个.net程序集,但是有Python和C以及各种可用的API。

前所述,有一些Web工具位于SVN之上以提供视图,有Trac,Redmine和几个存储库查看器,如webSVN,因此有很多示例代码可用于编写自己的代码。


你会使用像git或mercurial这样的DVCS吗?我不会。虽然这些本身有很好的机制,但听起来它们并不是你所追求的。这些允许人们自己工作并在点对点的基础上与他人共享(尽管您可以设置一个"中央"存储库并作为每个人的对等方使用它)。它们不是以集中、共享的方式工作的。例如,如果您和我都在本地编辑测试用例,然后推送到中央存储库,则合并时可能会出现问题。如果文件是二进制文件或其他不可合并的文件,我们将在合并时遇到问题。在这种情况下,您会遇到丢失一个人的更改的问题。这是在您的情况下不使用DVCS的主要原因之一。


如果您正在尝试将共享测试放在一起,您是否查看了一些已经这样做的应用程序。我最近注意到TestRail听起来像你想做的事情。它不是免费的(唉),但它很便宜。