在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:josh-project/josh开源软件地址:https://github.com/josh-project/josh开源编程语言:Rust 87.5%开源软件介绍:Combine the advantages of a monorepo with those of multirepo setups by leveraging a blazingly-fast, incremental, and reversible implementation of git history filtering.
Use casesPartial cloningReduce scope and size of clones by treating subdirectories of the monorepo as individual repositories.
The partial repo will act as a normal git repository but only contain the files found in the subdirectory and only commits affecting those files. The partial repo supports both fetch as well as push operation. This helps not just to improve performance on the client due to having fewer files in the tree, it also enables collaboration on parts of the monorepo with other parties utilizing git's normal distributed development features. For example, this makes it easy to mirror just selected parts of your repo to public github repositories or specific customers. Project composition / WorkspacesSimplify code sharing and dependency management. Beyond just subdirectories, Josh supports filtering, re-mapping and composition of arbitrary virtual repositories from the content found in the monorepo. The mapping itself is also stored in the repository and therefore versioned alongside the code.
Workspaces act as normal git repos:
Simplified CI/CDWith everything stored in one repo, CI/CD systems only need to look into one source for each particular deliverable. However in traditional monorepo environments dependency mangement is handled by the build system. Build systems are usually tailored to specific languages and need their input already checked out on the filesystem. So the question:
cannot be answered without cloning the entire repository and understanding how the languages used handle dependencies. In particular when using C familiy languages, hidden dependencies on header files are easy to miss. For this reason limiting the visibility of files to the compiler by sandboxing is pretty much a requirement for reproducible builds. With Josh, each deliverable gets it's own virtual git repository with dependencies declared in the This also means the deliverables to be re-build can be determined without cloning any repos like typically necessary with normal build tools. GraphQL APIIt is often desireable to access content stored in git without requiring a clone of the repository. This is usefull for CI/CD systems or web frontends such as dashboards. Josh exposes a GraphQL API for that purpose. For example, it can be used to find all workspaces currently present in the tree:
Caching proxyEven without using the more advanced features like partial cloning or workspaces,
FAQSee here |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论