"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[742],{7457:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>l,metadata:()=>a,toc:()=>h});varr=n(678),t=n(4738),o=(n(6166),n(6920));consti=e=>{let{srcLight:s,srcDark:n,alt:t,title:i,style:l}=e;const{colorMode:c}=(0,o.G)(),a="dark"===c?n:s;return(0,r.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},children:(0,r.jsx)("img",{src:a,alt:t,title:i,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){consts={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"},children:(0,r.jsx)(i,{srcLight:"images/site/sparo-logo.svg",srcDark:"images/site/sparo-logo-dark.svg",alt:"Sparo",title:"Sparo",style:{width:"380px",paddingTop:"30px"}})}),"\n",(0,r.jsx)(s.h2,{id:"clone-faster",children:"Clone faster!"}),"\n",(0,r.jsx)(s.p,{children:"Sparo optimizes performance of Git operations for your large frontend monorepo."}),"\n",(0,r.jsx)(s.h2,{id:"key-features",children:"Key features"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Familiar interface:"})," The ",(0,r.jsx)(s.code,{children:"sparo"})," command-line interface (CLI) wrapper offers ",(0,r.jsx)(s.strong,{children:"better defaults"})," and ",(0,r.jsx)(s.strong,{children:"performance suggestions"})," without altering the familiar ",(0,r.jsx)(s.code,{children:"git"})," syntax. (The native ",(0,r.jsx)(s.code,{children:"git"})," CLI is also supported.)"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"A proven solution:"})," Git provides ",(0,r.jsx)(s.a,{href:"https://tiktok.github.io/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,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Simplified sparse checkout:"})," Work with sparse checkout ",(0,r.jsx)(s.a,{href:"https://tiktok.github.io/sparo/pages/guide/sparo_profiles/",children:"profiles"}),' instead of confusing "cones" and globs']}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Frontend integration:"})," Sparo leverages ",(0,r.jsx)(s.a,{href:"https://rushjs.io/",children:"Rush"})," and ",(0,r.jsx)(s.a,{href:"https://pnpm.io/",children:"PNPM"})," workspace configurations, including the ability to automatically checkout project dependencies"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Dual workflows:"})," The ",(0,r.jsx)(s.code,{children:"sparo-ci"})," tool implements a specialized checkout model optimized for continuous integration (CI) pipelines"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Extra safeguards"}),": Avoid common Git mistakes such as checkouts with staged files outside the active view"]}),"\n"]}),"\n",(0,r.jsxs)(s.li,{children:["\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.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,r.jsx