托管存储库并将内容保存在数据库中

时间:2015-06-03 09:28:42

标签: c# .net libgit2sharp

是否可以使用libgit2sharp自行托管git存储库并将存储库(远程)的内容保存在数据库中?这是必需的,因为我想通过从数据库中检索数据来访问某些应用程序中windows目录和数据库之间同步的源。

修改

存储库只包含脚本,例如IronPython,SQL和一些XAML。因此,只有文本文件将存储在存储库(数据库)中。

稍后我想访问像ScriptManager.GetScript('/Scripts/Test.py')这样的脚本。 GetScript方法将从数据库返回脚本内容。 (仅作为一个简单的例子)。

修改

enter image description here

LibGit2Sharp应该是托管组件。 某些客户端应该直接从数据库中读取脚本,而不使用git。

解决方案

enter image description here

我认为这个解决方案更直接,因为自我托管超过LibGit2Sharp是不可能的,而不是最好的方法。在完整的想法/架构中,问题更多了。我认为目前的解决方案是最好的。

谢谢!

1 个答案:

答案 0 :(得分:1)

  

稍后我想访问像:ScriptManager.GetScript('/Scripts/Test.py')

这样的脚本

好吧,如果您只需要访问Tip指向的分支的最新提交(即HEAD)中的文件内容,则下面的代码应该可以解决问题:

using (var repo = new Repository("path/to/your/local/repo")
{
   var blob = repo.Head.Tip["/Scripts/Test.py"].Target as Blob;
   var content = blob.GetContentText();
}

更新

如果我正确理解“将数据库(远程)的内容保存在数据库”中,您希望在数据库中导出存储库的内容。存储库将是“主”,SyBase将是它的只读副本。

此时无法实现一件事:使用LibGit2Sharp托管git存储库服务器端并使其与端点git客户端进行交互。有关于此的已打开功能请求(请参阅 #90 )。

但是,现在没有什么可以阻止您使用git-daemon或打包工具(例如 Bonobo Git Server )托管您的存储库,并使用LibGit2sharp来简化导出任务。

上面的代码显示了如何使用LibGit2Sharp提取已知文件。

为了盲目导出提交/树的全部内容,请参阅 SO answer