是否可以使用libgit2sharp自行托管git存储库并将存储库(远程)的内容保存在数据库中?这是必需的,因为我想通过从数据库中检索数据来访问某些应用程序中windows目录和数据库之间同步的源。
修改
存储库只包含脚本,例如IronPython,SQL和一些XAML。因此,只有文本文件将存储在存储库(数据库)中。
稍后我想访问像ScriptManager.GetScript('/Scripts/Test.py')
这样的脚本。 GetScript
方法将从数据库返回脚本内容。 (仅作为一个简单的例子)。
修改
LibGit2Sharp应该是托管组件。 某些客户端应该直接从数据库中读取脚本,而不使用git。
解决方案
我认为这个解决方案更直接,因为自我托管超过LibGit2Sharp是不可能的,而不是最好的方法。在完整的想法/架构中,问题更多了。我认为目前的解决方案是最好的。
谢谢!
答案 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 。