做并行阶段的最佳方法?

时间:2013-04-26 17:16:10

标签: c# libgit2 libgit2sharp

我想并行调度文件并同时提交到不同的分支。

同时会有多个访问权限。 repo.Index.Stage / repo.Commit API在同一个当前目录下工作,所以我认为这是不可能的。

你们可以给我一些关于如何实现这一目标的提示吗?一般的想法?

1 个答案:

答案 0 :(得分:4)

从可行性的角度来看,我可以想到两个不同的选择:

将“并行的舞台文件”视为约束

git用词中的“staging”一词意味着使用索引。

为了并行放入文件,可以打开许多存储库实例,每个实例都接受一对不同的工作目录/索引。所有这些都在同一个对象数据库中创建对象。

这可以通过RepositoryOptions构造函数的可选Repository参数来实现。

请参阅此 this test ,以便第一眼看到这是如何实现的。

替代提案,Barebone Edition

另一种选择是使用索引并直接在对象数据库中创建对象。然而,这意味着什么都不会“上演”,并且必须手工创建Blob,Trees和Commits。

较低级别的API允许这种操作。这个API甚至允许一个人“提交”对一个裸存储库。

有关如何实现此目的的更多信息,请参阅 ObjectDatabaseFixture TreeDefinitionFixture 测试套件。

此API仅在数据库中创建对象。您必须自己更新分支的提示。这可以通过Repo.Refs.Add()Repo.Refs.UpdateTarget()方法来实现。