"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[742],{7457:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>l,metadata:()=>a,toc:()=>h});varn=s(678),i=s(4738),t=(s(6166),s(6920));consto=e=>{let{srcLight:r,srcDark:s,alt:i,title:o,style:l}=e;const{colorMode:c}=(0,t.G)(),a="dark"===c?s:r;return(0,n.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},children:(0,n.jsx)("img",{src:a,alt:i,title:o,style:l})})},l={title:"Overview",hide_title:!0,custom_edit_url:null},c=void0,a={id:"index",title:"Overview",description:"<ThemedImage",source:"@site/docs/index.md",sourceDirName:".",slug:"/",permalink:"/sparo/",draft:!1,unlisted:!1,editUrl:null,tags:[],version:"current",frontMatter:{title:"Overview",hide_title:!0,custom_edit_url:null},sidebar:"docsSidebar",next:{title:"Getting Started",permalink:"/sparo/pages/guide/getting_started"}},d={},h=[{value:"Clone faster!",id:"clone-faster",level:2},{value:"Key features",id:"key-features",level:2},{value:"Quick demo",id:"quick-demo",level:2}];functionp(e){constr={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},children:(0,n.jsx)(o,{srcLight:"images/site/sparo-logo.svg",srcDark:"images/site/sparo-logo-dark.svg",alt:"Sparo",title:"Sparo",style:{width:"380px",paddingTop:"30px"}})}),"\n",(0,n.jsx)(r.h2,{id:"clone-faster",children:"Clone faster!"}),"\n",(0,n.jsx)(r.p,{children:"Sparo optimizes performance of Git operations for your large frontend monorepo."}),"\n",(0,n.jsx)(r.h2,{id:"key-features",children:"Key features"}),"\n",(0,n.jsxs)(r.ul,{children:["\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Familiar interface:"})," The ",(0,n.jsx)(r.code,{children:"sparo"})," command-line interface (CLI) wrapper offers ",(0,n.jsx)(r.strong,{children:"better defaults"})," and ",(0,n.jsx)(r.strong,{children:"performance suggestions"})," without altering the familiar ",(0,n.jsx)(r.code,{children:"git"})," syntax. (The native ",(0,n.jsx)(r.code,{children:"git"})," CLI is also supported.)"]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"A proven solution:"})," Git provides ",(0,n.jsx)(r.a,{href:"/sparo/pages/reference/git_optimization",children:"quite a lot of ingredients"})," for optimizing very large repos; Sparo is your recipe for combining these features intelligently."]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Simplified sparse checkout:"})," Work with sparse checkout ",(0,n.jsx)(r.a,{href:"/sparo/pages/guide/sparo_profiles",children:"profiles"}),' instead of confusing "cones" and globs']}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Frontend integration:"})," Sparo leverages ",(0,n.jsx)(r.a,{href:"https://rushjs.io/",children:"Rush"})," and ",(0,n.jsx)(r.a,{href:"https://pnpm.io/",children:"PNPM"})," workspace configurations, including the ability to automatically checkout project dependencies"]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Dual workflows:"})," The ",(0,n.jsx)(r.code,{children:"sparo-ci"})," tool implements a specialized checkout model optimized for continuous integration (CI) pipelines"]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Extra safeguards"}),": Avoid common Git mistakes such as checkouts with staged files outside the active view"]}),"\n"]}),"\n",(0,n.jsxs)(r.li,{children:["\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Go beyond Git hooks:"})," Optionally collect anonymized Git timing metrics in your monorepo, enabling your build team to set data-driven goals for ",(0,n.jsx)(r.em,{children:"local"}),"developerexperience