All Projects β†’ josh-project β†’ josh

josh-project / josh

Licence: MIT license
Just One Single History

Programming Languages

rust
11053 projects
typescript
32286 projects
SCSS
7915 projects
shell
77523 projects
Dockerfile
14818 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to josh

mindjs
Minimalistic, pure Node.js framework superpowered with Dependency Injection πŸ’‘ πŸ’» πŸš€
Stars: ✭ 17 (-98.19%)
Mutual labels:  monorepo
monorepo
Structure and workflows of our internal git-maven-monorepo
Stars: ✭ 16 (-98.29%)
Mutual labels:  monorepo
relay-starter-kit
πŸ’₯ Monorepo template (seed project) pre-configured with GraphQL API, PostgreSQL, React, Relay, Material UI.
Stars: ✭ 3,513 (+274.92%)
Mutual labels:  monorepo
scm-api-plugin
wiki.jenkins-ci.org/display/jenkins/scm+api+plugin
Stars: ✭ 25 (-97.33%)
Mutual labels:  scm
nrwl-nx-action
A GitHub Action to wrap Nrwl Nx commands in your workflows.
Stars: ✭ 163 (-82.6%)
Mutual labels:  monorepo
yarn-workspaces-simple-monorepo
Yarn Workspaces basic monorepo management without Lerna for coding examples
Stars: ✭ 31 (-96.69%)
Mutual labels:  monorepo
react-monorepo
a simple monorepo setup for react & react-native using yarn workspaces.
Stars: ✭ 40 (-95.73%)
Mutual labels:  monorepo
alfa
β™Ώ Suite of open and standards-based tools for performing reliable accessibility conformance testing at scale
Stars: ✭ 75 (-92%)
Mutual labels:  monorepo
slickgrid-universal
Slickgrid-Universal is a monorepo which includes all Editors, Filters, Extensions, Services and is Framework Agnostic to take full advantage of SlickGrid core lib.
Stars: ✭ 29 (-96.91%)
Mutual labels:  monorepo
clojure-clojurescript-buck
Set of macroses for Buck build system that allows building Clojure and ClojureScript
Stars: ✭ 20 (-97.87%)
Mutual labels:  monorepo
react-ecommerce
E-commerce monorepo application using NextJs, React, React-native, Design-System and Graphql with Typescript
Stars: ✭ 136 (-85.49%)
Mutual labels:  monorepo
neptune-web
Wise Web Design System
Stars: ✭ 55 (-94.13%)
Mutual labels:  monorepo
monoreaper
🌱 Create a monorepo by merging multiple github repositories
Stars: ✭ 21 (-97.76%)
Mutual labels:  monorepo
yarn-plugin-workspace-since
λͺ¨λ…Έλ ˆν¬λ₯Ό μœ„ν•œ yarn berry plugin
Stars: ✭ 120 (-87.19%)
Mutual labels:  monorepo
vscode-monorepo-workspace
πŸ“¦βœ¨Manage monorepos with multi-root workspaces. Supports Lerna, Yarn, Pnpm, Rushjs and recursive package directories.
Stars: ✭ 93 (-90.07%)
Mutual labels:  monorepo
eslint-import-resolver-lerna
Resolver for Lerna-based projects for eslint-plugin-import
Stars: ✭ 47 (-94.98%)
Mutual labels:  monorepo
renestql
React, NestJS & GraphQL monorepo boilerplate managed with nx
Stars: ✭ 25 (-97.33%)
Mutual labels:  monorepo
ftgogo
FTGOGO - event-driven architecture demonstration application using edat
Stars: ✭ 82 (-91.25%)
Mutual labels:  monorepo
lerna-terminal
Powerful cli ui for monorepos
Stars: ✭ 25 (-97.33%)
Mutual labels:  monorepo
terra-framework
Terra framework houses composed and higher order react components to help developers quickly build out new applications.
Stars: ✭ 60 (-93.6%)
Mutual labels:  monorepo

Just One Single History

Combine the advantages of a monorepo with those of multirepo setups by leveraging a blazingly-fast, incremental, and reversible implementation of git history filtering.

josh-proxy can be integrated with any http based git host:

$ docker run -p 8000:8000 -e JOSH_REMOTE=https://github.com -v josh-vol:/data/git joshproject/josh-proxy:latest

Use cases

Partial cloning

Reduce scope and size of clones by treating subdirectories of the monorepo as individual repositories.

$ git clone http://josh/monorepo.git:/path/to/library.git

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 / Workspaces

Simplify 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.

Central monorepo Project workspaces workspace.josh file
Folders and files in central.git Folders and files in project1.git
dependencies = :/modules:[
    ::tools/
    ::library1/
]
Folders and files in project2.git
libs/library1 = :/modules/library1

Workspaces act as normal git repos:

$ git clone http://josh/central.git:workspace=workspaces/project1.git

Simplified CI/CD

With 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:

"What deliverables are affected by a given commit and need to be rebuild?"

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 workspace.josh file. This means answering the above question becomes as simple as comparing commit ids. Furthermore due to the tree filtering each build is guaranteed to be perfectly sandboxed and only sees those parts of the monorepo that have actually been mapped.

This also means the deliverables to be re-build can be determined without cloning any repos like typically necessary with normal build tools.

GraphQL API

It 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:

query {
  rev(at:"refs/heads/master", filter:"::**/workspace.josh") {
    files { path }
  }
}

Caching proxy

Even without using the more advanced features like partial cloning or workspaces, josh-proxy can act as a cache to reduce traffic between locations or keep your CI from performing many requests to the main git host.

FAQ

See here

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].