2012-11-18 53 views
2

我正在为我的大学开发一个存储库管理系统,它将提供一个GUI来修改Subversion存储库中个别文件夹的权限,并使教授可以轻松地为学生和TA添加目录,适当的权限。为了做到这一点,我需要能够检索现有svn存储库的目录结构,并将其呈现在Web上。我看了几种方法,并想知道是否有人有其他想法或建议。有些事情我已经看过:快速检索svn目录树

每隔一小时,运行运行的脚本“SVN LS -R --xml”上的所有存储库并填充一个MySQL数据库 正:

  • 快速加载页面事后
  • 不占用大量的磁盘空间
  • 易于管理权限,即该网站并不需要直接在所有

负触摸的svn:

  • 我们的一些更复杂的存储库
  • 没有“活”更新
  • 很慢具有运行是否有变化或不

在页面加载,运行“svn LS - R --xml'并只检索我需要的目录来渲染当前页面 正面:

  • 更新生活
  • 没有cron作业占用服务器

负:

  • 网站慢如糖蜜
  • 网络服务器使用了更多的资源

直接读取SVN数据库 正面:

  • 快速页面加载
  • 实时更新

负:

  • 难吗?

我很好奇我还没有看到或想到什么替代品,因为我觉得任何这些东西都会以某种方式相当可怕和不雅。如果可以避免的话,我也不想重新发明轮子。 谢谢!

回答

0

我会参考一个数据库解决方案。 存储库的问题是同时访问。使用存储更新的数据库,存储库为您提供可靠的信息来源以检索其布局。

我已经为实习做了大量的研究,并且使用数据库几乎总是最快的方式来阅读回购。

为了把它的伪代码方面:

  • 读库
  • 装载场
  • 打印布局
  • 执行任务 - 和重复。

另一个需要考虑的选择是使用一个数据库来独立跟踪存储库的布局。通过这种方式,您可以确保用户不会碰到其他人的更新,并且可以保证存储库数据库不受损坏。

1

如果你能SVN服务器上运行代码,尝试

svnlook tree /path/to/repo 

这是非常快的,因为它直接从磁盘读取存储库:)更多的使用细节见the documentation

0
  1. 你应该使用通过文件直接访问库:一个缓慢的高清//此相当(如果你有快速的CPU和HD)
  2. 使用SVN绑定的相应的脚本语言,做依赖在xml解析,因为它们慢得多
  3. 不读取整个树,但保持一个导航层次结构和按需阅读目录,通常如果你阅读整个层次结构,你最终成千上万/目录在通常对您的应用程序不感兴趣的更深层次,所以您可以忽略它们并将它们显示出来ñ需求(如用户浏览此深)
  4. 如果你正在做SVN访问修改使用您的访问文件中的条目来了解你的重要目录事先
1

首先,这是什么呢?这是源代码吗?这是某种内容管理系统吗?这是用于存储和检索文档吗?你没有说。你想使用它取决于你需要什么类型的工具。

如果这仅仅是为了在教授,学生,助教和部门之间共享资源,请看看Dropbox。它简单而有效。这可以让教授决定他们想与谁分享什么,并让你脱离图片。

假设这是源头控制,有几个GUI服务器管理系统,开始作为免费:

这意味着什么都不写,没有剧本,没有MySql表。它已经为你完成了。这总是最好的解决方案。

但是,如果这是用于源代码控制,我会建议你看看Git而不是Subversion,因为这是像Git这样的分布式版本控制系统比集中版本更好的时代之一像Subversion这样的控制系统。

问题是访问的问题之一。你有几十位教授,数百名学生和一群助教都想要进入。谁将为所有这些人设置帐户。每年有四分之一的学生将要离开,另有四分之一将进入。当然,还有一些学生总是来来往往。另外,还会有团队。每个人都需要访问。这是你不想要的行政头痛。

Git通过向下传播疼痛来帮助。在你的Git主存储库中,唯一有权访问的人(至少是推送访问权,拉访问权可能更广泛)将成为教授。期。没有其他人将被允许向该存储库提交更改。你已经从允许超过500人转为仅仅打了十几人。而且,这些打打通常会停留在周围,所以维护很少。

学生呢?这取决于教授。教授们可以让他们的Git存储库供学生使用,学生可以将更改推送给教授的存储库。从那里,教授可以将这些变化推给主人。

因此,首先,你有你的工具方面想不是准确地确定或者你是怎么想的事会工作,但实际上你想要什么:

  • 它是版本控制?
  • 它是文档存储库吗?
  • 这是一个Wiki吗?
  • 它是一个内容管理系统吗?
  • 这是一种分享各组之间重要文件的方式吗?

然后,一旦你有了这个,就更容易挑选工具。如果你真的想要一个大学版本的控制系统,Git可能会更好地满足你的需求,因为你不想集中访问控制,而是把责任分散下去。