我正在实施微服务(在Spring Cloud中),它充当UI层调用的Git操作的外观。我试图使用jgit,但问题是它需要文件系统。所以我必须将远程存储库克隆到本地文件系统。问题是,微服务不是无状态的,还会出现其他问题:
我想以与数据库类似的方式处理Git存储库,因此所有操作都应该在不使用文件系统,克隆等的情况下完成。 - 只需在远程调用命令即可完成。
我想补充一点,搜索解决方案非常困难,因为" Git微服务"短语很常见但在其他意义上(在存储库中存储源代码)。
编辑:我刚刚找到 Are there any restful interfaces to git? 但任何其他想法都会很好
答案 0 :(得分:1)
尝试从scm4j API获取锁定的工作副本。它可以在共享网络文件夹中创建锁定的文件夹,直到发布后,其他微服务才能使用它。在工作副本中执行任何签出和其他工作。然后,如果提供了相同的存储库URL,它将被重用,因此您只需执行switch + pull,而不执行克隆。如果另一个微服务当前正在使用工作副本,那么另一个可用的服务将被获取并锁定,或者新的微服务将被创建并锁定等等。
{{1}}
}