在微服务中运行Git命令

时间:2018-05-15 12:26:47

标签: git microservices spring-cloud jgit

我正在实施微服务(在Spring Cloud中),它充当UI层调用的Git操作的外观。我试图使用jgit,但问题是它需要文件系统。所以我必须将远程存储库克隆到本地文件系统。问题是,微服务不是无状态的,还会出现其他问题:

  • 在每次操作之前进行克隆需要花费太多时间,所以不是一个选项
  • 拥有这种微服务的多个实例可能会导致不同的存储库(推送需要一些时间)
  • 同时提交不同的节点可能会导致冲突

我想以与数据库类似的方式处理Git存储库,因此所有操作都应该在不使用文件系统,克隆等的情况下完成。 - 只需在远程调用命令即可完成。

我想补充一点,搜索解决方案非常困难,因为" Git微服务"短语很常见但在其他意义上(在存储库中存储源代码)。

编辑:我刚刚找到 Are there any restful interfaces to git? 但任何其他想法都会很好

1 个答案:

答案 0 :(得分:1)

尝试从scm4j API获取锁定的工作副本。它可以在共享网络文件夹中创建锁定的文件夹,直到发布后,其他微服务才能使用它。在工作副本中执行任何签出和其他工作。然后,如果提供了相同的存储库URL,它将被重用,因此您只需执行switch + pull,而不执行克隆。如果另一个微服务当前正在使用工作副本,那么另一个可用的服务将被获取并锁定,或者新的微服务将被创建并锁定等等。

{{1}}

}