我写了一个小的webapp,它允许用户浏览Visual SVN服务器。我想在这个webapp中添加一个像github这样的在线编辑器,这样用户就可以在线编辑文件,留言并将更改显示在存储库中。
为此我需要在本地签出文件。我的想法是用mongodb检查它们,所以我可以保存每个用户的更改,就像本地工作副本一样。
是否有办法(不重新实现svn协议)在数据库中甚至只是在内存中签出,然后将其写入数据库。
如果有任何问题,请问:)
顺便说一下。如果有人有兴趣,这里是代码https://bitbucket.org/Knerd/svn-browser
答案 0 :(得分:2)
无法直接向数据库执行svn checkout
。但是有一些选择。
首先,您可以简单地创建驻留在内存中的虚拟磁盘并对该磁盘执行检出。您可以将签出的文件存储到数据库中。
另一种选择是直接使用丰富的Subversion API。注意,Subversion是用C语言编写的,所以你需要在Node.js和SVN之间建立桥梁(据我所知,Node.js没有正式的Subversion绑定,但是有Python和Java,那里有是Node.js可用的非官方nodesvn包。使用API,您可以实现自己的“数据库内”工作副本。
此外,您可以使用svnmucc
实用程序(随VisualSVN Server一起提供)直接在存储库中进行提交(甚至不需要制作工作副本)。如果将其与svn ls
,svn info
等结合使用,则可以实现存储库浏览和文件编辑。