【发布时间】:2013-04-20 22:44:54
【问题描述】:
我想并行暂存文件并同时提交到不同的分支。
将同时进行多个访问。 repo.Index.Stage/repo.Commit API 在同一个当前目录上工作,所以我认为这是不可能的。
你们能给我一些关于如何实现这一目标的提示吗?大概的想法?
【问题讨论】:
标签: c# libgit2 libgit2sharp
我想并行暂存文件并同时提交到不同的分支。
将同时进行多个访问。 repo.Index.Stage/repo.Commit API 在同一个当前目录上工作,所以我认为这是不可能的。
你们能给我一些关于如何实现这一目标的提示吗?大概的想法?
【问题讨论】:
标签: c# libgit2 libgit2sharp
从可行性的角度来看,我可以想到两种不同的选择:
将“并行暂存文件”视为约束
git用语中的“staging”这个词暗示了索引的使用。
为了并行暂存文件,可以打开许多存储库实例,每个实例都接受一对不同的工作目录/索引。他们都在同一个对象数据库中创建对象。
这可以通过Repository 构造函数的可选RepositoryOptions 参数来实现。
请参阅此this test,以初步了解这是如何实现的。
备用提案,准系统版
另一个选择是不使用索引并直接在对象数据库中创建对象。但是,这意味着不会“暂存”任何内容,并且必须手动创建 Blob、Trees 和 Commits。
较低级别的 API 允许进行此类操作。该 API 甚至允许对一个裸存储库“提交”。
请参阅 ObjectDatabaseFixture 和 TreeDefinitionFixture 测试套件,了解有关如何实现此目的的更多信息。
此 API 只会在数据库中创建对象。您必须自己更新分支的尖端。这可以通过Repo.Refs.Add() 和Repo.Refs.UpdateTarget() 方法来实现。
【讨论】: