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

Host repository and save content in a database

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

编辑

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

稍后我想访问如下脚本:ScriptManager.GetScript('/Scripts/Test.py')GetScript 方法将从数据库中 return 脚本内容。 (仅作为一个简单的例子)。

编辑

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

解决方案

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

谢谢!

Later i would like to access the scripts like: ScriptManager.GetScript('/Scripts/Test.py')

好吧,如果您只需要从 HEAD 指向的分支的最新提交(即 Tip)访问文件的内容,那么下面的代码应该可以做到诀窍:

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();
}

更新

如果我理解正确 "save the content of the repository (remote) in a database",您想要导出数据库中存储库的内容。存储库将是 "master",而 SyBase 将是它的只读副本。

目前无法实现一件事:使用 LibGit2Sharp 托管 git 存储库服务器端,并使其成为 git 客户端与之交互的端点。有一个关于此的开放功能请求(请参阅 #90)。

但是,目前没有什么能阻止您使用 git-daemon 或打包工具(例如 Bonobo Git Server)托管您的存储库并使用 LibGit2sharp以减轻导出任务。

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

为了盲目导出一个Commit/Tree的全部内容,看这个.