【发布时间】:2014-09-11 07:18:35
【问题描述】:
我正在开发一个使用 Git 作为数据库的应用程序。我目前的方法是在应用程序更改某些内容时调用git shell 命令来构造一个新的提交。这很简单,但一个很大的缺点是它不允许任何并发写入数据库:两个线程不能同时构造一个提交,因为有一个HEAD,一个index,和一个工作副本.
但是,由于提交、树和 blob 都是内容寻址的,我认为应该可以同时构造所有这些。推荐的方法是什么?也许:
-
git add、git commit等的命令行标志,明确指定要使用的不同HEAD和index文件。据我所知,这样的事情是不存在的。 - 对所有操作使用 git 管道命令。但是,我不是他们的专家,也不完全确定哪些是线程安全的。
- 一种 Git 服务,可以连接到传统的数据库连接,这将提供对 Git 存储库的事务性并发访问。据我所知,这样的事情是不存在的。我考虑过写一篇。
- 放弃并做一个
git clone为每个并发用户获取一个全新的工作副本。这非常昂贵。
【问题讨论】:
标签: git concurrency git-commit git-checkout git-add