just-git 1.2.6 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -76
- package/dist/index.d.ts +15 -7
- package/dist/index.js +203 -201
- package/dist/repo/index.d.ts +46 -1
- package/dist/repo/index.js +11 -9
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var od=Object.defineProperty;var Rs=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ee=(e,t)=>()=>(e&&(t=e(e=0)),t);var id=(e,t)=>{for(var n in t)od(e,n,{get:t[n],enumerable:!0})};function Os(e){if(e==="")return".";if(e==="/")return"/";let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=e.split("/"),o=[];for(let i of r)i===""||i==="."||(i===".."?t||o.length>0&&o[o.length-1]!==".."?o.pop():o.push(".."):o.push(i));let s=o.join("/");return t&&(s=`/${s}`),n&&s.length>1&&!s.endsWith("/")&&(s+="/"),s||(t?"/":n?"./":".")}function T(...e){if(e.length===0)return".";let t=e.filter(n=>n!=="").join("/");return t===""?".":Os(t)}function It(...e){let t="";for(let n=e.length-1;n>=0;n--){let r=e[n];if(r&&(t=t?`${r}/${t}`:r,r.charCodeAt(0)===47))break}return Os(t||".")}function Zt(e){if(e==="")return".";if(e==="/")return"/";let t=e.length;for(;t>1&&e.charCodeAt(t-1)===47;)t--;let n=e.slice(0,t),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}function Mr(e,t){if(e==="")return"";let n=e.length;for(;n>1&&e.charCodeAt(n-1)===47;)n--;let r=e.slice(0,n);if(r==="/")return"";let o=r.lastIndexOf("/"),s=o===-1?r:r.slice(o+1);return t&&s.endsWith(t)&&s.length>t.length?s.slice(0,s.length-t.length):s}function ft(e,t){let n=Os(e),r=Os(t);if(n.length>1&&n.endsWith("/")&&(n=n.slice(0,-1)),r.length>1&&r.endsWith("/")&&(r=r.slice(0,-1)),n===r)return"";let o=n==="/"?[""]:n.split("/"),s=r==="/"?[""]:r.split("/"),i=n.charCodeAt(0)===47,a=r.charCodeAt(0)===47,f=i&&a?1:0,l=Math.min(o.length,s.length);for(;f<l&&o[f]===s[f];)f++;let d=o.length-f,u=s.slice(f),m=[];for(let h=0;h<d;h++)m.push("..");for(let h of u)m.push(h);return m.join("/")||"."}var le=Ee(()=>{"use strict"});function Bo(e){let t=1,n="";for(;t<e.length;){let r=e[t];if(r==="]"||r===" "||r===" "||r==='"')break;if(r==="."){t++;let o="";for(;t<e.length&&e[t]!=="]";)o+=e[t],t++;return`${n.toLowerCase()} "${o.toLowerCase()}"`}n+=r,t++}if(n=n.toLowerCase(),!n)return null;for(;t<e.length&&(e[t]===" "||e[t]===" ");)t++;if(t<e.length&&e[t]==='"'){t++;let r="";for(;t<e.length&&e[t]!=='"';)e[t]==="\\"&&t+1<e.length?(r+=e[t+1],t+=2):(r+=e[t],t++);return`${n} "${r}"`}return n}function
|
|
1
|
+
var od=Object.defineProperty;var Rs=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Ee=(e,t)=>()=>(e&&(t=e(e=0)),t);var id=(e,t)=>{for(var n in t)od(e,n,{get:t[n],enumerable:!0})};function Os(e){if(e==="")return".";if(e==="/")return"/";let t=e.charCodeAt(0)===47,n=e.charCodeAt(e.length-1)===47,r=e.split("/"),o=[];for(let i of r)i===""||i==="."||(i===".."?t||o.length>0&&o[o.length-1]!==".."?o.pop():o.push(".."):o.push(i));let s=o.join("/");return t&&(s=`/${s}`),n&&s.length>1&&!s.endsWith("/")&&(s+="/"),s||(t?"/":n?"./":".")}function T(...e){if(e.length===0)return".";let t=e.filter(n=>n!=="").join("/");return t===""?".":Os(t)}function It(...e){let t="";for(let n=e.length-1;n>=0;n--){let r=e[n];if(r&&(t=t?`${r}/${t}`:r,r.charCodeAt(0)===47))break}return Os(t||".")}function Zt(e){if(e==="")return".";if(e==="/")return"/";let t=e.length;for(;t>1&&e.charCodeAt(t-1)===47;)t--;let n=e.slice(0,t),r=n.lastIndexOf("/");return r===-1?".":r===0?"/":n.slice(0,r)}function Mr(e,t){if(e==="")return"";let n=e.length;for(;n>1&&e.charCodeAt(n-1)===47;)n--;let r=e.slice(0,n);if(r==="/")return"";let o=r.lastIndexOf("/"),s=o===-1?r:r.slice(o+1);return t&&s.endsWith(t)&&s.length>t.length?s.slice(0,s.length-t.length):s}function ft(e,t){let n=Os(e),r=Os(t);if(n.length>1&&n.endsWith("/")&&(n=n.slice(0,-1)),r.length>1&&r.endsWith("/")&&(r=r.slice(0,-1)),n===r)return"";let o=n==="/"?[""]:n.split("/"),s=r==="/"?[""]:r.split("/"),i=n.charCodeAt(0)===47,a=r.charCodeAt(0)===47,f=i&&a?1:0,l=Math.min(o.length,s.length);for(;f<l&&o[f]===s[f];)f++;let d=o.length-f,u=s.slice(f),m=[];for(let h=0;h<d;h++)m.push("..");for(let h of u)m.push(h);return m.join("/")||"."}var le=Ee(()=>{"use strict"});function Bo(e){let t=1,n="";for(;t<e.length;){let r=e[t];if(r==="]"||r===" "||r===" "||r==='"')break;if(r==="."){t++;let o="";for(;t<e.length&&e[t]!=="]";)o+=e[t],t++;return`${n.toLowerCase()} "${o.toLowerCase()}"`}n+=r,t++}if(n=n.toLowerCase(),!n)return null;for(;t<e.length&&(e[t]===" "||e[t]===" ");)t++;if(t<e.length&&e[t]==='"'){t++;let r="";for(;t<e.length&&e[t]!=='"';)e[t]==="\\"&&t+1<e.length?(r+=e[t+1],t+=2):(r+=e[t],t++);return`${n} "${r}"`}return n}function $a(e,t,n){let r="",o=!1,s=0,i=!1,a=n,c=e,f=0;e:for(;;){for(;f<c.length;){let d=c[f];if(d==="\r"){f++;continue}if(!o&&(d==="#"||d===";"))break e;if(!o&&(d===" "||d===" ")){i&&s++,f++;continue}if(d==='"'){l(),o=!o,f++;continue}if(d==="\\"){if(f+1>=c.length){if(a++,a<t.length){c=t[a],f=0;continue}break e}let u=c[f+1];switch(l(),u){case"\\":r+="\\";break;case'"':r+='"';break;case"n":r+=`
|
|
2
2
|
`;break;case"t":r+=" ";break;case"b":r+="\b";break;default:r+="\\",r+=u;break}i=!0,f+=2;continue}l(),r+=d,i=!0,f++}break}return{value:r,linesConsumed:a-n+1};function l(){for(;s>0;)r+=" ",s--}}function dd(e){let t={},n=null,r=e.split(`
|
|
3
|
-
`),o=0;for(;o<r.length;){let i=r[o].trim();if(!i||i.startsWith("#")||i.startsWith(";")){o++;continue}if(i.startsWith("[")){n=Bo(i),n!==null&&!(n in t)&&(t[n]={}),o++;continue}if(n!==null){let a=t[n];if(!a){o++;continue}let c=i.indexOf("=");if(c===-1)a[i.toLowerCase()]="true",o++;else{let f=i.slice(0,c).trim().toLowerCase(),l=i.slice(c+1),{value:d,linesConsumed:u}
|
|
4
|
-
`),o=0;for(;o<r.length;){let i=r[o].trim();if(!i||i.startsWith("#")||i.startsWith(";")){o++;continue}if(i.startsWith("[")){n=Bo(i),n!==null&&!(n in t)&&(t[n]={}),o++;continue}if(n!==null){let a=t[n];if(!a){o++;continue}let c=i.indexOf("=");if(c===-1){let f=i.toLowerCase();f in a?a[f].push("true"):a[f]=["true"],o++}else{let f=i.slice(0,c).trim().toLowerCase(),l=i.slice(c+1),{value:d,linesConsumed:u}
|
|
3
|
+
`),o=0;for(;o<r.length;){let i=r[o].trim();if(!i||i.startsWith("#")||i.startsWith(";")){o++;continue}if(i.startsWith("[")){n=Bo(i),n!==null&&!(n in t)&&(t[n]={}),o++;continue}if(n!==null){let a=t[n];if(!a){o++;continue}let c=i.indexOf("=");if(c===-1)a[i.toLowerCase()]="true",o++;else{let f=i.slice(0,c).trim().toLowerCase(),l=i.slice(c+1),{value:d,linesConsumed:u}=$a(l,r,o);a[f]=d,o+=u}continue}o++}return t}function Wo(e){let t={},n=null,r=e.split(`
|
|
4
|
+
`),o=0;for(;o<r.length;){let i=r[o].trim();if(!i||i.startsWith("#")||i.startsWith(";")){o++;continue}if(i.startsWith("[")){n=Bo(i),n!==null&&!(n in t)&&(t[n]={}),o++;continue}if(n!==null){let a=t[n];if(!a){o++;continue}let c=i.indexOf("=");if(c===-1){let f=i.toLowerCase();f in a?a[f].push("true"):a[f]=["true"],o++}else{let f=i.slice(0,c).trim().toLowerCase(),l=i.slice(c+1),{value:d,linesConsumed:u}=$a(l,r,o);f in a?a[f].push(d):a[f]=[d],o+=u}continue}o++}return t}function qo(e){let t=/[\n\t\b#;"]/.test(e)||e!==e.trim(),n="";for(let r=0;r<e.length;r++){let o=e[r];switch(o){case"\\":n+="\\\\";break;case'"':n+='\\"';break;case`
|
|
5
5
|
`:n+="\\n";break;case" ":n+="\\t";break;case"\b":n+="\\b";break;default:n+=o}}return t?`"${n}"`:n}function zo(e){let t=[];for(let[n,r]of Object.entries(e)){t.push(`[${n}]`);for(let[o,s]of Object.entries(r))t.push(` ${o} = ${qo(s)}`)}return`${t.join(`
|
|
6
6
|
`)}
|
|
7
7
|
`}function Ko(e,t,n){let r=null,o=-1,s=-1,i=-1,a=-1,c=!1,f=0;for(;f<e.length;){let l=e[f].trim();if(!l||l.startsWith("#")||l.startsWith(";")){f++;continue}if(l.startsWith("[")){r=Bo(l),r===t&&(a=f,i=f,c=!1),f++;continue}let d=f;for(;d<e.length-1&&e[d].replace(/\r$/,"").endsWith("\\");)d++;if(r===t){let u=l.indexOf("=");(u===-1?l.toLowerCase():l.slice(0,u).trim().toLowerCase())===n?(o=f,s=d):c=!0,i=d}f=d+1}return{keyStart:o,keyEnd:s,insertAfter:i,sectionHeaderLine:a,sectionHasOtherKeys:c}}function ud(e,t,n,r){let o=e.split(`
|
|
8
8
|
`),s=Ko(o,t,n),i=` ${n} = ${qo(r)}`;return s.keyStart!==-1?o.splice(s.keyStart,s.keyEnd-s.keyStart+1,i):s.insertAfter!==-1?o.splice(s.insertAfter+1,0,i):(o.some(c=>c.trim().length>0)&&o.length>0&&o[o.length-1].trim()!==""&&o.push(""),o.push(`[${t}]`,i)),o.join(`
|
|
9
9
|
`)}function md(e,t,n){let r=e.split(`
|
|
10
10
|
`),o=Ko(r,t,n);return o.keyStart===-1?{text:e,found:!1}:(r.splice(o.keyStart,o.keyEnd-o.keyStart+1),!o.sectionHasOtherKeys&&o.sectionHeaderLine!==-1&&r.splice(o.sectionHeaderLine,1),{text:r.join(`
|
|
11
|
-
`),found:!0})}async function he(e){let t=T(e.gitDir,"config");if(!await e.fs.exists(t))return{};let n=await e.fs.readFile(t);return dd(n)}async function Is(e){let t=T(e.gitDir,"config");return await e.fs.exists(t)?e.fs.readFile(t):""}async function Ye(e,t){let n=T(e.gitDir,"config");await e.fs.writeFile(n,zo(t))}async function ke(e,t){let n=e.configOverrides,r=n?.locked?.[t];if(r!==void 0)return r;let o=await he(e),{section:s,key:i}=jr(t),a=o[s]?.[i];return a!==void 0?a:n?.defaults?.[t]}async function Vo(e,t,n){let r=await Is(e),{section:o,key:s}=jr(t),i=ud(r,o,s,n),a=T(e.gitDir,"config");await e.fs.writeFile(a,i)}async function
|
|
11
|
+
`),found:!0})}async function he(e){let t=T(e.gitDir,"config");if(!await e.fs.exists(t))return{};let n=await e.fs.readFile(t);return dd(n)}async function Is(e){let t=T(e.gitDir,"config");return await e.fs.exists(t)?e.fs.readFile(t):""}async function Ye(e,t){let n=T(e.gitDir,"config");await e.fs.writeFile(n,zo(t))}async function ke(e,t){let n=e.configOverrides,r=n?.locked?.[t];if(r!==void 0)return r;let o=await he(e),{section:s,key:i}=jr(t),a=o[s]?.[i];return a!==void 0?a:n?.defaults?.[t]}async function Vo(e,t,n){let r=await Is(e),{section:o,key:s}=jr(t),i=ud(r,o,s,n),a=T(e.gitDir,"config");await e.fs.writeFile(a,i)}async function Sa(e,t){let n=e.configOverrides,r=n?.locked?.[t];if(r!==void 0)return[r];let o=await Is(e);if(o){let i=Wo(o),{section:a,key:c}=jr(t),f=i[a]?.[c];if(f&&f.length>0)return f}let s=n?.defaults?.[t];return s!==void 0?[s]:[]}function hd(e,t,n,r){let o=e.split(`
|
|
12
12
|
`),s=Ko(o,t,n),i=` ${n} = ${qo(r)}`;return s.insertAfter!==-1?o.splice(s.insertAfter+1,0,i):(o.some(c=>c.trim().length>0)&&o.length>0&&o[o.length-1].trim()!==""&&o.push(""),o.push(`[${t}]`,i)),o.join(`
|
|
13
|
-
`)}async function Ta(e,t,n){let r=await Is(e),{section:o,key:s}=jr(t),i=hd(r,o,s,n),a=T(e.gitDir,"config");await e.fs.writeFile(a,i)}async function va(e,t){let n=await Is(e),{section:r,key:o}=jr(t),s=md(n,r,o);if(!s.found)return!1;let i=T(e.gitDir,"config");return await e.fs.writeFile(i,s.text),!0}function jr(e){let t=e.split(".");if(t.length===2){let[n="",r=""]=t;return{section:n,key:r.toLowerCase()}}if(t.length===3){let[n="",r="",o=""]=t;return{section:`${n} "${r}"`,key:o.toLowerCase()}}throw new Error(`Invalid config key: "${e}"`)}var Ne=Ee(()=>{"use strict";le()});function
|
|
13
|
+
`)}async function Ta(e,t,n){let r=await Is(e),{section:o,key:s}=jr(t),i=hd(r,o,s,n),a=T(e.gitDir,"config");await e.fs.writeFile(a,i)}async function va(e,t){let n=await Is(e),{section:r,key:o}=jr(t),s=md(n,r,o);if(!s.found)return!1;let i=T(e.gitDir,"config");return await e.fs.writeFile(i,s.text),!0}function jr(e){let t=e.split(".");if(t.length===2){let[n="",r=""]=t;return{section:n,key:r.toLowerCase()}}if(t.length===3){let[n="",r="",o=""]=t;return{section:`${n} "${r}"`,key:o.toLowerCase()}}throw new Error(`Invalid config key: "${e}"`)}var Ne=Ee(()=>{"use strict";le()});function $s(e,t){return Ha(e,t,"author")}function Gr(e,t){return Ha(e,t,"committer")}async function Ha(e,t,n){let r=pd[n],o=e.identityOverride,{timestamp:s,timezone:i}=gd(t.get(r.date));if(o?.locked)return{name:o.name,email:o.email,timestamp:s,timezone:i};let a=t.get(r.name)??await ke(e,"user.name")??o?.name,c=t.get(r.email)??await ke(e,"user.email")??o?.email;if(!a||!c)throw new Error(`${n.charAt(0).toUpperCase()}${n.slice(1)} identity unknown
|
|
14
14
|
|
|
15
15
|
*** Please tell me who you are.
|
|
16
16
|
|
|
@@ -18,7 +18,7 @@ Run
|
|
|
18
18
|
|
|
19
19
|
git config user.email "you@example.com"
|
|
20
20
|
git config user.name "Your Name"
|
|
21
|
-
`);return{name:a,email:c,timestamp:s,timezone:i}}async function Jt(e,t){try{let n=await Gr(e,t);return{name:n.name,email:n.email,timestamp:n.timestamp,tz:n.timezone}}catch{return{name:t.get("GIT_COMMITTER_NAME")??"",email:t.get("GIT_COMMITTER_EMAIL")??"",timestamp:Math.floor(Date.now()/1e3),tz:"+0000"}}}function gd(e){let t={timestamp:Math.floor(Date.now()/1e3),timezone:"+0000"};if(!e)return t;let n=e.trim();if(!n)return t;if(n.startsWith("@")){let s=n.slice(1).trim(),i=parseInt(s,10);if(!Number.isNaN(i))return{timestamp:i,timezone:"+0000"}}if(/^\d+$/.test(n))return{timestamp:parseInt(n,10),timezone:"+0000"};let r=n.match(/^(\d+)\s+([+-]\d{4})$/);if(r)return{timestamp:parseInt(r[1],10),timezone:r[2]};let o=Date.parse(n);return Number.isNaN(o)?t:{timestamp:Math.floor(o/1e3),timezone:wd(n)}}function wd(e){if(/Z$/i.test(e))return"+0000";let t=e.match(/([+-])(\d{2}):(\d{2})$/);if(t)return`${t[1]}${t[2]}${t[3]}`;let n=e.match(/([+-]\d{4})$/);return n?n[1]:"+0000"}var pd,Cn=Ee(()=>{"use strict";Ne();pd={author:{name:"GIT_AUTHOR_NAME",email:"GIT_AUTHOR_EMAIL",date:"GIT_AUTHOR_DATE"},committer:{name:"GIT_COMMITTER_NAME",email:"GIT_COMMITTER_EMAIL",date:"GIT_COMMITTER_DATE"}}});function Pn(e){let t="";for(let n=0;n<20;n++)t+=Aa[e[n]];return t}function $s(e,t){let n="";for(let r=0;r<20;r++)n+=Aa[e[t+r]];return n}function St(e){let t=new Uint8Array(20);for(let n=0;n<20;n++)t[n]=parseInt(e.slice(n*2,n*2+2),16);return t}var te,Aa,dt=Ee(()=>{"use strict";te="0000000000000000000000000000000000000000",Aa=(()=>{let e=new Array(256);for(let t=0;t<256;t++)e[t]=(t>>4).toString(16)+(t&15).toString(16);return e})()});function Yo(e){return typeof e=="string"?bd.encode(e):e}function yd(){if(typeof globalThis.Bun<"u")return()=>{let e=new Bun.CryptoHasher("sha1"),t={update(n){return e.update(Yo(n)),t},hex:()=>Promise.resolve(e.digest("hex"))};return t};try{let e=Rs(["node","crypto"].join(":"));if(typeof e.createHash=="function")return()=>{let t=e.createHash("sha1"),n={update(r){return t.update(Yo(r)),n},hex:()=>Promise.resolve(t.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let e=[],t={update(n){return e.push(Yo(n)),t},async hex(){let n=0;for(let i of e)n+=i.byteLength;let r=new Uint8Array(n),o=0;for(let i of e)r.set(i,o),o+=i.byteLength;let s=await crypto.subtle.digest("SHA-1",r);return Pn(new Uint8Array(s))}};return t};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}async function mr(e){return Da().update(e).hex()}var bd,Da,Vn,Yn=Ee(()=>{"use strict";dt();bd=new TextEncoder;Da=yd(),Vn=Da});async function K(e){let t=T(e.gitDir,"index");if(!await e.fs.exists(t))return{version:Xo,entries:[]};let n=await e.fs.readFileBuffer(t);return Ed(n)}async function ae(e,t){let n=T(e.gitDir,"index"),r=await kd(t);await e.fs.writeFile(n,r)}function yt(e,t){let n;return t.stage===0?n=e.entries.filter(r=>r.path!==t.path):n=e.entries.filter(r=>!(r.path===t.path&&r.stage===t.stage)),n.push(t),n.sort(Zo),{...e,entries:n}}function at(e,t){return{...e,entries:e.entries.filter(n=>n.path!==t)}}function Ts(e,t,n=0){return e.entries.find(r=>r.path===t&&r.stage===n)}function $t(e){return e.entries.some(t=>t.stage>0)}function Bt(e){return[...new Set(e.entries.filter(t=>t.stage>0).map(t=>t.path))]}function je(e){return e.entries.filter(t=>t.stage===0)}function ja(){return{version:Xo,entries:[]}}function vs(e){let t=[...e].sort(Zo);return{version:Xo,entries:t}}function Ie(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}function Ed(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=0,r=t.getUint32(n);if(n+=4,r!==Ma)throw new Error(`Invalid index signature: 0x${r.toString(16)}`);let o=t.getUint32(n);n+=4;let s=t.getUint32(n);n+=4;let i=[];for(let a=0;a<s;a++){let c=n,f={ctimeSeconds:t.getUint32(n),ctimeNanoseconds:t.getUint32(n+4),mtimeSeconds:t.getUint32(n+8),mtimeNanoseconds:t.getUint32(n+12),dev:t.getUint32(n+16),ino:t.getUint32(n+20),uid:t.getUint32(n+28),gid:t.getUint32(n+32),size:t.getUint32(n+36)},l=t.getUint32(n+24);n+=40;let d=e.subarray(n,n+20),u=Pn(d);n+=20;let m=t.getUint16(n);n+=2;let h=m>>12&3,p=m&4095,g,w;if(p<4095)w=new TextDecoder().decode(e.subarray(n,n+p)),g=p;else{let b=n;for(;b<e.byteLength&&e[b]!==0;)b++;w=new TextDecoder().decode(e.subarray(n,b)),g=b-n}let y=62+g+1,x=Math.ceil(y/8)*8;n=c+x,i.push({path:w,mode:l,hash:u,stage:h,stat:f})}return{version:o,entries:i}}async function kd(e){let t=new TextEncoder,n=[...e.entries].sort(Zo),r=[],o=12;for(let u of n){let m=t.encode(u.path);r.push(m);let h=62+m.byteLength+1;o+=Math.ceil(h/8)*8}o+=20;let s=new ArrayBuffer(o),i=new Uint8Array(s),a=new DataView(s),c=0;a.setUint32(c,Ma),c+=4,a.setUint32(c,e.version),c+=4,a.setUint32(c,n.length),c+=4;for(let u=0;u<n.length;u++){let m=n[u],h=r[u],p=c;a.setUint32(c,m.stat.ctimeSeconds),a.setUint32(c+4,m.stat.ctimeNanoseconds),a.setUint32(c+8,m.stat.mtimeSeconds),a.setUint32(c+12,m.stat.mtimeNanoseconds),a.setUint32(c+16,m.stat.dev),a.setUint32(c+20,m.stat.ino),a.setUint32(c+24,m.mode),a.setUint32(c+28,m.stat.uid),a.setUint32(c+32,m.stat.gid),a.setUint32(c+36,m.stat.size),c+=40;let g=St(m.hash);i.set(g,c),c+=20;let w=Math.min(h.byteLength,4095),y=(m.stage&3)<<12|w;a.setUint16(c,y),c+=2,i.set(h,c),c+=h.byteLength,i[c]=0,c+=1;let x=62+h.byteLength+1,b=Math.ceil(x/8)*8;c=p+b}let f=i.subarray(0,c),l=await mr(f),d=St(l);return i.set(d,c),i}function Zo(e,t){return e.path<t.path?-1:e.path>t.path?1:e.stage-t.stage}var Ma,Xo,Pe=Ee(()=>{"use strict";dt();le();Yn();Ma=1145655875,Xo=2});var Rd,Hs,Ga=Ee(()=>{"use strict";Rd=new Set(["tree","commit","tag"]),Hs=class{map=new Map;currentBytes=0;maxBytes;constructor(t=16*1024*1024){this.maxBytes=t}get(t){return this.map.get(t)}set(t,n){if(!Rd.has(n.type))return;let r=n.content.byteLength;if(!(r>this.maxBytes/2)&&!this.map.has(t)){for(;this.currentBytes+r>this.maxBytes&&this.map.size>0;){let o=this.map.keys().next().value;this.currentBytes-=this.map.get(o).content.byteLength,this.map.delete(o)}this.map.set(t,n),this.currentBytes+=r}}get size(){return this.map.size}get bytes(){return this.currentBytes}clear(){this.map.clear(),this.currentBytes=0}}});function Jo(e){let t=4294967295;for(let n=0;n<e.byteLength;n++)t=La[(t^e[n])&255]^t>>>8;return(t^4294967295)>>>0}var La,_a=Ee(()=>{"use strict";La=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;La[e]=t}});function Va(e){let t=Ka(e);return za(e.subarray(t,-4),{i:2})}function ni(e){let t=Ka(e),n={i:2},r=za(e.subarray(t),n),o=qa(n.p);return{result:r,bytesConsumed:t+o+4}}var qt,hr,xd,Na,Fa,Cd,Ua,Ba,Pd,ti,Lr,_r,Wa,Od,Id,Qo,Wt,ei,qa,Sd,Qt,za,Ka,Ya=Ee(()=>{"use strict";qt=Uint8Array,hr=Uint16Array,xd=Int32Array,Na=new qt([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Fa=new qt([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Cd=new qt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ua=(e,t)=>{let n=new hr(31);for(let o=0;o<31;++o)n[o]=t+=1<<e[o-1];let r=new xd(n[30]);for(let o=1;o<30;++o)for(let s=n[o];s<n[o+1];++s)r[s]=s-n[o]<<5|o;return{b:n,r}},{b:Ba}=Ua(Na,2);Ba[28]=258;({b:Pd}=Ua(Fa,0)),ti=new hr(32768);for(let e=0;e<32768;++e){let t=(e&43690)>>1|(e&21845)<<1;t=(t&52428)>>2|(t&13107)<<2,t=(t&61680)>>4|(t&3855)<<4,ti[e]=((t&65280)>>8|(t&255)<<8)>>1}Lr=(e,t,n)=>{let r=e.length,o=0,s=new hr(t);for(;o<r;++o)e[o]&&++s[e[o]-1];let i=new hr(t);for(o=1;o<t;++o)i[o]=i[o-1]+s[o-1]<<1;let a;if(n){a=new hr(1<<t);let c=15-t;for(o=0;o<r;++o)if(e[o]){let f=o<<4|e[o],l=t-e[o],d=i[e[o]-1]++<<l;for(let u=d|(1<<l)-1;d<=u;++d)a[ti[d]>>c]=f}}else for(a=new hr(r),o=0;o<r;++o)e[o]&&(a[o]=ti[i[e[o]-1]++]>>15-e[o]);return a},_r=new qt(288);for(let e=0;e<144;++e)_r[e]=8;for(let e=144;e<256;++e)_r[e]=9;for(let e=256;e<280;++e)_r[e]=7;for(let e=280;e<288;++e)_r[e]=8;Wa=new qt(32);for(let e=0;e<32;++e)Wa[e]=5;Od=Lr(_r,9,1),Id=Lr(Wa,5,1),Qo=e=>{let t=e[0];for(let n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},Wt=(e,t,n)=>{let r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},ei=(e,t)=>{let n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},qa=e=>(e+7)/8|0,Sd=(e,t,n)=>((t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new qt(e.subarray(t,n))),Qt=(e,t)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(t||n[e]||"unknown inflate error")},za=(e,t,n,r)=>{let o=e.length,s=r?r.length:0;if(!o||t.f&&!t.l)return n||new qt(0);let i=!n,a=i||t.i!=2,c=t.i;i&&(n=new qt(o*3));let f=y=>{let x=n.length;if(y>x){let b=new qt(Math.max(x*2,y));b.set(n),n=b}},l=t.f||0,d=t.p||0,u=t.b||0,m=t.l,h=t.d,p=t.m,g=t.n,w=o*8;do{if(!m){l=Wt(e,d,1);let k=Wt(e,d+1,3);if(d+=3,k)if(k==1)m=Od,h=Id,p=9,g=5;else if(k==2){let E=Wt(e,d,31)+257,R=Wt(e,d+10,15)+4,P=E+Wt(e,d+5,31)+1;d+=14;let C=new qt(P),v=new qt(19);for(let $=0;$<R;++$)v[Cd[$]]=Wt(e,d+$*3,7);d+=R*3;let D=Qo(v),O=(1<<D)-1,H=Lr(v,D,1);for(let $=0;$<P;){let N=H[Wt(e,d,O)];d+=N&15;let B=N>>4;if(B<16)C[$++]=B;else{let z=0,_=0;for(B==16?(_=3+Wt(e,d,3),d+=2,z=C[$-1]):B==17?(_=3+Wt(e,d,7),d+=3):B==18&&(_=11+Wt(e,d,127),d+=7);_--;)C[$++]=z}}let G=C.subarray(0,E),A=C.subarray(E);p=Qo(G),g=Qo(A),m=Lr(G,p,1),h=Lr(A,g,1)}else Qt(1);else{let E=qa(d)+4,R=e[E-4]|e[E-3]<<8,P=E+R;if(P>o){c&&Qt(0);break}a&&f(u+R),n.set(e.subarray(E,P),u),t.b=u+=R,t.p=d=P*8,t.f=l;continue}if(d>w){c&&Qt(0);break}}a&&f(u+131072);let y=(1<<p)-1,x=(1<<g)-1,b=d;for(;;b=d){let k=m[ei(e,d)&y],E=k>>4;if(d+=k&15,d>w){c&&Qt(0);break}if(k||Qt(2),E<256)n[u++]=E;else if(E==256){b=d,m=null;break}else{let R=E-254;if(E>264){let O=E-257,H=Na[O];R=Wt(e,d,(1<<H)-1)+Ba[O],d+=H}let P=h[ei(e,d)&x],C=P>>4;P||Qt(3),d+=P&15;let v=Pd[C];if(C>3){let O=Fa[C];v+=ei(e,d)&(1<<O)-1,d+=O}if(d>w){c&&Qt(0);break}a&&f(u+131072);let D=u+R;if(u<v){let O=s-v,H=Math.min(v,D);for(O+u<0&&Qt(3);u<H;++u)n[u]=r[O+u]}for(;u<D;++u)n[u]=n[u-v]}}t.l=m,t.p=b,t.b=u,t.f=l,m&&(l=1,t.m=p,t.d=h,t.n=g)}while(!l);return u!=n.length&&i?Sd(n,0,u):n.subarray(0,u)},Ka=e=>(((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&Qt(0,"invalid zlib data"),e[1]&32&&Qt(0,"zlib dictionaries are not supported"),2)});async function $d(){let e;if(!(typeof document<"u"))try{e=Rs(["node","zlib"].join(":"))}catch{try{e=await import(["node","zlib"].join(":"))}catch{}}if(e&&typeof e.deflateSync=="function"&&typeof e.inflateSync=="function"){let r=null;try{let o=e.inflateSync(e.deflateSync(Buffer.from("x")),{info:!0});o?.engine&&typeof o.engine.bytesWritten=="number"&&(r=s=>{let i=e.inflateSync(s,{info:!0});return{result:new Uint8Array(i.buffer),bytesConsumed:i.engine.bytesWritten}})}catch{}return{deflateSync:o=>new Uint8Array(e.deflateSync(o)),inflateSync:o=>new Uint8Array(e.inflateSync(o)),inflateWithConsumed:r??ni}}let n;return typeof globalThis.CompressionStream=="function"?n=async r=>{let o=new CompressionStream("deflate"),s=o.writable.getWriter();return s.write(r),s.close(),new Uint8Array(await new Response(o.readable).arrayBuffer())}:n=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:n,inflateSync:Va,inflateWithConsumed:ni}}function ri(){return Td??=$d()}async function Nr(e){return await(await ri()).deflateSync(e)}async function pr(e){return await(await ri()).inflateSync(e)}async function Xa(e,t){let n=await ri(),{result:r,bytesConsumed:o}=n.inflateWithConsumed(e);if(r.byteLength!==t)throw new Error(`Inflate size mismatch: got ${r.byteLength}, expected ${t}`);return{result:r,bytesConsumed:o}}var Td,As=Ee(()=>{"use strict";Ya();Td=null});async function sc(e,t){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==oi)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${oi.toString(16)})`);let o=n.getUint32(4);if(o!==Qa)throw new Error(`Unsupported pack version: ${o}`);let s=n.getUint32(8),i=[],a=12;for(let f=0;f<s;f++){let l=await Ad(e,a);i.push(l),a=l.nextOffset}return(await Dd(i,t)).map((f,l)=>({...f,offset:i[l].headerOffset,nextOffset:i[l].nextOffset}))}async function Ad(e,t){let n=t,r=e[t++],o=r>>4&7,s=r&15,i=4;for(;r&128;)r=e[t++],s|=(r&127)<<i,i+=7;let a,c;if(o===Fr){let d=e[t++];for(a=d&127;d&128;)a+=1,d=e[t++],a=(a<<7)+(d&127);a=n-a}else o===ii&&(c=$s(e,t),t+=20);let{result:f,bytesConsumed:l}=await Xa(e.subarray(t),s);return{headerOffset:n,typeNum:o,inflated:f,baseOffset:a,baseHash:c,nextOffset:t+l}}async function Dd(e,t){let n=new Map;for(let s=0;s<e.length;s++)n.set(e[s].headerOffset,s);let r=new Array(e.length).fill(null);async function o(s){let i=r[s];if(i)return i;let a=e[s];if(a.typeNum!==Fr&&a.typeNum!==ii){let u=vd[a.typeNum];if(!u)throw new Error(`Unknown object type: ${a.typeNum}`);let m={type:u,content:a.inflated,hash:await si(u,a.inflated)};return r[s]=m,m}if(a.typeNum===Fr){let u=n.get(a.baseOffset);if(u===void 0)throw new Error(`OFS_DELTA base not found at offset ${a.baseOffset}`);let m=await o(u),h=Ur(m.content,a.inflated),p={type:m.type,content:h,hash:await si(m.type,h)};return r[s]=p,p}let c=await Md(e,r,a.baseHash,o),f;if(c!==void 0)f=await o(c);else if(t){let u=await t(a.baseHash);u&&(f=u)}if(!f)throw new Error(`REF_DELTA base not found for hash ${a.baseHash}`);let l=Ur(f.content,a.inflated),d={type:f.type,content:l,hash:await si(f.type,l)};return r[s]=d,d}for(let s=0;s<e.length;s++)await o(s);return r}async function Md(e,t,n,r){for(let o=0;o<t.length;o++)if(t[o]?.hash===n)return o;for(let o=0;o<e.length;o++){let s=e[o];if(s.typeNum!==Fr&&s.typeNum!==ii&&(await r(o)).hash===n)return o}}function Ur(e,t){let n=0,{value:r,newPos:o}=Ja(t,n);if(n=o,r!==e.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${e.byteLength}`);let{value:s,newPos:i}=Ja(t,n);n=i;let a=new Uint8Array(s),c=0;for(;n<t.byteLength;){let f=t[n++];if(f&128){let l=0,d=0;f&1&&(l=t[n++]),f&2&&(l|=t[n++]<<8),f&4&&(l|=t[n++]<<16),f&8&&(l|=t[n++]<<24),f&16&&(d=t[n++]),f&32&&(d|=t[n++]<<8),f&64&&(d|=t[n++]<<16),d===0&&(d=65536),a.set(e.subarray(l,l+d),c),c+=d}else if(f>0)a.set(t.subarray(n,n+f),c),c+=f,n+=f;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==s)throw new Error(`Delta produced ${c} bytes, expected ${s}`);return a}async function Ds(e){let t=[],n=new Map,r=new Uint8Array(12),o=new DataView(r.buffer);o.setUint32(0,oi),o.setUint32(4,Qa),o.setUint32(8,e.length),t.push(r);let s=12,i=[];for(let a of e){let c=s;n.set(a.hash,s);let f=a.delta&&a.deltaBaseHash?n.get(a.deltaBaseHash):void 0;if(a.delta&&f!==void 0){let l=Za(Fr,a.delta.byteLength),d=Gd(s-f),u=await Nr(a.delta);t.push(l,d,u),s+=l.byteLength+d.byteLength+u.byteLength}else{let l=Hd[a.type],d=Za(l,a.content.byteLength),u=await Nr(a.content);t.push(d,u),s+=d.byteLength+u.byteLength}i.push({hash:a.hash,offset:c,nextOffset:s})}return{data:await jd(t),entries:i}}async function jd(e){let t=0;for(let i of e)t+=i.byteLength;t+=20;let n=new Uint8Array(t),r=0;for(let i of e)n.set(i,r),r+=i.byteLength;let o=Vn();o.update(n.subarray(0,r));let s=await o.hex();return n.set(St(s),r),n}function Gd(e){let t=[];t.push(e&127);let n=e>>>7;for(;n>0;)t.unshift(128|--n&127),n>>>=7;return new Uint8Array(t)}function Za(e,t){let n=[],r=e<<4|t&15;for(t>>=4;t>0;)n.push(r|128),r=t&127,t>>=7;return n.push(r),new Uint8Array(n)}function Ja(e,t){let n=0,r=0,o;do o=e[t++],n|=(o&127)<<r,r+=7;while(o&128);return{value:n,newPos:t}}async function si(e,t){let n=Ld.encode(`${e} ${t.byteLength}\0`),r=Vn();return r.update(n),r.update(t),r.hex()}var oi,Qa,ec,tc,nc,rc,Fr,ii,vd,Hd,Ld,Br=Ee(()=>{"use strict";dt();Yn();As();oi=1346454347,Qa=2,ec=1,tc=2,nc=3,rc=4,Fr=6,ii=7,vd={[ec]:"commit",[tc]:"tree",[nc]:"blob",[rc]:"tag"},Hd={commit:ec,tree:tc,blob:nc,tag:rc};Ld=new TextEncoder});async function ac(e,t){let n=[...e].sort((m,h)=>m.hash<h.hash?-1:m.hash>h.hash?1:0),r=n.length,o=[];for(let m of n)m.offset>=2147483648&&o.push(BigInt(m.offset));let s=8+256*4+r*20+r*4+r*4+o.length*8+20+20,i=new Uint8Array(s),a=new DataView(i.buffer),c=0;a.setUint32(c,oc),c+=4,a.setUint32(c,ic),c+=4;let f=new Uint32Array(256);for(let m of n){let h=parseInt(m.hash.slice(0,2),16);for(let p=h;p<256;p++)f[p]++}for(let m=0;m<256;m++)a.setUint32(c,f[m]),c+=4;for(let m of n)i.set(St(m.hash),c),c+=20;for(let m of n)a.setUint32(c,m.crc),c+=4;let l=0;for(let m of n)m.offset>=2147483648?a.setUint32(c,2147483648|l++):a.setUint32(c,m.offset),c+=4;for(let m of o)a.setBigUint64(c,m),c+=8;i.set(t,c),c+=20;let d=Vn();d.update(i.subarray(0,c));let u=await d.hex();return i.set(St(u),c),i}async function cc(e){let n=(await sc(e)).map(o=>({hash:o.hash,offset:o.offset,crc:Jo(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return ac(n,r)}async function fc(e,t){let n=t.map(o=>({hash:o.hash,offset:o.offset,crc:Jo(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return ac(n,r)}var oc,ic,zt,Ms=Ee(()=>{"use strict";dt();Yn();_a();Br();oc=4285812579,ic=2,zt=class{fanout;hashes;offsets;largeOffsets;count;constructor(t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(n.getUint32(0)!==oc)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==ic)throw new Error(`Unsupported pack index version: ${n.getUint32(4)}`);this.fanout=new Uint32Array(256);let r=8;for(let s=0;s<256;s++)this.fanout[s]=n.getUint32(r),r+=4;this.count=this.fanout[255],this.hashes=new Uint8Array(t.buffer,t.byteOffset+r,this.count*20),r+=this.count*20,r+=this.count*4,this.offsets=new Uint32Array(this.count);for(let s=0;s<this.count;s++)this.offsets[s]=n.getUint32(r),r+=4;let o=!1;for(let s=0;s<this.count;s++)if(this.offsets[s]&2147483648){o=!0;break}this.largeOffsets=o?new DataView(t.buffer,t.byteOffset+r):null}lookup(t){let n=St(t),r=n[0],o=r===0?0:this.fanout[r-1],s=this.fanout[r],i=o,a=s;for(;i<a;){let c=i+a>>>1,f=this.compareAt(c,n);if(f<0)i=c+1;else if(f>0)a=c;else return this.getOffset(c)}return null}has(t){return this.lookup(t)!==null}get objectCount(){return this.count}allHashes(){let t=[];for(let n=0;n<this.count;n++)t.push(this.hashAtSlot(n));return t}findByPrefix(t){if(t.length<2)return[];let n=parseInt(t.slice(0,2),16),r=n===0?0:this.fanout[n-1],o=this.fanout[n],s=St(t.padEnd(40,"0")),i=t.length,a=[];for(let c=r;c<o;c++){let f=c*20,l=!0;for(let d=0;d<i;d++){let u=d%2===0?this.hashes[f+(d>>1)]>>4&15:this.hashes[f+(d>>1)]&15,m=d%2===0?s[d>>1]>>4&15:s[d>>1]&15;if(u!==m){l=!1;break}}l&&a.push(this.hashAtSlot(c))}return a}hashAtSlot(t){let n="",r=t*20;for(let o=0;o<20;o++){let s=this.hashes[r+o];n+=(s>>4).toString(16)+(s&15).toString(16)}return n}compareAt(t,n){let r=t*20;for(let o=0;o<20;o++){let s=this.hashes[r+o],i=n[o];if(s<i)return-1;if(s>i)return 1}return 0}getOffset(t){let n=this.offsets[t];if(n&2147483648){let r=n&2147483647;return Number(this.largeOffsets.getBigUint64(r*8))}return n}}});var _d,Nd,Fd,Wr,lc=Ee(()=>{"use strict";dt();Ms();Br();As();_d=6,Nd=7,Fd={1:"commit",2:"tree",3:"blob",4:"tag"},Wr=class{constructor(t,n){this.data=t;this.index=n instanceof zt?n:new zt(n)}index;hasObject(t){return this.index.has(t)}findByPrefix(t){return this.index.findByPrefix(t)}async readObject(t){let n=this.index.lookup(t);return n===null?null:this.readAt(n)}get objectCount(){return this.index.objectCount}async readAt(t){let n=this.data,r=t,o=n[r++],s=o>>4&7,i=o&15,a=4;for(;o&128;)o=n[r++],i|=(o&127)<<a,a+=7;if(s===_d){let l=n[r++],d=l&127;for(;l&128;)d+=1,l=n[r++],d=(d<<7)+(l&127);let u=await pr(n.subarray(r)),m=await this.readAt(t-d);return{type:m.type,content:Ur(m.content,u)}}if(s===Nd){let l=$s(n,r);r+=20;let d=await pr(n.subarray(r)),u=this.index.lookup(l);if(u===null)throw new Error(`REF_DELTA base ${l} not found in pack`);let m=await this.readAt(u);return{type:m.type,content:Ur(m.content,d)}}let c=Fd[s];if(!c)throw new Error(`Unknown pack object type: ${s}`);let f=await pr(n.subarray(r));if(f.byteLength!==i)throw new Error(`Pack inflate size mismatch at offset ${t}: got ${f.byteLength}, expected ${i}`);return{type:c,content:f}}}});function ci(e,t){let n=Ud.encode(`${e} ${t.byteLength}\0`),r=new Uint8Array(n.byteLength+t.byteLength);return r.set(n),r.set(t,n.byteLength),r}function Wd(e,t){let n=t.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${e}: no null byte in header`);let r=Bd.decode(t.subarray(0,n)),o=r.indexOf(" ");if(o===-1)throw new Error(`Corrupt object ${e}: malformed header "${r}"`);let s=r.slice(0,o),i=parseInt(r.slice(o+1),10),a=t.subarray(n+1);if(a.byteLength!==i)throw new Error(`Corrupt object ${e}: expected ${i} bytes, got ${a.byteLength}`);return{type:s,content:a}}function ai(e,t){return T(e,"objects",t.slice(0,2),t.slice(2))}var Ud,Bd,gr,fi=Ee(()=>{"use strict";dt();Ga();Ms();lc();As();le();Yn();Ud=new TextEncoder,Bd=new TextDecoder;gr=class{constructor(t,n,r){this.fs=t;this.gitDir=n;this.cache=new Hs(r),this.packDir=T(n,"objects","pack")}packs=[];loadedPackNames=new Set;discoverPromise=null;cache;packDir;async write(t,n){let r=ci(t,n),o=await mr(r),s=ai(this.gitDir,o);if(await this.fs.exists(s))return o;let i=T(this.gitDir,"objects",o.slice(0,2));return await this.fs.mkdir(i,{recursive:!0}),await this.fs.writeFile(s,await Nr(r)),o}async read(t){let n=this.cache.get(t);if(n)return n;let r=ai(this.gitDir,t);if(await this.fs.exists(r)){let o=await this.fs.readFileBuffer(r),s=await pr(o),i=Wd(t,s);return this.cache.set(t,i),i}await this.discover();for(let o of this.packs){if(!o.index.has(t))continue;let i=await(await this.ensureReader(o)).readObject(t);if(i)return this.cache.set(t,i),i}throw new Error(`object ${t} not found`)}async exists(t){if(await this.fs.exists(ai(this.gitDir,t)))return!0;await this.discover();for(let n of this.packs)if(n.index.has(t))return!0;return!1}async ingestPack(t){if(t.byteLength<32)return 0;let r=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(8);if(r===0)return 0;let o=t.subarray(t.byteLength-20),s=Pn(o);await this.fs.mkdir(this.packDir,{recursive:!0});let i=`pack-${s}`,a=T(this.packDir,`${i}.pack`);await this.fs.writeFile(a,t);let c=await cc(t),f=T(this.packDir,`${i}.idx`);await this.fs.writeFile(f,c),this.loadedPackNames.add(i);let l=new zt(c);return this.packs.push({name:i,index:l,reader:new Wr(t,l)}),r}invalidatePacks(){this.packs=[],this.loadedPackNames.clear(),this.discoverPromise=null,this.cache.clear()}async findByPrefix(t){if(t.length<4)return[];let n=t.slice(0,2),r=t.slice(2),o=T(this.gitDir,"objects",n),s=[];if(await this.fs.exists(o)){let i=await this.fs.readdir(o);for(let a of i)a.startsWith(r)&&s.push(`${n}${a}`)}await this.discover();for(let i of this.packs)for(let a of i.index.findByPrefix(t))s.includes(a)||s.push(a);return s}async ensureReader(t){if(t.reader)return t.reader;let n=T(this.packDir,`${t.name}.pack`),r=await this.fs.readFileBuffer(n);return t.reader=new Wr(r,t.index),t.reader}discover(){return this.discoverPromise||(this.discoverPromise=this.doDiscover()),this.discoverPromise}async doDiscover(){if(!await this.fs.exists(this.packDir))return;let t=await this.fs.readdir(this.packDir);for(let n of t){if(!n.endsWith(".idx"))continue;let r=n.slice(0,-4);if(this.loadedPackNames.has(r))continue;let o=T(this.packDir,`${r}.pack`);if(!await this.fs.exists(o))continue;let s=await this.fs.readFileBuffer(T(this.packDir,n));this.loadedPackNames.add(r),this.packs.push({name:r,index:new zt(s),reader:null})}}}});function qr(e){let t=e.indexOf("<"),n=e.indexOf(">");if(t===-1||n===-1)throw new Error(`Malformed identity line: "${e}"`);let r=e.slice(0,t).trimEnd(),o=e.slice(t+1,n),s=e.slice(n+2),[i="0",a="+0000"]=s.split(" "),c=parseInt(i,10);return{name:r,email:o,timestamp:c,timezone:a}}function zr(e){return`${e.name} <${e.email}> ${e.timestamp} ${e.timezone}`}var li=Ee(()=>{"use strict"});function en(e){let t=zd.decode(e),n=t.indexOf(`
|
|
21
|
+
`);return{name:a,email:c,timestamp:s,timezone:i}}async function Jt(e,t){try{let n=await Gr(e,t);return{name:n.name,email:n.email,timestamp:n.timestamp,tz:n.timezone}}catch{return{name:t.get("GIT_COMMITTER_NAME")??"",email:t.get("GIT_COMMITTER_EMAIL")??"",timestamp:Math.floor(Date.now()/1e3),tz:"+0000"}}}function gd(e){let t={timestamp:Math.floor(Date.now()/1e3),timezone:"+0000"};if(!e)return t;let n=e.trim();if(!n)return t;if(n.startsWith("@")){let s=n.slice(1).trim(),i=parseInt(s,10);if(!Number.isNaN(i))return{timestamp:i,timezone:"+0000"}}if(/^\d+$/.test(n))return{timestamp:parseInt(n,10),timezone:"+0000"};let r=n.match(/^(\d+)\s+([+-]\d{4})$/);if(r)return{timestamp:parseInt(r[1],10),timezone:r[2]};let o=Date.parse(n);return Number.isNaN(o)?t:{timestamp:Math.floor(o/1e3),timezone:wd(n)}}function wd(e){if(/Z$/i.test(e))return"+0000";let t=e.match(/([+-])(\d{2}):(\d{2})$/);if(t)return`${t[1]}${t[2]}${t[3]}`;let n=e.match(/([+-]\d{4})$/);return n?n[1]:"+0000"}var pd,Pn=Ee(()=>{"use strict";Ne();pd={author:{name:"GIT_AUTHOR_NAME",email:"GIT_AUTHOR_EMAIL",date:"GIT_AUTHOR_DATE"},committer:{name:"GIT_COMMITTER_NAME",email:"GIT_COMMITTER_EMAIL",date:"GIT_COMMITTER_DATE"}}});function Cn(e){let t="";for(let n=0;n<20;n++)t+=Aa[e[n]];return t}function Ss(e,t){let n="";for(let r=0;r<20;r++)n+=Aa[e[t+r]];return n}function $t(e){let t=new Uint8Array(20);for(let n=0;n<20;n++)t[n]=parseInt(e.slice(n*2,n*2+2),16);return t}var te,Aa,dt=Ee(()=>{"use strict";te="0000000000000000000000000000000000000000",Aa=(()=>{let e=new Array(256);for(let t=0;t<256;t++)e[t]=(t>>4).toString(16)+(t&15).toString(16);return e})()});function Yo(e){return typeof e=="string"?bd.encode(e):e}function yd(){if(typeof globalThis.Bun<"u")return()=>{let e=new Bun.CryptoHasher("sha1"),t={update(n){return e.update(Yo(n)),t},hex:()=>Promise.resolve(e.digest("hex"))};return t};try{let e=Rs(["node","crypto"].join(":"));if(typeof e.createHash=="function")return()=>{let t=e.createHash("sha1"),n={update(r){return t.update(Yo(r)),n},hex:()=>Promise.resolve(t.digest("hex"))};return n}}catch{}if(typeof globalThis.crypto?.subtle?.digest=="function")return()=>{let e=[],t={update(n){return e.push(Yo(n)),t},async hex(){let n=0;for(let i of e)n+=i.byteLength;let r=new Uint8Array(n),o=0;for(let i of e)r.set(i,o),o+=i.byteLength;let s=await crypto.subtle.digest("SHA-1",r);return Cn(new Uint8Array(s))}};return t};throw new Error("No SHA-1 implementation available. Requires Bun, Node.js, Deno, or a browser with Web Crypto.")}async function hr(e){return Da().update(e).hex()}var bd,Da,Vn,Yn=Ee(()=>{"use strict";dt();bd=new TextEncoder;Da=yd(),Vn=Da});async function K(e){let t=T(e.gitDir,"index");if(!await e.fs.exists(t))return{version:Xo,entries:[]};let n=await e.fs.readFileBuffer(t);return Ed(n)}async function ae(e,t){let n=T(e.gitDir,"index"),r=await kd(t);await e.fs.writeFile(n,r)}function Et(e,t){let n;return t.stage===0?n=e.entries.filter(r=>r.path!==t.path):n=e.entries.filter(r=>!(r.path===t.path&&r.stage===t.stage)),n.push(t),n.sort(Zo),{...e,entries:n}}function at(e,t){return{...e,entries:e.entries.filter(n=>n.path!==t)}}function Ts(e,t,n=0){return e.entries.find(r=>r.path===t&&r.stage===n)}function St(e){return e.entries.some(t=>t.stage>0)}function Bt(e){return[...new Set(e.entries.filter(t=>t.stage>0).map(t=>t.path))]}function De(e){return e.entries.filter(t=>t.stage===0)}function ja(){return{version:Xo,entries:[]}}function vs(e){let t=[...e].sort(Zo);return{version:Xo,entries:t}}function Ie(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}function Ed(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=0,r=t.getUint32(n);if(n+=4,r!==Ma)throw new Error(`Invalid index signature: 0x${r.toString(16)}`);let o=t.getUint32(n);n+=4;let s=t.getUint32(n);n+=4;let i=[];for(let a=0;a<s;a++){let c=n,f={ctimeSeconds:t.getUint32(n),ctimeNanoseconds:t.getUint32(n+4),mtimeSeconds:t.getUint32(n+8),mtimeNanoseconds:t.getUint32(n+12),dev:t.getUint32(n+16),ino:t.getUint32(n+20),uid:t.getUint32(n+28),gid:t.getUint32(n+32),size:t.getUint32(n+36)},l=t.getUint32(n+24);n+=40;let d=e.subarray(n,n+20),u=Cn(d);n+=20;let m=t.getUint16(n);n+=2;let h=m>>12&3,p=m&4095,g,w;if(p<4095)w=new TextDecoder().decode(e.subarray(n,n+p)),g=p;else{let b=n;for(;b<e.byteLength&&e[b]!==0;)b++;w=new TextDecoder().decode(e.subarray(n,b)),g=b-n}let y=62+g+1,x=Math.ceil(y/8)*8;n=c+x,i.push({path:w,mode:l,hash:u,stage:h,stat:f})}return{version:o,entries:i}}async function kd(e){let t=new TextEncoder,n=[...e.entries].sort(Zo),r=[],o=12;for(let u of n){let m=t.encode(u.path);r.push(m);let h=62+m.byteLength+1;o+=Math.ceil(h/8)*8}o+=20;let s=new ArrayBuffer(o),i=new Uint8Array(s),a=new DataView(s),c=0;a.setUint32(c,Ma),c+=4,a.setUint32(c,e.version),c+=4,a.setUint32(c,n.length),c+=4;for(let u=0;u<n.length;u++){let m=n[u],h=r[u],p=c;a.setUint32(c,m.stat.ctimeSeconds),a.setUint32(c+4,m.stat.ctimeNanoseconds),a.setUint32(c+8,m.stat.mtimeSeconds),a.setUint32(c+12,m.stat.mtimeNanoseconds),a.setUint32(c+16,m.stat.dev),a.setUint32(c+20,m.stat.ino),a.setUint32(c+24,m.mode),a.setUint32(c+28,m.stat.uid),a.setUint32(c+32,m.stat.gid),a.setUint32(c+36,m.stat.size),c+=40;let g=$t(m.hash);i.set(g,c),c+=20;let w=Math.min(h.byteLength,4095),y=(m.stage&3)<<12|w;a.setUint16(c,y),c+=2,i.set(h,c),c+=h.byteLength,i[c]=0,c+=1;let x=62+h.byteLength+1,b=Math.ceil(x/8)*8;c=p+b}let f=i.subarray(0,c),l=await hr(f),d=$t(l);return i.set(d,c),i}function Zo(e,t){return e.path<t.path?-1:e.path>t.path?1:e.stage-t.stage}var Ma,Xo,Ce=Ee(()=>{"use strict";dt();le();Yn();Ma=1145655875,Xo=2});var Rd,Hs,Ga=Ee(()=>{"use strict";Rd=new Set(["tree","commit","tag"]),Hs=class{map=new Map;currentBytes=0;maxBytes;constructor(t=16*1024*1024){this.maxBytes=t}get(t){return this.map.get(t)}set(t,n){if(!Rd.has(n.type))return;let r=n.content.byteLength;if(!(r>this.maxBytes/2)&&!this.map.has(t)){for(;this.currentBytes+r>this.maxBytes&&this.map.size>0;){let o=this.map.keys().next().value;this.currentBytes-=this.map.get(o).content.byteLength,this.map.delete(o)}this.map.set(t,n),this.currentBytes+=r}}get size(){return this.map.size}get bytes(){return this.currentBytes}clear(){this.map.clear(),this.currentBytes=0}}});function Jo(e){let t=4294967295;for(let n=0;n<e.byteLength;n++)t=La[(t^e[n])&255]^t>>>8;return(t^4294967295)>>>0}var La,_a=Ee(()=>{"use strict";La=new Uint32Array(256);for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;La[e]=t}});function Va(e){let t=Ka(e);return za(e.subarray(t,-4),{i:2})}function ni(e){let t=Ka(e),n={i:2},r=za(e.subarray(t),n),o=qa(n.p);return{result:r,bytesConsumed:t+o+4}}var qt,pr,xd,Na,Fa,Pd,Ua,Ba,Cd,ti,Lr,_r,Wa,Od,Id,Qo,Wt,ei,qa,$d,Qt,za,Ka,Ya=Ee(()=>{"use strict";qt=Uint8Array,pr=Uint16Array,xd=Int32Array,Na=new qt([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Fa=new qt([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Pd=new qt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ua=(e,t)=>{let n=new pr(31);for(let o=0;o<31;++o)n[o]=t+=1<<e[o-1];let r=new xd(n[30]);for(let o=1;o<30;++o)for(let s=n[o];s<n[o+1];++s)r[s]=s-n[o]<<5|o;return{b:n,r}},{b:Ba}=Ua(Na,2);Ba[28]=258;({b:Cd}=Ua(Fa,0)),ti=new pr(32768);for(let e=0;e<32768;++e){let t=(e&43690)>>1|(e&21845)<<1;t=(t&52428)>>2|(t&13107)<<2,t=(t&61680)>>4|(t&3855)<<4,ti[e]=((t&65280)>>8|(t&255)<<8)>>1}Lr=(e,t,n)=>{let r=e.length,o=0,s=new pr(t);for(;o<r;++o)e[o]&&++s[e[o]-1];let i=new pr(t);for(o=1;o<t;++o)i[o]=i[o-1]+s[o-1]<<1;let a;if(n){a=new pr(1<<t);let c=15-t;for(o=0;o<r;++o)if(e[o]){let f=o<<4|e[o],l=t-e[o],d=i[e[o]-1]++<<l;for(let u=d|(1<<l)-1;d<=u;++d)a[ti[d]>>c]=f}}else for(a=new pr(r),o=0;o<r;++o)e[o]&&(a[o]=ti[i[e[o]-1]++]>>15-e[o]);return a},_r=new qt(288);for(let e=0;e<144;++e)_r[e]=8;for(let e=144;e<256;++e)_r[e]=9;for(let e=256;e<280;++e)_r[e]=7;for(let e=280;e<288;++e)_r[e]=8;Wa=new qt(32);for(let e=0;e<32;++e)Wa[e]=5;Od=Lr(_r,9,1),Id=Lr(Wa,5,1),Qo=e=>{let t=e[0];for(let n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},Wt=(e,t,n)=>{let r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},ei=(e,t)=>{let n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},qa=e=>(e+7)/8|0,$d=(e,t,n)=>((t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new qt(e.subarray(t,n))),Qt=(e,t)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(t||n[e]||"unknown inflate error")},za=(e,t,n,r)=>{let o=e.length,s=r?r.length:0;if(!o||t.f&&!t.l)return n||new qt(0);let i=!n,a=i||t.i!=2,c=t.i;i&&(n=new qt(o*3));let f=y=>{let x=n.length;if(y>x){let b=new qt(Math.max(x*2,y));b.set(n),n=b}},l=t.f||0,d=t.p||0,u=t.b||0,m=t.l,h=t.d,p=t.m,g=t.n,w=o*8;do{if(!m){l=Wt(e,d,1);let k=Wt(e,d+1,3);if(d+=3,k)if(k==1)m=Od,h=Id,p=9,g=5;else if(k==2){let E=Wt(e,d,31)+257,R=Wt(e,d+10,15)+4,C=E+Wt(e,d+5,31)+1;d+=14;let P=new qt(C),v=new qt(19);for(let S=0;S<R;++S)v[Pd[S]]=Wt(e,d+S*3,7);d+=R*3;let D=Qo(v),O=(1<<D)-1,H=Lr(v,D,1);for(let S=0;S<C;){let N=H[Wt(e,d,O)];d+=N&15;let B=N>>4;if(B<16)P[S++]=B;else{let z=0,_=0;for(B==16?(_=3+Wt(e,d,3),d+=2,z=P[S-1]):B==17?(_=3+Wt(e,d,7),d+=3):B==18&&(_=11+Wt(e,d,127),d+=7);_--;)P[S++]=z}}let G=P.subarray(0,E),A=P.subarray(E);p=Qo(G),g=Qo(A),m=Lr(G,p,1),h=Lr(A,g,1)}else Qt(1);else{let E=qa(d)+4,R=e[E-4]|e[E-3]<<8,C=E+R;if(C>o){c&&Qt(0);break}a&&f(u+R),n.set(e.subarray(E,C),u),t.b=u+=R,t.p=d=C*8,t.f=l;continue}if(d>w){c&&Qt(0);break}}a&&f(u+131072);let y=(1<<p)-1,x=(1<<g)-1,b=d;for(;;b=d){let k=m[ei(e,d)&y],E=k>>4;if(d+=k&15,d>w){c&&Qt(0);break}if(k||Qt(2),E<256)n[u++]=E;else if(E==256){b=d,m=null;break}else{let R=E-254;if(E>264){let O=E-257,H=Na[O];R=Wt(e,d,(1<<H)-1)+Ba[O],d+=H}let C=h[ei(e,d)&x],P=C>>4;C||Qt(3),d+=C&15;let v=Cd[P];if(P>3){let O=Fa[P];v+=ei(e,d)&(1<<O)-1,d+=O}if(d>w){c&&Qt(0);break}a&&f(u+131072);let D=u+R;if(u<v){let O=s-v,H=Math.min(v,D);for(O+u<0&&Qt(3);u<H;++u)n[u]=r[O+u]}for(;u<D;++u)n[u]=n[u-v]}}t.l=m,t.p=b,t.b=u,t.f=l,m&&(l=1,t.m=p,t.d=h,t.n=g)}while(!l);return u!=n.length&&i?$d(n,0,u):n.subarray(0,u)},Ka=e=>(((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&Qt(0,"invalid zlib data"),e[1]&32&&Qt(0,"zlib dictionaries are not supported"),2)});async function Sd(){let e;if(!(typeof document<"u"))try{e=Rs(["node","zlib"].join(":"))}catch{try{e=await import(["node","zlib"].join(":"))}catch{}}if(e&&typeof e.deflateSync=="function"&&typeof e.inflateSync=="function"){let r=null;try{let o=e.inflateSync(e.deflateSync(Buffer.from("x")),{info:!0});o?.engine&&typeof o.engine.bytesWritten=="number"&&(r=s=>{let i=e.inflateSync(s,{info:!0});return{result:new Uint8Array(i.buffer),bytesConsumed:i.engine.bytesWritten}})}catch{}return{deflateSync:o=>new Uint8Array(e.deflateSync(o)),inflateSync:o=>new Uint8Array(e.inflateSync(o)),inflateWithConsumed:r??ni}}let n;return typeof globalThis.CompressionStream=="function"?n=async r=>{let o=new CompressionStream("deflate"),s=o.writable.getWriter();return s.write(r),s.close(),new Uint8Array(await new Response(o.readable).arrayBuffer())}:n=()=>{throw new Error("No deflate implementation available. Requires node:zlib or CompressionStream.")},{deflateSync:n,inflateSync:Va,inflateWithConsumed:ni}}function ri(){return Td??=Sd()}async function Nr(e){return await(await ri()).deflateSync(e)}async function gr(e){return await(await ri()).inflateSync(e)}async function Xa(e,t){let n=await ri(),{result:r,bytesConsumed:o}=n.inflateWithConsumed(e);if(r.byteLength!==t)throw new Error(`Inflate size mismatch: got ${r.byteLength}, expected ${t}`);return{result:r,bytesConsumed:o}}var Td,As=Ee(()=>{"use strict";Ya();Td=null});async function sc(e,t){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==oi)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${oi.toString(16)})`);let o=n.getUint32(4);if(o!==Qa)throw new Error(`Unsupported pack version: ${o}`);let s=n.getUint32(8),i=[],a=12;for(let f=0;f<s;f++){let l=await Ad(e,a);i.push(l),a=l.nextOffset}return(await Dd(i,t)).map((f,l)=>({...f,offset:i[l].headerOffset,nextOffset:i[l].nextOffset}))}async function Ad(e,t){let n=t,r=e[t++],o=r>>4&7,s=r&15,i=4;for(;r&128;)r=e[t++],s|=(r&127)<<i,i+=7;let a,c;if(o===Fr){let d=e[t++];for(a=d&127;d&128;)a+=1,d=e[t++],a=(a<<7)+(d&127);a=n-a}else o===ii&&(c=Ss(e,t),t+=20);let{result:f,bytesConsumed:l}=await Xa(e.subarray(t),s);return{headerOffset:n,typeNum:o,inflated:f,baseOffset:a,baseHash:c,nextOffset:t+l}}async function Dd(e,t){let n=new Map;for(let s=0;s<e.length;s++)n.set(e[s].headerOffset,s);let r=new Array(e.length).fill(null);async function o(s){let i=r[s];if(i)return i;let a=e[s];if(a.typeNum!==Fr&&a.typeNum!==ii){let u=vd[a.typeNum];if(!u)throw new Error(`Unknown object type: ${a.typeNum}`);let m={type:u,content:a.inflated,hash:await si(u,a.inflated)};return r[s]=m,m}if(a.typeNum===Fr){let u=n.get(a.baseOffset);if(u===void 0)throw new Error(`OFS_DELTA base not found at offset ${a.baseOffset}`);let m=await o(u),h=Ur(m.content,a.inflated),p={type:m.type,content:h,hash:await si(m.type,h)};return r[s]=p,p}let c=await Md(e,r,a.baseHash,o),f;if(c!==void 0)f=await o(c);else if(t){let u=await t(a.baseHash);u&&(f=u)}if(!f)throw new Error(`REF_DELTA base not found for hash ${a.baseHash}`);let l=Ur(f.content,a.inflated),d={type:f.type,content:l,hash:await si(f.type,l)};return r[s]=d,d}for(let s=0;s<e.length;s++)await o(s);return r}async function Md(e,t,n,r){for(let o=0;o<t.length;o++)if(t[o]?.hash===n)return o;for(let o=0;o<e.length;o++){let s=e[o];if(s.typeNum!==Fr&&s.typeNum!==ii&&(await r(o)).hash===n)return o}}function Ur(e,t){let n=0,{value:r,newPos:o}=Ja(t,n);if(n=o,r!==e.byteLength)throw new Error(`Delta base size mismatch: expected ${r}, got ${e.byteLength}`);let{value:s,newPos:i}=Ja(t,n);n=i;let a=new Uint8Array(s),c=0;for(;n<t.byteLength;){let f=t[n++];if(f&128){let l=0,d=0;f&1&&(l=t[n++]),f&2&&(l|=t[n++]<<8),f&4&&(l|=t[n++]<<16),f&8&&(l|=t[n++]<<24),f&16&&(d=t[n++]),f&32&&(d|=t[n++]<<8),f&64&&(d|=t[n++]<<16),d===0&&(d=65536),a.set(e.subarray(l,l+d),c),c+=d}else if(f>0)a.set(t.subarray(n,n+f),c),c+=f,n+=f;else throw new Error("Unexpected delta opcode 0x00 (reserved)")}if(c!==s)throw new Error(`Delta produced ${c} bytes, expected ${s}`);return a}async function Ds(e){let t=[],n=new Map,r=new Uint8Array(12),o=new DataView(r.buffer);o.setUint32(0,oi),o.setUint32(4,Qa),o.setUint32(8,e.length),t.push(r);let s=12,i=[];for(let a of e){let c=s;n.set(a.hash,s);let f=a.delta&&a.deltaBaseHash?n.get(a.deltaBaseHash):void 0;if(a.delta&&f!==void 0){let l=Za(Fr,a.delta.byteLength),d=Gd(s-f),u=await Nr(a.delta);t.push(l,d,u),s+=l.byteLength+d.byteLength+u.byteLength}else{let l=Hd[a.type],d=Za(l,a.content.byteLength),u=await Nr(a.content);t.push(d,u),s+=d.byteLength+u.byteLength}i.push({hash:a.hash,offset:c,nextOffset:s})}return{data:await jd(t),entries:i}}async function jd(e){let t=0;for(let i of e)t+=i.byteLength;t+=20;let n=new Uint8Array(t),r=0;for(let i of e)n.set(i,r),r+=i.byteLength;let o=Vn();o.update(n.subarray(0,r));let s=await o.hex();return n.set($t(s),r),n}function Gd(e){let t=[];t.push(e&127);let n=e>>>7;for(;n>0;)t.unshift(128|--n&127),n>>>=7;return new Uint8Array(t)}function Za(e,t){let n=[],r=e<<4|t&15;for(t>>=4;t>0;)n.push(r|128),r=t&127,t>>=7;return n.push(r),new Uint8Array(n)}function Ja(e,t){let n=0,r=0,o;do o=e[t++],n|=(o&127)<<r,r+=7;while(o&128);return{value:n,newPos:t}}async function si(e,t){let n=Ld.encode(`${e} ${t.byteLength}\0`),r=Vn();return r.update(n),r.update(t),r.hex()}var oi,Qa,ec,tc,nc,rc,Fr,ii,vd,Hd,Ld,Br=Ee(()=>{"use strict";dt();Yn();As();oi=1346454347,Qa=2,ec=1,tc=2,nc=3,rc=4,Fr=6,ii=7,vd={[ec]:"commit",[tc]:"tree",[nc]:"blob",[rc]:"tag"},Hd={commit:ec,tree:tc,blob:nc,tag:rc};Ld=new TextEncoder});async function ac(e,t){let n=[...e].sort((m,h)=>m.hash<h.hash?-1:m.hash>h.hash?1:0),r=n.length,o=[];for(let m of n)m.offset>=2147483648&&o.push(BigInt(m.offset));let s=8+256*4+r*20+r*4+r*4+o.length*8+20+20,i=new Uint8Array(s),a=new DataView(i.buffer),c=0;a.setUint32(c,oc),c+=4,a.setUint32(c,ic),c+=4;let f=new Uint32Array(256);for(let m of n){let h=parseInt(m.hash.slice(0,2),16);for(let p=h;p<256;p++)f[p]++}for(let m=0;m<256;m++)a.setUint32(c,f[m]),c+=4;for(let m of n)i.set($t(m.hash),c),c+=20;for(let m of n)a.setUint32(c,m.crc),c+=4;let l=0;for(let m of n)m.offset>=2147483648?a.setUint32(c,2147483648|l++):a.setUint32(c,m.offset),c+=4;for(let m of o)a.setBigUint64(c,m),c+=8;i.set(t,c),c+=20;let d=Vn();d.update(i.subarray(0,c));let u=await d.hex();return i.set($t(u),c),i}async function cc(e){let n=(await sc(e)).map(o=>({hash:o.hash,offset:o.offset,crc:Jo(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return ac(n,r)}async function fc(e,t){let n=t.map(o=>({hash:o.hash,offset:o.offset,crc:Jo(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return ac(n,r)}var oc,ic,zt,Ms=Ee(()=>{"use strict";dt();Yn();_a();Br();oc=4285812579,ic=2,zt=class{fanout;hashes;offsets;largeOffsets;count;constructor(t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(n.getUint32(0)!==oc)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==ic)throw new Error(`Unsupported pack index version: ${n.getUint32(4)}`);this.fanout=new Uint32Array(256);let r=8;for(let s=0;s<256;s++)this.fanout[s]=n.getUint32(r),r+=4;this.count=this.fanout[255],this.hashes=new Uint8Array(t.buffer,t.byteOffset+r,this.count*20),r+=this.count*20,r+=this.count*4,this.offsets=new Uint32Array(this.count);for(let s=0;s<this.count;s++)this.offsets[s]=n.getUint32(r),r+=4;let o=!1;for(let s=0;s<this.count;s++)if(this.offsets[s]&2147483648){o=!0;break}this.largeOffsets=o?new DataView(t.buffer,t.byteOffset+r):null}lookup(t){let n=$t(t),r=n[0],o=r===0?0:this.fanout[r-1],s=this.fanout[r],i=o,a=s;for(;i<a;){let c=i+a>>>1,f=this.compareAt(c,n);if(f<0)i=c+1;else if(f>0)a=c;else return this.getOffset(c)}return null}has(t){return this.lookup(t)!==null}get objectCount(){return this.count}allHashes(){let t=[];for(let n=0;n<this.count;n++)t.push(this.hashAtSlot(n));return t}findByPrefix(t){if(t.length<2)return[];let n=parseInt(t.slice(0,2),16),r=n===0?0:this.fanout[n-1],o=this.fanout[n],s=$t(t.padEnd(40,"0")),i=t.length,a=[];for(let c=r;c<o;c++){let f=c*20,l=!0;for(let d=0;d<i;d++){let u=d%2===0?this.hashes[f+(d>>1)]>>4&15:this.hashes[f+(d>>1)]&15,m=d%2===0?s[d>>1]>>4&15:s[d>>1]&15;if(u!==m){l=!1;break}}l&&a.push(this.hashAtSlot(c))}return a}hashAtSlot(t){let n="",r=t*20;for(let o=0;o<20;o++){let s=this.hashes[r+o];n+=(s>>4).toString(16)+(s&15).toString(16)}return n}compareAt(t,n){let r=t*20;for(let o=0;o<20;o++){let s=this.hashes[r+o],i=n[o];if(s<i)return-1;if(s>i)return 1}return 0}getOffset(t){let n=this.offsets[t];if(n&2147483648){let r=n&2147483647;return Number(this.largeOffsets.getBigUint64(r*8))}return n}}});var _d,Nd,Fd,Wr,lc=Ee(()=>{"use strict";dt();Ms();Br();As();_d=6,Nd=7,Fd={1:"commit",2:"tree",3:"blob",4:"tag"},Wr=class{constructor(t,n){this.data=t;this.index=n instanceof zt?n:new zt(n)}index;hasObject(t){return this.index.has(t)}findByPrefix(t){return this.index.findByPrefix(t)}async readObject(t){let n=this.index.lookup(t);return n===null?null:this.readAt(n)}get objectCount(){return this.index.objectCount}async readAt(t){let n=this.data,r=t,o=n[r++],s=o>>4&7,i=o&15,a=4;for(;o&128;)o=n[r++],i|=(o&127)<<a,a+=7;if(s===_d){let l=n[r++],d=l&127;for(;l&128;)d+=1,l=n[r++],d=(d<<7)+(l&127);let u=await gr(n.subarray(r)),m=await this.readAt(t-d);return{type:m.type,content:Ur(m.content,u)}}if(s===Nd){let l=Ss(n,r);r+=20;let d=await gr(n.subarray(r)),u=this.index.lookup(l);if(u===null)throw new Error(`REF_DELTA base ${l} not found in pack`);let m=await this.readAt(u);return{type:m.type,content:Ur(m.content,d)}}let c=Fd[s];if(!c)throw new Error(`Unknown pack object type: ${s}`);let f=await gr(n.subarray(r));if(f.byteLength!==i)throw new Error(`Pack inflate size mismatch at offset ${t}: got ${f.byteLength}, expected ${i}`);return{type:c,content:f}}}});function ci(e,t){let n=Ud.encode(`${e} ${t.byteLength}\0`),r=new Uint8Array(n.byteLength+t.byteLength);return r.set(n),r.set(t,n.byteLength),r}function Wd(e,t){let n=t.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${e}: no null byte in header`);let r=Bd.decode(t.subarray(0,n)),o=r.indexOf(" ");if(o===-1)throw new Error(`Corrupt object ${e}: malformed header "${r}"`);let s=r.slice(0,o),i=parseInt(r.slice(o+1),10),a=t.subarray(n+1);if(a.byteLength!==i)throw new Error(`Corrupt object ${e}: expected ${i} bytes, got ${a.byteLength}`);return{type:s,content:a}}function ai(e,t){return T(e,"objects",t.slice(0,2),t.slice(2))}var Ud,Bd,wr,fi=Ee(()=>{"use strict";dt();Ga();Ms();lc();As();le();Yn();Ud=new TextEncoder,Bd=new TextDecoder;wr=class{constructor(t,n,r){this.fs=t;this.gitDir=n;this.cache=new Hs(r),this.packDir=T(n,"objects","pack")}packs=[];loadedPackNames=new Set;discoverPromise=null;cache;packDir;async write(t,n){let r=ci(t,n),o=await hr(r),s=ai(this.gitDir,o);if(await this.fs.exists(s))return o;let i=T(this.gitDir,"objects",o.slice(0,2));return await this.fs.mkdir(i,{recursive:!0}),await this.fs.writeFile(s,await Nr(r)),o}async read(t){let n=this.cache.get(t);if(n)return n;let r=ai(this.gitDir,t);if(await this.fs.exists(r)){let o=await this.fs.readFileBuffer(r),s=await gr(o),i=Wd(t,s);return this.cache.set(t,i),i}await this.discover();for(let o of this.packs){if(!o.index.has(t))continue;let i=await(await this.ensureReader(o)).readObject(t);if(i)return this.cache.set(t,i),i}throw new Error(`object ${t} not found`)}async exists(t){if(await this.fs.exists(ai(this.gitDir,t)))return!0;await this.discover();for(let n of this.packs)if(n.index.has(t))return!0;return!1}async ingestPack(t){if(t.byteLength<32)return 0;let r=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(8);if(r===0)return 0;let o=t.subarray(t.byteLength-20),s=Cn(o);await this.fs.mkdir(this.packDir,{recursive:!0});let i=`pack-${s}`,a=T(this.packDir,`${i}.pack`);await this.fs.writeFile(a,t);let c=await cc(t),f=T(this.packDir,`${i}.idx`);await this.fs.writeFile(f,c),this.loadedPackNames.add(i);let l=new zt(c);return this.packs.push({name:i,index:l,reader:new Wr(t,l)}),r}invalidatePacks(){this.packs=[],this.loadedPackNames.clear(),this.discoverPromise=null,this.cache.clear()}async findByPrefix(t){if(t.length<4)return[];let n=t.slice(0,2),r=t.slice(2),o=T(this.gitDir,"objects",n),s=[];if(await this.fs.exists(o)){let i=await this.fs.readdir(o);for(let a of i)a.startsWith(r)&&s.push(`${n}${a}`)}await this.discover();for(let i of this.packs)for(let a of i.index.findByPrefix(t))s.includes(a)||s.push(a);return s}async ensureReader(t){if(t.reader)return t.reader;let n=T(this.packDir,`${t.name}.pack`),r=await this.fs.readFileBuffer(n);return t.reader=new Wr(r,t.index),t.reader}discover(){return this.discoverPromise||(this.discoverPromise=this.doDiscover()),this.discoverPromise}async doDiscover(){if(!await this.fs.exists(this.packDir))return;let t=await this.fs.readdir(this.packDir);for(let n of t){if(!n.endsWith(".idx"))continue;let r=n.slice(0,-4);if(this.loadedPackNames.has(r))continue;let o=T(this.packDir,`${r}.pack`);if(!await this.fs.exists(o))continue;let s=await this.fs.readFileBuffer(T(this.packDir,n));this.loadedPackNames.add(r),this.packs.push({name:r,index:new zt(s),reader:null})}}}});function qr(e){let t=e.indexOf("<"),n=e.indexOf(">");if(t===-1||n===-1)throw new Error(`Malformed identity line: "${e}"`);let r=e.slice(0,t).trimEnd(),o=e.slice(t+1,n),s=e.slice(n+2),[i="0",a="+0000"]=s.split(" "),c=parseInt(i,10);return{name:r,email:o,timestamp:c,timezone:a}}function zr(e){return`${e.name} <${e.email}> ${e.timestamp} ${e.timezone}`}var li=Ee(()=>{"use strict"});function en(e){let t=zd.decode(e),n=t.indexOf(`
|
|
22
22
|
|
|
23
23
|
`),r=n===-1?t:t.slice(0,n),o=n===-1?"":t.slice(n+2),s="",i=[],a,c;for(let f of r.split(`
|
|
24
24
|
`)){let l=f.indexOf(" ");if(l===-1)continue;let d=f.slice(0,l),u=f.slice(l+1);switch(d){case"tree":s=u;break;case"parent":i.push(u);break;case"author":a=qr(u);break;case"committer":c=qr(u);break}}if(!s)throw new Error("Commit missing tree field");if(!a)throw new Error("Commit missing author field");if(!c)throw new Error("Commit missing committer field");return{type:"commit",tree:s,parents:i,author:a,committer:c,message:o}}function tn(e){let t=[];t.push(`tree ${e.tree}`);for(let n of e.parents)t.push(`parent ${n}`);return t.push(`author ${zr(e.author)}`),t.push(`committer ${zr(e.committer)}`),t.push(""),t.push(e.message),qd.encode(t.join(`
|
|
@@ -26,42 +26,42 @@ Run
|
|
|
26
26
|
|
|
27
27
|
`),r=n===-1?t:t.slice(0,n),o=n===-1?"":t.slice(n+2),s="",i="commit",a="",c;for(let f of r.split(`
|
|
28
28
|
`)){let l=f.indexOf(" ");if(l===-1)continue;let d=f.slice(0,l),u=f.slice(l+1);switch(d){case"object":s=u;break;case"type":i=u;break;case"tag":a=u;break;case"tagger":c=qr(u);break}}if(!s)throw new Error("Tag missing object field");if(!a)throw new Error("Tag missing tag name field");if(!c)throw new Error("Tag missing tagger field");return{type:"tag",object:s,objectType:i,name:a,tagger:c,message:o}}function dc(e){let t=[];return t.push(`object ${e.object}`),t.push(`type ${e.objectType}`),t.push(`tag ${e.name}`),t.push(`tagger ${zr(e.tagger)}`),t.push(""),t.push(e.message),Kd.encode(t.join(`
|
|
29
|
-
`))}var Kd,Vd,Kr=Ee(()=>{"use strict";li();Kd=new TextEncoder,Vd=new TextDecoder});async function
|
|
29
|
+
`))}var Kd,Vd,Kr=Ee(()=>{"use strict";li();Kd=new TextEncoder,Vd=new TextDecoder});async function ut(e,t){return hr(ci(e,t))}async function Se(e,t,n){let r=await e.objectStore.write(t,n);return e.hooks?.onObjectWrite?.({repo:e,type:t,hash:r}),r}async function we(e,t){return e.objectStore.read(t)}async function Kt(e,t){return e.objectStore.exists(t)}async function js(e,t){return e.objectStore.ingestPack(t)}async function uc(e,t){return e.objectStore.findByPrefix(t)}function $e(e){let t=Math.min(e.length,8e3);for(let n=0;n<t;n++)if(e.charCodeAt(n)===0)return!0;return!1}function On(e){let t=Math.min(e.byteLength,8e3);for(let n=0;n<t;n++)if(e[n]===0)return!0;return!1}async function oe(e,t){let n=await we(e,t);if(n.type!=="blob")throw new Error(`Expected blob for ${t}, got ${n.type}`);return Yd.decode(n.content)}async function kt(e,t){let n=await we(e,t);if(n.type!=="blob")throw new Error(`Expected blob for ${t}, got ${n.type}`);return n.content}async function j(e,t){let n=await we(e,t);if(n.type!=="commit")throw new Error(`Expected commit object for ${t}, got ${n.type}`);return en(n.content)}async function mc(e,t){let n=await we(e,t);if(n.type!=="tag")throw new Error(`Expected tag object for ${t}, got ${n.type}`);return mn(n.content)}async function _e(e,t){let n=t;for(let r=0;r<100;r++){let o=await we(e,n);if(o.type==="commit")return n;if(o.type==="tag"){n=mn(o.content).object;continue}throw new Error(`Cannot peel ${o.type} object ${t} to commit`)}throw new Error(`Tag chain too deep for ${t}`)}var Yd,ie=Ee(()=>{"use strict";fi();un();Kr();Yn();Yd=new TextDecoder});function hc(e){return typeof e=="string"?{type:"direct",hash:e}:e}var Vr,di=Ee(()=>{"use strict";Vr={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"}});async function gc(e,t){return e.refStore.readRef(t)}async function F(e,t){let n=t;for(let r=0;r<pc;r++){let o=await gc(e,n);if(!o)return null;if(o.type==="direct")return o.hash;n=o.target}throw new Error(`Symbolic ref loop detected resolving "${t}"`)}async function Q(e){return gc(e,"HEAD")}async function Z(e){return F(e,"HEAD")}async function X(e,t,n){let r=e.hooks?await F(e,t):null;await e.refStore.writeRef(t,{type:"direct",hash:n}),e.hooks?.onRefUpdate?.({repo:e,ref:t,oldHash:r,newHash:n})}async function ze(e,t,n){await e.refStore.writeRef(t,{type:"symbolic",target:n})}async function de(e,t){let n=e.hooks?await F(e,t):null;await e.refStore.deleteRef(t),await Xr(e,t),e.hooks&&n&&e.hooks.onRefDelete?.({repo:e,ref:t,oldHash:n})}async function ge(e,t="refs"){return e.refStore.listRefs(t)}function Re(e){return e.replace("refs/heads/","")}async function $n(e,t){let n=await Q(e);n&&n.type==="symbolic"?await X(e,n.target,t):await X(e,"HEAD",t)}async function wc(e){if(e.refStore&&!(e.refStore instanceof In))return;let t=await ge(e,"refs");if(t.length===0)return;let n=["# pack-refs with: peeled fully-peeled sorted"];for(let o of t)if(n.push(`${o.hash} ${o.name}`),o.name.startsWith("refs/tags/"))try{let s=await we(e,o.hash);if(s.type==="tag"){let i=mn(s.content).object;for(let a=0;a<100;a++){let c=await we(e,i);if(c.type!=="tag")break;i=mn(c.content).object}n.push(`^${i}`)}}catch{}await e.fs.writeFile(T(e.gitDir,"packed-refs"),`${n.join(`
|
|
30
30
|
`)}
|
|
31
|
-
`);for(let o of t){let s=T(e.gitDir,o.name);await e.fs.exists(s)&&await e.fs.rm(s)}await bc(e,T(e.gitDir,"refs"));let r=T(e.gitDir,"refs");await e.fs.mkdir(r,{recursive:!0}),await e.fs.mkdir(T(r,"heads"),{recursive:!0}),await e.fs.mkdir(T(r,"tags"),{recursive:!0})}async function bc(e,t){if(e.refStore&&!(e.refStore instanceof In)||!await e.fs.exists(t)||!(await e.fs.stat(t)).isDirectory)return;let r=await e.fs.readdir(t);for(let s of r)await bc(e,T(t,s));(await e.fs.readdir(t)).length===0&&await e.fs.rm(t,{recursive:!0})}var ui,pc,In,ue=Ee(()=>{"use strict";ie();Kr();le();Fe()
|
|
31
|
+
`);for(let o of t){let s=T(e.gitDir,o.name);await e.fs.exists(s)&&await e.fs.rm(s)}await bc(e,T(e.gitDir,"refs"));let r=T(e.gitDir,"refs");await e.fs.mkdir(r,{recursive:!0}),await e.fs.mkdir(T(r,"heads"),{recursive:!0}),await e.fs.mkdir(T(r,"tags"),{recursive:!0})}async function bc(e,t){if(e.refStore&&!(e.refStore instanceof In)||!await e.fs.exists(t)||!(await e.fs.stat(t)).isDirectory)return;let r=await e.fs.readdir(t);for(let s of r)await bc(e,T(t,s));(await e.fs.readdir(t)).length===0&&await e.fs.rm(t,{recursive:!0})}var ui,pc,In,ue=Ee(()=>{"use strict";ie();Kr();le();Fe();Sn();di();ui="ref: ",pc=10,In=class{constructor(t,n){this.fs=t;this.gitDir=n}casLocks=new Map;async readRef(t){let n=T(this.gitDir,t);if(await this.fs.exists(n)){let s=(await this.fs.readFile(n)).trim();return s.startsWith(ui)?{type:"symbolic",target:s.slice(ui.length)}:{type:"direct",hash:s}}let o=(await this.readPackedRefs()).get(t);return o?{type:"direct",hash:o}:null}async writeRef(t,n){let r=hc(n),o=T(this.gitDir,t);await Yr(this.fs,o),r.type==="symbolic"?await this.fs.writeFile(o,`${ui}${r.target}
|
|
32
32
|
`):await this.fs.writeFile(o,`${r.hash}
|
|
33
33
|
`)}async deleteRef(t){let n=T(this.gitDir,t);await this.fs.exists(n)&&await this.fs.rm(n),await this.removePackedRef(t)}async listRefs(t="refs"){let n=[],r=T(this.gitDir,t);await this.fs.exists(r)&&await this.walkRefs(r,t,n);let o=await this.readPackedRefs();if(o.size>0){let s=new Set(n.map(a=>a.name)),i=`${t}/`;for(let[a,c]of o)a.startsWith(i)&&!s.has(a)&&n.push({name:a,hash:c})}return n.sort((s,i)=>s.name<i.name?-1:s.name>i.name?1:0)}async compareAndSwapRef(t,n,r){let s=(this.casLocks.get(t)??Promise.resolve(!1)).then(()=>this.compareAndSwapUnsafe(t,n,r),()=>this.compareAndSwapUnsafe(t,n,r));this.casLocks.set(t,s);try{return await s}finally{this.casLocks.get(t)===s&&this.casLocks.delete(t)}}async compareAndSwapUnsafe(t,n,r){let o=await this.resolveRefInternal(t);if(n===null){if(await this.readRef(t)!==null)return!1}else if(o!==n)return!1;return r===null?await this.deleteRef(t):await this.writeRef(t,r),!0}async resolveRefInternal(t){let n=t;for(let r=0;r<pc;r++){let o=await this.readRef(n);if(!o)return null;if(o.type==="direct")return o.hash;n=o.target}throw new Error(`Symbolic ref loop detected resolving "${t}"`)}async readPackedRefs(){let t=T(this.gitDir,"packed-refs");if(!await this.fs.exists(t))return new Map;let n=await this.fs.readFile(t),r=new Map;for(let o of n.split(`
|
|
34
34
|
`)){if(!o||o.startsWith("#")||o.startsWith("^"))continue;let s=o.indexOf(" ");if(s===-1)continue;let i=o.slice(0,s),a=o.slice(s+1).trim();i.length===40&&a&&r.set(a,i)}return r}async removePackedRef(t){let n=T(this.gitDir,"packed-refs");if(!await this.fs.exists(n))return;let o=(await this.fs.readFile(n)).split(`
|
|
35
35
|
`),s=[],i=!1;for(let c of o){if(i&&c.startsWith("^")){i=!1;continue}if(i=!1,!c||c.startsWith("#")){s.push(c);continue}let f=c.indexOf(" ");if(f!==-1&&c.slice(f+1).trim()===t){i=!0;continue}s.push(c)}s.some(c=>c&&!c.startsWith("#")&&!c.startsWith("^"))?await this.fs.writeFile(n,s.join(`
|
|
36
|
-
`)):await this.fs.rm(n)}async walkRefs(t,n,r){let o=await this.fs.readdir(t);for(let s of o){let i=T(t,s),a=`${n}/${s}`,c=await this.fs.stat(i);if(c.isDirectory)await this.walkRefs(i,a,r);else if(c.isFile){let f=await this.resolveRefInternal(a);f&&r.push({name:a,hash:f})}}}}});async function Xn(e,t){let n=t;for(;;){let r=T(n,".git");if(await e.exists(r)&&(await e.stat(r)).isDirectory)return{fs:e,gitDir:r,workTree:n,objectStore:new
|
|
36
|
+
`)):await this.fs.rm(n)}async walkRefs(t,n,r){let o=await this.fs.readdir(t);for(let s of o){let i=T(t,s),a=`${n}/${s}`,c=await this.fs.stat(i);if(c.isDirectory)await this.walkRefs(i,a,r);else if(c.isFile){let f=await this.resolveRefInternal(a);f&&r.push({name:a,hash:f})}}}}});async function Xn(e,t){let n=t;for(;;){let r=T(n,".git");if(await e.exists(r)&&(await e.stat(r)).isDirectory)return{fs:e,gitDir:r,workTree:n,objectStore:new wr(e,r),refStore:new In(e,r)};if(await Xd(e,n))return{fs:e,gitDir:n,workTree:null,objectStore:new wr(e,n),refStore:new In(e,n)};let o=Zd(n);if(o===n)return null;n=o}}async function Xd(e,t){let n=T(t,"HEAD");if(!await e.exists(n))return!1;try{if(!(await e.stat(n)).isFile)return!1}catch{return!1}for(let r of["objects","refs"]){let o=T(t,r);if(!await e.exists(o))return!1;try{if(!(await e.stat(o)).isDirectory)return!1}catch{return!1}}return!0}async function Gs(e,t,n={}){let{bare:r=!1,initialBranch:o="main"}=n,s=r?t:T(t,".git"),i=r?null:t,a=T(s,"HEAD"),c=await e.exists(a);await e.mkdir(T(s,"objects"),{recursive:!0}),await e.mkdir(T(s,"refs","heads"),{recursive:!0}),await e.mkdir(T(s,"refs","tags"),{recursive:!0});let f={fs:e,gitDir:s,workTree:i,objectStore:new wr(e,s),refStore:new In(e,s)};if(!c){await ze(f,"HEAD",`refs/heads/${o}`);let l={core:{repositoryformatversion:"0",filemode:"true",bare:r?"true":"false",...r?{}:{logallrefupdates:"true"}}};await e.writeFile(T(s,"config"),zo(l))}return{ctx:f,reinit:c}}async function Yr(e,t){let n=t.lastIndexOf("/");if(n>0){let r=t.slice(0,n);await e.mkdir(r,{recursive:!0})}}function Zd(e){let t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}var Sn=Ee(()=>{"use strict";Ne();fi();le();ue()});function Ls(e,t){return T(e.gitDir,"logs",t)}function Jd(e){let t=e.indexOf(" ");if(t<0)return null;let n=e.slice(0,t),r=e.slice(t+1),o=n.split(" ");if(o.length<5)return null;let s=o[0],i=o[1];if(!s||!i)return null;let a=n.indexOf("<"),c=n.indexOf(">",a);if(a<0||c<0)return null;let f=n.slice(s.length+1+i.length+1,a).trim(),l=n.slice(a+1,c),d=n.slice(c+2),u=d.indexOf(" ");if(u<0)return null;let m=parseInt(d.slice(0,u),10),h=d.slice(u+1);return{oldHash:s,newHash:i,name:f,email:l,timestamp:m,tz:h,message:r}}async function Je(e,t){let n=Ls(e,t);if(!await e.fs.exists(n))return[];let r=await e.fs.readFile(n);if(!r.trim())return[];let o=[];for(let s of r.split(`
|
|
37
37
|
`)){if(!s)continue;let i=Jd(s);i&&o.push(i)}return o}function yc(e){return`${e.oldHash} ${e.newHash} ${e.name} <${e.email}> ${e.timestamp} ${e.tz} ${e.message}`}async function Tn(e,t,n){let r=Ls(e,t);if(await Yr(e.fs,r),n.length===0){await e.fs.writeFile(r,"");return}let o=`${n.map(yc).join(`
|
|
38
38
|
`)}
|
|
39
39
|
`;await e.fs.writeFile(r,o)}async function Ke(e,t,n){let r=Ls(e,t);await Yr(e.fs,r);let o=`${yc(n)}
|
|
40
|
-
`;if(await e.fs.exists(r)){let s=await e.fs.readFile(r);await e.fs.writeFile(r,s+o)}else await e.fs.writeFile(r,o)}async function Xr(e,t){let n=Ls(e,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function re(e,t,n,r,o,s,i=!1){let a=await Jt(e,t),c={oldHash:r??te,newHash:o,...a,message:s};await Ke(e,n,c),i&&n!=="HEAD"&&await Ke(e,"HEAD",c)}var Fe=Ee(()=>{"use strict";dt();
|
|
41
|
-
`)){let s=bu(o,t);s&&r.push(s)}return{patterns:r,src:n}}function yu(e,t){let{pattern:n,patternLen:r,nowildcardLen:o,flags:s}=t;if(o===r)return e===n;if(s&Ic){let i=n.slice(1);return e.length>=i.length&&e.endsWith(i)}return Jn(n,e,2)===0}function Eu(e,t){let{base:n}=t,{pattern:r,patternLen:o,nowildcardLen:s}=t;r[0]==="/"&&(r=r.slice(1),o--,s=Math.max(0,s-1));let i=n.length;if(i>0&&(e.length<i+1||e[i]!=="/"||!e.startsWith(n)))return!1;let a=i>0?e.slice(i+1):e,c=a.length;if(s>0){if(s>c||a.slice(0,s)!==r.slice(0,s))return!1;if(o===s&&c===s)return!0}return Jn(r,a,2)===0}function bi(e,t,n){let r=e.lastIndexOf("/")>=0?e.slice(e.lastIndexOf("/")+1):e;for(let o=n.patterns.length-1;o>=0;o--){let s=n.patterns[o];if(s&&!(s.flags&Sc&&!t)){if(s.flags&Oc){if(s.base&&!e.startsWith(`${s.base}/`))continue;if(yu(r,s))return s;continue}if(Eu(e,s))return s}}return null}function nn(e,t,n){for(let r=e.dirPatterns.length-1;r>=0;r--){let o=e.dirPatterns[r],s=bi(t,n,o);if(s)return s.flags&Us?"not-ignored":"ignored"}if(e.excludeFile){let r=bi(t,n,e.excludeFile);if(r)return r.flags&Us?"not-ignored":"ignored"}if(e.globalExclude){let r=bi(t,n,e.globalExclude);if(r)return r.flags&Us?"not-ignored":"ignored"}return"undecided"}async function br(e){let t={dirPatterns:[],excludeFile:null,globalExclude:null},n=T(e.gitDir,"info","exclude");try{let r=await e.fs.readFile(n);t.excludeFile=Qr(r,"",n)}catch{}try{let r=await ke(e,"core.excludesFile");if(r)try{let o=await e.fs.readFile(r);t.globalExclude=Qr(o,"",r)}catch{}}catch{}return t}function Qn(e,t,n,r){let s=Qr(t,n===""?"":n,r);return{...e,dirPatterns:[...e.dirPatterns,s]}}var Oc,Ic,Sc,Us,Ws=Ee(()=>{"use strict";Ne();le();Fs();Oc=1,Ic=4,Sc=8,Us=16});async function Tt(e,t){if(!e.workTree)throw new Error("Cannot diff working tree in a bare repository");let n=[];for(let s of t.entries){if(s.stage!==0)continue;let i=T(e.workTree,s.path),a;try{a=await lt(e.fs,i)}catch{a=null}if(!a){n.push({path:s.path,status:"deleted",indexHash:s.hash});continue}if(!a.isFile&&!a.isSymbolicLink){n.push({path:s.path,status:"deleted",indexHash:s.hash});continue}await vn(e.fs,i)!==s.hash&&n.push({path:s.path,status:"modified",indexHash:s.hash})}let r=new Set(t.entries.map(s=>s.path)),o=await et(e,e.workTree,"");for(let s of o)r.has(s)||n.push({path:s,status:"untracked"});return n.sort((s,i)=>Oe(s.path,i.path))}async function ct(e,t){if(!e.workTree)throw new Error("Cannot checkout in a bare repository");let n=await we(e,t.hash);if(n.type!=="blob")throw new Error(`Expected blob for ${t.path}, got ${n.type}`);let r=T(e.workTree,t.path),o=r.lastIndexOf("/");if(o>0&&await e.fs.mkdir(r.slice(0,o),{recursive:!0}),t.mode!=null&&pn(t.mode)&&e.fs.symlink){await lt(e.fs,r).then(()=>!0).catch(()=>!1)&&await e.fs.rm(r,{force:!0});let i=Ru.decode(n.content);await e.fs.symlink(i,r)}else{if(e.fs.lstat)try{(await e.fs.lstat(r)).isSymbolicLink&&await e.fs.rm(r,{force:!0})}catch{}await e.fs.writeFile(r,n.content)}}async function Tc(e,t){let n=await Ve(e,t);for(let r of n)await ct(e,r)}async function rn(e,t,n){if(!e.workTree)throw new Error("Cannot stage in a bare repository");let r=T(e.workTree,n);if(!await e.fs.exists(r))throw new Error(`Path does not exist: ${n}`);let o=await lt(e.fs,r);if(o.isSymbolicLink&&e.fs.readlink){let f=await e.fs.readlink(r),l=ku.encode(f),d=await $e(e,"blob",l),u={path:n,mode:40960,hash:d,stage:0,stat:{...Ie(),size:l.byteLength}};return{index:yt(t,u),hash:d}}let s=await e.fs.readFileBuffer(r),i=await $e(e,"blob",s),a=o.mode!=null?xu(o.mode):33188,c={path:n,mode:a,hash:i,stage:0,stat:{...Ie(),size:s.byteLength}};return{index:yt(t,c),hash:i}}async function et(e,t,n,r){let o=r?.skipIgnore??!1,s=null;if(!o){s=r?._ignore??await br(e);let c=T(t,".gitignore");try{let f=await e.fs.readFile(c);s=Qn(s,f,n,c)}catch{}}let i=[],a=await e.fs.readdir(t);for(let c of a){if(n===""&&c===".git")continue;let f=T(t,c),l=n?`${n}/${c}`:c,d=await lt(e.fs,f);if(d.isSymbolicLink){if(s&&nn(s,l,!1)==="ignored")continue;i.push(l)}else if(d.isDirectory){if(s&&nn(s,l,!0)==="ignored")continue;let u=await et(e,f,l,{skipIgnore:o,_ignore:s??void 0});i.push(...u)}else if(d.isFile){if(s&&nn(s,l,!1)==="ignored")continue;i.push(l)}}return i}function xu(e){return e>511?e:e&73?33261:33188}async function er(e,t,n){if(t===n||t==="/"||!t.startsWith(n)||!await e.exists(t)||!(await e.stat(t)).isDirectory)return;(await e.readdir(t)).length===0&&(await e.rm(t,{recursive:!0}),await er(e,Zt(t),n))}var ku,Ru,tt=Ee(()=>{"use strict";se();Ws();Pe();ie();le();Zn();ve();ku=new TextEncoder,Ru=new TextDecoder});function yi(e){return e.existsOnDisk&&e.indexHash===null}async function Cu(e,t,n){let r=await Promise.all(t.map(h=>ce(e,h.treeHash))),o=new Map,s=new Set;for(let h of n.entries)h.stage===0?o.set(h.path,h):s.add(h.path);let i=e.workTree?new Set(await et(e,e.workTree,"",{skipIgnore:!0})):new Set,a=null,c=async()=>(a===null&&(a=e.workTree?new Set(await et(e,e.workTree,"")):new Set),a),f=new Set;for(let h of r)for(let p of h.keys())f.add(p);let l=new Set;for(let h of n.entries)f.has(h.path)||l.add(h.path);for(let h of i)f.has(h)||l.add(h);let d=Array.from(f).sort().concat(Array.from(l).sort()),u=(h,p)=>r[h]?.get(p),m=[];for(let h of d){let p=null,g=null,w=null,y=null,x=null;if(r.length===1){let O=u(0,h);w=O?.hash??null,x=O?.mode??null}else if(r.length===2){let O=u(0,h),H=u(1,h);g=O?.hash??null,y=O?.mode??null,w=H?.hash??null,x=H?.mode??null}else if(r.length>=3){let O=u(0,h),H=u(1,h),G=u(2,h);p=O?.hash??null,g=H?.hash??null,y=H?.mode??null,w=G?.hash??null,x=G?.mode??null}let k=o.get(h)?.hash??null,E=s.has(h)?1:0,R=i.has(h),P,C=async()=>P!==void 0?P:R?(P=!(await c()).has(h),P):(P=!1,!1),v,D=async()=>{if(v!==void 0)return v;if(!R||!e.workTree)return v=null,null;let O=T(e.workTree,h);try{v=await vn(e.fs,O)}catch{v=null}return v};m.push({path:h,baseHash:p,headHash:g,remoteHash:w,indexHash:k,indexStage:E,existsOnDisk:R,isIgnoredOnDisk:C,getWorktreeHash:D,headMode:y,remoteMode:x})}return m}function qs(e,t){let n=e.remoteHash;return n===null?e.indexHash===null&&e.indexStage===0?{action:"SKIP",requirements:[]}:{action:"DELETE",requirements:t.reset?[]:["WORKTREE_MUST_BE_UPTODATE"]}:e.indexHash===n?{action:"KEEP",requirements:[]}:e.indexHash===null?{action:"TAKE",takeFrom:"remote",requirements:t.reset||!!t.strippedConflictPaths?.has(e.path)?[]:["NO_UNTRACKED"]}:{action:"TAKE",takeFrom:"remote",requirements:t.reset?[]:["WORKTREE_MUST_BE_UPTODATE"]}}function zs(e,t){let{headHash:n,remoteHash:r,indexHash:o}=e;return e.indexStage>0?n===r?r===null?{action:"DELETE",requirements:[]}:{action:"TAKE",takeFrom:"remote",requirements:[]}:{action:"KEEP",requirements:["INDEX_MUST_MATCH_HEAD"],caseNumber:-1}:o===null?r===null?n===null?{action:"SKIP",caseNumber:0,requirements:[]}:{action:"SKIP",caseNumber:2,requirements:["NO_UNTRACKED_REMOVED"]}:n!==null?n===r?{action:"SKIP",caseNumber:3,requirements:[]}:t.allowStagedChanges?{action:"TAKE",takeFrom:"remote",caseNumber:3,requirements:[]}:{action:"KEEP",caseNumber:3,requirements:["INDEX_MUST_MATCH_HEAD"]}:{action:"TAKE",takeFrom:"remote",caseNumber:1,requirements:["NO_UNTRACKED"]}:n===null&&r===null?{action:"KEEP",caseNumber:4,requirements:[]}:n===null&&r===o?{action:"KEEP",caseNumber:6,requirements:[]}:n===o&&r===null?{action:"DELETE",caseNumber:10,requirements:["WORKTREE_MUST_BE_UPTODATE"]}:n!==null&&n===r?{action:"KEEP",caseNumber:14,requirements:[]}:n!==null&&r!==null&&o===r?{action:"KEEP",caseNumber:18,requirements:[]}:n!==null&&r!==null&&o===n&&o!==r?{action:"TAKE",takeFrom:"remote",caseNumber:20,requirements:["WORKTREE_MUST_BE_UPTODATE"]}:t.allowStagedChanges?r===null?{action:"DELETE",caseNumber:-1,requirements:[]}:{action:"TAKE",takeFrom:"remote",caseNumber:-1,requirements:[]}:{action:"KEEP",requirements:["INDEX_MUST_MATCH_HEAD"],caseNumber:-1}}function Pu(e,t){switch(e.action){case"TAKE":return e.takeFrom==="head"?t.headHash:e.takeFrom==="remote"?t.remoteHash:e.takeFrom==="base"?t.baseHash:null;case"DELETE":return null;case"KEEP":return t.indexHash;default:return null}}async function Ou(e,t,n){let r=[];if(n.reset)return r;for(let[o,s]of e){if(s.requirements.length===0)continue;let i=t.get(o);if(!i)continue;let a=Pu(s,i);for(let c of s.requirements){if(n.allowStagedChanges&&c==="INDEX_MUST_MATCH_HEAD")continue;let f=await Iu(c,i,a);if(f){r.push({path:o,error:f});break}}if(n.stopAtFirstError&&r.length>0)break}return r}async function Iu(e,t,n,r){switch(e){case"INDEX_MUST_NOT_EXIST":return t.indexHash!==null?"WOULD_OVERWRITE":yi(t)?"WOULD_LOSE_UNTRACKED_REMOVED":null;case"INDEX_MUST_MATCH_HEAD":return t.indexHash!==t.headHash?"WOULD_OVERWRITE":null;case"INDEX_MUST_MATCH_RESULT":return t.indexHash!==null&&t.indexHash!==n?"WOULD_OVERWRITE":null;case"WORKTREE_MUST_BE_UPTODATE":{if(!t.existsOnDisk)return null;let o=await t.getWorktreeHash();return o!==t.indexHash?r?.allowContentEscapeHatch&&(n!==null&&o===n||o===null&&n===null)?null:"NOT_UPTODATE_FILE":null}case"NO_UNTRACKED":return yi(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_OVERWRITTEN":null;case"NO_UNTRACKED_REMOVED":return yi(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_REMOVED":null}}function Su(e,t,n,r){let o=[],s=[],i=new Set(e.keys()),a=new Map;for(let c of n.entries)i.has(c.path)||o.push(c),c.stage===0&&a.set(c.path,c);for(let[c,f]of e){let l=t.get(c);if(l)switch(f.action){case"KEEP":{let d=a.get(c);d&&(o.push(d),r.reset&&r.updateWorktree&&s.push({path:c,type:"checkout",hash:d.hash,mode:d.mode}));break}case"TAKE":{let d=f.takeFrom==="head"?l.headHash:l.remoteHash,u=f.takeFrom==="head"?l.headMode:l.remoteMode,m=u?Number.parseInt(u,8):33188;o.push({path:c,mode:m,hash:d,stage:0,stat:Ie()}),r.updateWorktree&&s.push({path:c,type:"checkout",hash:d,mode:m});break}case"DELETE":{r.updateWorktree&&l.existsOnDisk&&s.push({path:c,type:"delete"});break}case"SKIP":break}}return o.sort((c,f)=>Oe(c.path,f.path)||c.stage-f.stage),{newEntries:o,worktreeOps:s}}function Ks(e,t){let n=t.actionHint??t.operationName,r=[];for(let{error:s,msg:i,fix:a}of $u){let c=e.filter(f=>f.error===s).map(f=>f.path).sort();if(c.length>0){let f=c.map(l=>` ${l}`).join(`
|
|
40
|
+
`;if(await e.fs.exists(r)){let s=await e.fs.readFile(r);await e.fs.writeFile(r,s+o)}else await e.fs.writeFile(r,o)}async function Xr(e,t){let n=Ls(e,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function re(e,t,n,r,o,s,i=!1){let a=await Jt(e,t),c={oldHash:r??te,newHash:o,...a,message:s};await Ke(e,n,c),i&&n!=="HEAD"&&await Ke(e,"HEAD",c)}var Fe=Ee(()=>{"use strict";dt();Pn();le();Sn();dt()});function Qd(e){let t=[],n=e.length;for(;n>0;){let s=e.slice(0,n).match(/^(.+?)~(\d*)$/);if(s&&s[1]!==void 0&&s[2]!==void 0){let c=s[2]===""?1:parseInt(s[2],10);t.unshift({type:"tilde",n:c}),n=s[1].length;continue}let i=e.slice(0,n).match(/^(.+?)\^{([^}]*)}$/);if(i&&i[1]!==void 0&&i[2]!==void 0){t.unshift({type:"peel",target:i[2]}),n=i[1].length;continue}let a=e.slice(0,n).match(/^(.+?)\^(\d*)$/);if(a&&a[1]!==void 0&&a[2]!==void 0){let c=a[2]===""?1:parseInt(a[2],10);t.unshift({type:"caret",n:c}),n=a[1].length;continue}break}let r=e.slice(0,n),o=r.match(/^(.+?)@\{(\d+)\}$/);return o&&o[1]!==void 0&&o[2]!==void 0?{base:o[1],reflogIndex:parseInt(o[2],10),suffixes:t}:{base:r,suffixes:t}}async function eu(e,t){let n=await uc(e,t);if(n.length===0)return null;if(n.length>1)throw new mi(t);return n[0]}async function tu(e,t){if(t==="HEAD"||t==="@")return F(e,"HEAD");if(Ec.includes(t))return F(e,t);if(/^[0-9a-f]{40}$/.test(t))return await Kt(e,t)?t:null;if(/^[0-9a-f]{4,39}$/.test(t)){let s=await eu(e,t);if(s)return s}if(t.startsWith("refs/")){let s=await F(e,t);if(s)return s}let n=await F(e,`refs/heads/${t}`);if(n)return n;let r=await F(e,`refs/tags/${t}`);if(r)return r;let o=await F(e,`refs/remotes/${t}`);return o||null}function nu(e){if(e==="HEAD"||e==="@")return"HEAD";for(let t of Ec)if(e===t)return t;return e.startsWith("refs/")?e:`refs/heads/${e}`}async function ru(e,t,n){let r=nu(t),o=await Je(e,r);if(o.length===0)return null;let s=o.length-1-n;if(s<0||s>=o.length)return null;let i=o[s];return i?i.newHash:null}async function su(e,t,n){if(n===""||n==="commit")try{return await _e(e,t)}catch{return null}if(n==="tree"){let o;try{o=await _e(e,t)}catch{return null}return(await j(e,o)).tree}return(await we(e,t)).type!==n?null:t}async function Be(e,t){let{base:n,reflogIndex:r,suffixes:o}=Qd(t),s;if(r!==void 0?s=await ru(e,n,r):s=await tu(e,n),!s)return null;o.some(a=>a.type==="tilde"||a.type==="caret")&&(s=await _e(e,s));for(let a of o)if(a.type==="peel"){if(!s)return null;s=await su(e,s,a.target)}else if(a.type==="tilde")for(let c=0;c<a.n;c++){if(!s)return null;let f=await j(e,s);if(f.parents.length===0||(s=f.parents[0]??null,!s))return null}else{if(a.n===0)continue;if(!s)return null;let c=await j(e,s);if(a.n>c.parents.length||(s=c.parents[a.n-1]??null,!s))return null}return s}function _s(e){let t=e.indexOf(":");return t<0?null:{rev:e.slice(0,t)||"HEAD",path:e.slice(t+1)}}var Ec,mi,hn=Ee(()=>{"use strict";ie();Fe();ue();Ec=["HEAD","FETCH_HEAD","ORIG_HEAD","MERGE_HEAD","CHERRY_PICK_HEAD","REBASE_HEAD"];mi=class extends Error{constructor(n){super(`short object ID ${n} is ambiguous`);this.prefix=n}}});function lt(e,t){return e.lstat?e.lstat(t):e.stat(t)}function pn(e){return typeof e=="string"?e==="120000":e===40960}async function Zr(e,t){if((await lt(e,t)).isSymbolicLink&&e.readlink){let r=await e.readlink(t);return ou.encode(r)}return e.readFileBuffer(t)}async function vn(e,t){let n=await Zr(e,t);return ut("blob",n)}var ou,Zn=Ee(()=>{"use strict";ie();ou=new TextEncoder});function Hn(e){let t=[],n=0;for(;n<e.byteLength;){let r=e.indexOf(32,n);if(r===-1)break;let o=kc.decode(e.subarray(n,r)),s=e.indexOf(0,r+1);if(s===-1)break;let i=kc.decode(e.subarray(r+1,s)),a=e.subarray(s+1,s+21),c=Cn(a),f=o.padStart(6,"0");t.push({mode:f,name:i,hash:c}),n=s+21}return{type:"tree",entries:t}}function Rc(e){let t=[];for(let s of e.entries){let i=s.mode.replace(/^0+/,""),a=iu.encode(`${i} ${s.name}\0`),c=$t(s.hash);t.push(a),t.push(c)}let n=t.reduce((s,i)=>s+i.byteLength,0),r=new Uint8Array(n),o=0;for(let s of t)r.set(s,o),o+=s.byteLength;return r}var iu,kc,Ns=Ee(()=>{"use strict";dt();iu=new TextEncoder,kc=new TextDecoder});async function Ge(e,t){return xc(e,t,"")}async function xc(e,t,n){let r=[],o=new Map;for(let i of t){let a=n?i.path.slice(n.length+1):i.path,c=a.indexOf("/");if(c===-1)r.push({mode:au(i.mode),name:a,hash:i.hash});else{let f=a.slice(0,c),l=o.get(f);l||(l=[],o.set(f,l)),l.push(i)}}for(let[i,a]of o){let c=n?`${n}/${i}`:i,f=await xc(e,a,c);r.push({mode:Vr.DIRECTORY,name:i,hash:f})}r.sort((i,a)=>{let c=i.mode===Vr.DIRECTORY?`${i.name}/`:i.name,f=a.mode===Vr.DIRECTORY?`${a.name}/`:a.name;return c<f?-1:c>f?1:0});let s=Rc({type:"tree",entries:r});return Se(e,"tree",s)}async function Ve(e,t,n=""){let r=await we(e,t);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let o=Hn(r.content),s=[];for(let i of o.entries){let a=n?`${n}/${i.name}`:i.name;if(i.mode===Vr.DIRECTORY){let c=await Ve(e,i.hash,a);s.push(...c)}else s.push({path:a,mode:i.mode,hash:i.hash})}return s}async function ce(e,t){if(!t)return new Map;let n=await Ve(e,t);return new Map(n.map(r=>[r.path,r]))}async function We(e,t,n){let r=await ce(e,t),o=await ce(e,n),s=[];for(let[i,a]of r){let c=o.get(i);c?(a.hash!==c.hash||a.mode!==c.mode)&&s.push({path:i,status:"modified",oldHash:a.hash,newHash:c.hash,oldMode:a.mode,newMode:c.mode}):s.push({path:i,status:"deleted",oldHash:a.hash,oldMode:a.mode})}for(let[i,a]of o)r.has(i)||s.push({path:i,status:"added",newHash:a.hash,newMode:a.mode});return s.sort((i,a)=>Oe(i.path,a.path))}function au(e){return e.toString(8).padStart(6,"0")}var ve=Ee(()=>{"use strict";se();ie();Ns();di()});function Pc(e){return/^[a-zA-Z0-9]$/.test(e)}function cu(e){return/^[a-zA-Z]$/.test(e)}function fu(e){return e>="0"&&e<="9"}function hi(e){return e>="A"&&e<="Z"}function pi(e){return e>="a"&&e<="z"}function Cc(e){return/^\s$/.test(e)}function lu(e){return e===" "||e===" "}function wi(e){let t=e.charCodeAt(0);return t>=32&&t<=126}function du(e){return wi(e)&&!Cc(e)}function uu(e){return wi(e)&&!Pc(e)&&e!==" "}function mu(e){let t=e.charCodeAt(0);return t<32||t===127}function hu(e){return/^[0-9a-fA-F]$/.test(e)}function Jr(e,t,n){return n?e.toLowerCase()===t.toLowerCase():e===t}function gi(e,t,n,r,o){let s=(o&1)!==0,i=(o&2)!==0;for(;t<e.length;){let a=e[t];if(r>=n.length&&a!=="*")return-1;let c=r<n.length?n[r]:"";switch(a){case"\\":{if(t++,t>=e.length)return-1;if(!Jr(n[r],e[t],s))return 1;r++,t++;break}case"?":{if(i&&c==="/")return 1;r++,t++;break}case"*":{let f;if(t++,t<e.length&&e[t]==="*"){let l=t;for(;t<e.length&&e[t]==="*";)t++;if(!i)f=!0;else if((l-1<1||e[l-2]==="/")&&(t>=e.length||e[t]==="/"||e[t]==="\\"&&t+1<e.length&&e[t+1]==="/")){if(t<e.length&&e[t]==="/"&&gi(e,t+1,n,r,o)===0)return 0;f=!0}else f=!1}else f=!i;if(t>=e.length)return!f&&n.indexOf("/",r)!==-1?-2:0;if(!f&&e[t]==="/"){let l=n.indexOf("/",r);if(l===-1)return-1;r=l+1,t++;break}for(;!(r>=n.length);){if(!pu(e[t])){let d=s?e[t].toLowerCase():e[t];for(;r<n.length&&(f||n[r]!=="/")&&(s?n[r].toLowerCase():n[r])!==d;)r++;if(r>=n.length||!f&&n[r]==="/")return r<n.length&&!f&&n[r]==="/"?-2:f?-1:-2}let l=gi(e,t,n,r,o);if(l!==1){if(!f||l!==-2)return l}else if(!f&&n[r]==="/")return-2;r++}return-1}case"[":{if(i&&c==="/")return 1;if(t++,t>=e.length)return-1;let f=!1;(e[t]==="!"||e[t]==="^")&&(f=!0,t++);let l=!1,d="",u=!0;for(;t<e.length&&(u||e[t]!=="]");){u=!1;let m=e[t];if(m==="\\"){if(t++,t>=e.length)return-1;m=e[t],Jr(c,m,s)&&(l=!0)}else if(m==="-"&&d&&t+1<e.length&&e[t+1]!=="]"){if(t++,m=e[t],m==="\\"){if(t++,t>=e.length)return-1;m=e[t]}let h=d,p=m;if(c>=h&&c<=p&&(l=!0),s){if(pi(c)){let g=c.toUpperCase();g>=h&&g<=p&&(l=!0)}else if(hi(c)){let g=c.toLowerCase();g>=h&&g<=p&&(l=!0)}}m=""}else if(m==="["&&t+1<e.length&&e[t+1]===":"){t+=2;let h=t;for(;t<e.length&&e[t]!=="]";)t++;if(t>=e.length)return-1;let p=t-h-1;if(p<0||e[t-1]!==":")t=h-2,m="[",Jr(c,m,s)&&(l=!0);else{let g=e.slice(h,h+p);gu(g,c,s)&&(l=!0),m=""}}else Jr(c,m,s)&&(l=!0);d=m,t++}if(t>=e.length)return-1;if(t++,l===f)return 1;r++;break}default:{if(!Jr(c,a,s))return 1;r++,t++;break}}}return r>=n.length?0:1}function pu(e){return e==="*"||e==="?"||e==="["||e==="\\"}function gu(e,t,n){switch(e){case"alnum":return Pc(t);case"alpha":return cu(t);case"blank":return lu(t);case"cntrl":return mu(t);case"digit":return fu(t);case"graph":return du(t);case"lower":return pi(t)||n&&hi(t);case"print":return wi(t);case"punct":return uu(t);case"space":return Cc(t);case"upper":return hi(t)||n&&pi(t);case"xdigit":return hu(t);default:return!1}}function Jn(e,t,n=0){return gi(e,0,t,0,n)===0?0:1}var Fs=Ee(()=>{"use strict"});function Sc(e){for(let t=0;t<e.length;t++){let n=e[t];if(n==="\\"){t++;continue}if(n==="*"||n==="?"||n==="[")return t}return e.length}function wu(e){return Sc(e)===e.length}function bu(e,t){let n=e;for(;n.length>0;){let c=n[n.length-1];if(c===" "||c===" "){if(n.length>=2&&n[n.length-2]==="\\"){n=n.slice(0,n.length-2)+n[n.length-1];break}n=n.slice(0,-1)}else break}if(n.length===0||n[0]==="#")return null;let r=0,o=n;if(o[0]==="!"&&(r|=Us,o=o.slice(1)),o.length===0)return null;let s=o.length;o[s-1]==="/"&&(s--,o=o.slice(0,s),r|=$c);let i=!1;for(let c=0;c<s;c++)if(o[c]==="/"){i=!0;break}i||(r|=Oc);let a=Math.min(Sc(o),s);return o[0]==="*"&&wu(o.slice(1))&&(r|=Ic),{pattern:o,patternLen:s,nowildcardLen:a,flags:r,base:t}}function Qr(e,t,n){let r=[];for(let o of e.split(`
|
|
41
|
+
`)){let s=bu(o,t);s&&r.push(s)}return{patterns:r,src:n}}function yu(e,t){let{pattern:n,patternLen:r,nowildcardLen:o,flags:s}=t;if(o===r)return e===n;if(s&Ic){let i=n.slice(1);return e.length>=i.length&&e.endsWith(i)}return Jn(n,e,2)===0}function Eu(e,t){let{base:n}=t,{pattern:r,patternLen:o,nowildcardLen:s}=t;r[0]==="/"&&(r=r.slice(1),o--,s=Math.max(0,s-1));let i=n.length;if(i>0&&(e.length<i+1||e[i]!=="/"||!e.startsWith(n)))return!1;let a=i>0?e.slice(i+1):e,c=a.length;if(s>0){if(s>c||a.slice(0,s)!==r.slice(0,s))return!1;if(o===s&&c===s)return!0}return Jn(r,a,2)===0}function bi(e,t,n){let r=e.lastIndexOf("/")>=0?e.slice(e.lastIndexOf("/")+1):e;for(let o=n.patterns.length-1;o>=0;o--){let s=n.patterns[o];if(s&&!(s.flags&$c&&!t)){if(s.flags&Oc){if(s.base&&!e.startsWith(`${s.base}/`))continue;if(yu(r,s))return s;continue}if(Eu(e,s))return s}}return null}function nn(e,t,n){for(let r=e.dirPatterns.length-1;r>=0;r--){let o=e.dirPatterns[r],s=bi(t,n,o);if(s)return s.flags&Us?"not-ignored":"ignored"}if(e.excludeFile){let r=bi(t,n,e.excludeFile);if(r)return r.flags&Us?"not-ignored":"ignored"}if(e.globalExclude){let r=bi(t,n,e.globalExclude);if(r)return r.flags&Us?"not-ignored":"ignored"}return"undecided"}async function yr(e){let t={dirPatterns:[],excludeFile:null,globalExclude:null},n=T(e.gitDir,"info","exclude");try{let r=await e.fs.readFile(n);t.excludeFile=Qr(r,"",n)}catch{}try{let r=await ke(e,"core.excludesFile");if(r)try{let o=await e.fs.readFile(r);t.globalExclude=Qr(o,"",r)}catch{}}catch{}return t}function Qn(e,t,n,r){let s=Qr(t,n===""?"":n,r);return{...e,dirPatterns:[...e.dirPatterns,s]}}var Oc,Ic,$c,Us,Ws=Ee(()=>{"use strict";Ne();le();Fs();Oc=1,Ic=4,$c=8,Us=16});async function Tt(e,t){if(!e.workTree)throw new Error("Cannot diff working tree in a bare repository");let n=[];for(let s of t.entries){if(s.stage!==0)continue;let i=T(e.workTree,s.path),a;try{a=await lt(e.fs,i)}catch{a=null}if(!a){n.push({path:s.path,status:"deleted",indexHash:s.hash});continue}if(!a.isFile&&!a.isSymbolicLink){n.push({path:s.path,status:"deleted",indexHash:s.hash});continue}await vn(e.fs,i)!==s.hash&&n.push({path:s.path,status:"modified",indexHash:s.hash})}let r=new Set(t.entries.map(s=>s.path)),o=await et(e,e.workTree,"");for(let s of o)r.has(s)||n.push({path:s,status:"untracked"});return n.sort((s,i)=>Oe(s.path,i.path))}async function ct(e,t){if(!e.workTree)throw new Error("Cannot checkout in a bare repository");let n=await we(e,t.hash);if(n.type!=="blob")throw new Error(`Expected blob for ${t.path}, got ${n.type}`);let r=T(e.workTree,t.path),o=r.lastIndexOf("/");if(o>0&&await e.fs.mkdir(r.slice(0,o),{recursive:!0}),t.mode!=null&&pn(t.mode)&&e.fs.symlink){await lt(e.fs,r).then(()=>!0).catch(()=>!1)&&await e.fs.rm(r,{force:!0});let i=Ru.decode(n.content);await e.fs.symlink(i,r)}else{if(e.fs.lstat)try{(await e.fs.lstat(r)).isSymbolicLink&&await e.fs.rm(r,{force:!0})}catch{}await e.fs.writeFile(r,n.content)}}async function Tc(e,t){let n=await Ve(e,t);for(let r of n)await ct(e,r)}async function rn(e,t,n){if(!e.workTree)throw new Error("Cannot stage in a bare repository");let r=T(e.workTree,n);if(!await e.fs.exists(r))throw new Error(`Path does not exist: ${n}`);let o=await lt(e.fs,r);if(o.isSymbolicLink&&e.fs.readlink){let f=await e.fs.readlink(r),l=ku.encode(f),d=await Se(e,"blob",l),u={path:n,mode:40960,hash:d,stage:0,stat:{...Ie(),size:l.byteLength}};return{index:Et(t,u),hash:d}}let s=await e.fs.readFileBuffer(r),i=await Se(e,"blob",s),a=o.mode!=null?xu(o.mode):33188,c={path:n,mode:a,hash:i,stage:0,stat:{...Ie(),size:s.byteLength}};return{index:Et(t,c),hash:i}}async function et(e,t,n,r){let o=r?.skipIgnore??!1,s=null;if(!o){s=r?._ignore??await yr(e);let c=T(t,".gitignore");try{let f=await e.fs.readFile(c);s=Qn(s,f,n,c)}catch{}}let i=[],a=await e.fs.readdir(t);for(let c of a){if(n===""&&c===".git")continue;let f=T(t,c),l=n?`${n}/${c}`:c,d=await lt(e.fs,f);if(d.isSymbolicLink){if(s&&nn(s,l,!1)==="ignored")continue;i.push(l)}else if(d.isDirectory){if(s&&nn(s,l,!0)==="ignored")continue;let u=await et(e,f,l,{skipIgnore:o,_ignore:s??void 0});i.push(...u)}else if(d.isFile){if(s&&nn(s,l,!1)==="ignored")continue;i.push(l)}}return i}function xu(e){return e>511?e:e&73?33261:33188}async function er(e,t,n){if(t===n||t==="/"||!t.startsWith(n)||!await e.exists(t)||!(await e.stat(t)).isDirectory)return;(await e.readdir(t)).length===0&&(await e.rm(t,{recursive:!0}),await er(e,Zt(t),n))}var ku,Ru,tt=Ee(()=>{"use strict";se();Ws();Ce();ie();le();Zn();ve();ku=new TextEncoder,Ru=new TextDecoder});function yi(e){return e.existsOnDisk&&e.indexHash===null}async function Pu(e,t,n){let r=await Promise.all(t.map(h=>ce(e,h.treeHash))),o=new Map,s=new Set;for(let h of n.entries)h.stage===0?o.set(h.path,h):s.add(h.path);let i=e.workTree?new Set(await et(e,e.workTree,"",{skipIgnore:!0})):new Set,a=null,c=async()=>(a===null&&(a=e.workTree?new Set(await et(e,e.workTree,"")):new Set),a),f=new Set;for(let h of r)for(let p of h.keys())f.add(p);let l=new Set;for(let h of n.entries)f.has(h.path)||l.add(h.path);for(let h of i)f.has(h)||l.add(h);let d=Array.from(f).sort().concat(Array.from(l).sort()),u=(h,p)=>r[h]?.get(p),m=[];for(let h of d){let p=null,g=null,w=null,y=null,x=null;if(r.length===1){let O=u(0,h);w=O?.hash??null,x=O?.mode??null}else if(r.length===2){let O=u(0,h),H=u(1,h);g=O?.hash??null,y=O?.mode??null,w=H?.hash??null,x=H?.mode??null}else if(r.length>=3){let O=u(0,h),H=u(1,h),G=u(2,h);p=O?.hash??null,g=H?.hash??null,y=H?.mode??null,w=G?.hash??null,x=G?.mode??null}let k=o.get(h)?.hash??null,E=s.has(h)?1:0,R=i.has(h),C,P=async()=>C!==void 0?C:R?(C=!(await c()).has(h),C):(C=!1,!1),v,D=async()=>{if(v!==void 0)return v;if(!R||!e.workTree)return v=null,null;let O=T(e.workTree,h);try{v=await vn(e.fs,O)}catch{v=null}return v};m.push({path:h,baseHash:p,headHash:g,remoteHash:w,indexHash:k,indexStage:E,existsOnDisk:R,isIgnoredOnDisk:P,getWorktreeHash:D,headMode:y,remoteMode:x})}return m}function qs(e,t){let n=e.remoteHash;return n===null?e.indexHash===null&&e.indexStage===0?{action:"SKIP",requirements:[]}:{action:"DELETE",requirements:t.reset?[]:["WORKTREE_MUST_BE_UPTODATE"]}:e.indexHash===n?{action:"KEEP",requirements:[]}:e.indexHash===null?{action:"TAKE",takeFrom:"remote",requirements:t.reset||!!t.strippedConflictPaths?.has(e.path)?[]:["NO_UNTRACKED"]}:{action:"TAKE",takeFrom:"remote",requirements:t.reset?[]:["WORKTREE_MUST_BE_UPTODATE"]}}function zs(e,t){let{headHash:n,remoteHash:r,indexHash:o}=e;return e.indexStage>0?n===r?r===null?{action:"DELETE",requirements:[]}:{action:"TAKE",takeFrom:"remote",requirements:[]}:{action:"KEEP",requirements:["INDEX_MUST_MATCH_HEAD"],caseNumber:-1}:o===null?r===null?n===null?{action:"SKIP",caseNumber:0,requirements:[]}:{action:"SKIP",caseNumber:2,requirements:["NO_UNTRACKED_REMOVED"]}:n!==null?n===r?{action:"SKIP",caseNumber:3,requirements:[]}:t.allowStagedChanges?{action:"TAKE",takeFrom:"remote",caseNumber:3,requirements:[]}:{action:"KEEP",caseNumber:3,requirements:["INDEX_MUST_MATCH_HEAD"]}:{action:"TAKE",takeFrom:"remote",caseNumber:1,requirements:["NO_UNTRACKED"]}:n===null&&r===null?{action:"KEEP",caseNumber:4,requirements:[]}:n===null&&r===o?{action:"KEEP",caseNumber:6,requirements:[]}:n===o&&r===null?{action:"DELETE",caseNumber:10,requirements:["WORKTREE_MUST_BE_UPTODATE"]}:n!==null&&n===r?{action:"KEEP",caseNumber:14,requirements:[]}:n!==null&&r!==null&&o===r?{action:"KEEP",caseNumber:18,requirements:[]}:n!==null&&r!==null&&o===n&&o!==r?{action:"TAKE",takeFrom:"remote",caseNumber:20,requirements:["WORKTREE_MUST_BE_UPTODATE"]}:t.allowStagedChanges?r===null?{action:"DELETE",caseNumber:-1,requirements:[]}:{action:"TAKE",takeFrom:"remote",caseNumber:-1,requirements:[]}:{action:"KEEP",requirements:["INDEX_MUST_MATCH_HEAD"],caseNumber:-1}}function Cu(e,t){switch(e.action){case"TAKE":return e.takeFrom==="head"?t.headHash:e.takeFrom==="remote"?t.remoteHash:e.takeFrom==="base"?t.baseHash:null;case"DELETE":return null;case"KEEP":return t.indexHash;default:return null}}async function Ou(e,t,n){let r=[];if(n.reset)return r;for(let[o,s]of e){if(s.requirements.length===0)continue;let i=t.get(o);if(!i)continue;let a=Cu(s,i);for(let c of s.requirements){if(n.allowStagedChanges&&c==="INDEX_MUST_MATCH_HEAD")continue;let f=await Iu(c,i,a);if(f){r.push({path:o,error:f});break}}if(n.stopAtFirstError&&r.length>0)break}return r}async function Iu(e,t,n,r){switch(e){case"INDEX_MUST_NOT_EXIST":return t.indexHash!==null?"WOULD_OVERWRITE":yi(t)?"WOULD_LOSE_UNTRACKED_REMOVED":null;case"INDEX_MUST_MATCH_HEAD":return t.indexHash!==t.headHash?"WOULD_OVERWRITE":null;case"INDEX_MUST_MATCH_RESULT":return t.indexHash!==null&&t.indexHash!==n?"WOULD_OVERWRITE":null;case"WORKTREE_MUST_BE_UPTODATE":{if(!t.existsOnDisk)return null;let o=await t.getWorktreeHash();return o!==t.indexHash?r?.allowContentEscapeHatch&&(n!==null&&o===n||o===null&&n===null)?null:"NOT_UPTODATE_FILE":null}case"NO_UNTRACKED":return yi(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_OVERWRITTEN":null;case"NO_UNTRACKED_REMOVED":return yi(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_REMOVED":null}}function $u(e,t,n,r){let o=[],s=[],i=new Set(e.keys()),a=new Map;for(let c of n.entries)i.has(c.path)||o.push(c),c.stage===0&&a.set(c.path,c);for(let[c,f]of e){let l=t.get(c);if(l)switch(f.action){case"KEEP":{let d=a.get(c);d&&(o.push(d),r.reset&&r.updateWorktree&&s.push({path:c,type:"checkout",hash:d.hash,mode:d.mode}));break}case"TAKE":{let d=f.takeFrom==="head"?l.headHash:l.remoteHash,u=f.takeFrom==="head"?l.headMode:l.remoteMode,m=u?Number.parseInt(u,8):33188;o.push({path:c,mode:m,hash:d,stage:0,stat:Ie()}),r.updateWorktree&&s.push({path:c,type:"checkout",hash:d,mode:m});break}case"DELETE":{r.updateWorktree&&l.existsOnDisk&&s.push({path:c,type:"delete"});break}case"SKIP":break}}return o.sort((c,f)=>Oe(c.path,f.path)||c.stage-f.stage),{newEntries:o,worktreeOps:s}}function Ks(e,t){let n=t.actionHint??t.operationName,r=[];for(let{error:s,msg:i,fix:a}of Su){let c=e.filter(f=>f.error===s).map(f=>f.path).sort();if(c.length>0){let f=c.map(l=>` ${l}`).join(`
|
|
42
42
|
`);r.push(`${i(t.operationName)}
|
|
43
43
|
${f}
|
|
44
44
|
${a(n)}
|
|
45
45
|
`)}}return{stdout:"",stderr:r.length>0?`${r.join("")}Aborting
|
|
46
|
-
`:"",exitCode:t.errorExitCode}}async function tr(e,t,n,r){let o=await
|
|
46
|
+
`:"",exitCode:t.errorExitCode}}async function tr(e,t,n,r){let o=await Pu(e,t,n),s=new Map(o.map(l=>[l.path,l])),i=new Map;for(let l of o){let d=r.mergeFn(l,r);i.set(l.path,d)}let a=await Ou(i,s,r);if(a.length>0)return{success:!1,newEntries:[],worktreeOps:[],errors:a,errorOutput:Ks(a,r)};let{newEntries:c,worktreeOps:f}=$u(i,s,n,r);return{success:!0,newEntries:c,worktreeOps:f,errors:[],errorOutput:null}}async function Me(e,t){if(!e.workTree)return;let n=e.workTree,r=[];for(let o of t){let s=T(n,o.path);o.type==="delete"?await lt(e.fs,s).then(()=>!0).catch(()=>!1)&&(await e.fs.rm(s),r.push(s)):o.type==="checkout"&&o.hash&&await ct(e,{path:o.path,hash:o.hash,mode:o.mode})}for(let o of r)await er(e.fs,Zt(o),n)}async function An(e,t,n,r){return tr(e,[{label:"current",treeHash:t},{label:"target",treeHash:n}],r,{mergeFn:zs,updateWorktree:!0,reset:!1,errorExitCode:1,operationName:"checkout",actionHint:"switch branches"})}async function vc(e,t,n,r){return tr(e,[{label:"HEAD",treeHash:t},{label:"target",treeHash:n}],r,{mergeFn:zs,updateWorktree:!0,reset:!1,errorExitCode:1,operationName:"merge"})}async function gn(e,t,n){return tr(e,[{label:"target",treeHash:t}],n,{mergeFn:qs,updateWorktree:!0,reset:!0,errorExitCode:128,operationName:"reset"})}async function Vs(e,t,n,r){let o=new Set;for(let a of n.entries)a.stage>0&&o.add(a.path);let s={version:n.version,entries:De(n)},i=await tr(e,[{label:"ORIG_HEAD",treeHash:t}],s,{mergeFn:qs,updateWorktree:!0,reset:!1,errorExitCode:128,operationName:"merge",stopAtFirstError:!0,strippedConflictPaths:o});if(!i.success){let a=r??"HEAD",c=[];for(let f of i.errors)f.error==="NOT_UPTODATE_FILE"?c.push(`error: Entry '${f.path}' not uptodate. Cannot merge.
|
|
47
47
|
`):f.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"&&c.push(`error: Untracked working tree file '${f.path}' would be overwritten by merge.
|
|
48
48
|
`);return c.length>0&&(i.errorOutput=L(c.join("")+`fatal: Could not reset index file to revision '${a}'.
|
|
49
|
-
`,128)),i}if(e.workTree&&o.size>0){let a=await ce(e,t),c=new Set(i.newEntries.map(f=>f.path));for(let f of o)!a.has(f)&&!c.has(f)&&i.worktreeOps.push({path:f,type:"delete"})}return i}var
|
|
49
|
+
`,128)),i}if(e.workTree&&o.size>0){let a=await ce(e,t),c=new Set(i.newEntries.map(f=>f.path));for(let f of o)!a.has(f)&&!c.has(f)&&i.worktreeOps.push({path:f,type:"delete"})}return i}var Su,sn=Ee(()=>{"use strict";se();Ce();le();Zn();ve();tt();Su=[{error:"WOULD_OVERWRITE",msg:e=>`error: Your local changes to the following files would be overwritten by ${e}:`,fix:e=>`Please commit your changes or stash them before you ${e}.`},{error:"NOT_UPTODATE_FILE",msg:e=>`error: Your local changes to the following files would be overwritten by ${e}:`,fix:e=>`Please commit your changes or stash them before you ${e}.`},{error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN",msg:e=>`error: The following untracked working tree files would be overwritten by ${e}:`,fix:e=>`Please move or remove them before you ${e}.`},{error:"WOULD_LOSE_UNTRACKED_REMOVED",msg:e=>`error: The following untracked working tree files would be removed by ${e}:`,fix:e=>`Please move or remove them before you ${e}.`}]});function I(e){return{stdout:"",stderr:`fatal: ${e}
|
|
50
50
|
`,exitCode:128}}function L(e,t=1){return{stdout:"",stderr:e,exitCode:t}}async function W(e,t,n){let r=await Xn(e,t);return r?n?{...r,...n}:r:Tu}function M(e){return typeof e=="object"&&e!==null&&"exitCode"in e}function Xe(e){return e.workTree?null:vu}async function Ze(e){let t=await Z(e);return t||I("your current branch does not have any commits yet")}function wn(e,t,n=`fatal: Exiting because of an unresolved conflict.
|
|
51
|
-
`){return
|
|
51
|
+
`){return St(e)?L(`error: ${t} is not possible because you have unmerged files.
|
|
52
52
|
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
|
|
53
53
|
hint: as appropriate to mark resolution and make a commit.
|
|
54
|
-
`+n,128):null}async function vt(e,t,n){let r=await Be(e,t);return r||I(n??`bad revision '${t}'`)}async function He(e,t,n){let r=await Be(e,t);if(!r)return I(n??`bad revision '${t}'`);try{let o=await _e(e,r),s=await j(e,o);return{hash:o,commit:s}}catch{return I(n??`bad revision '${t}'`)}}async function Qe(e,t){try{return await Gr(e,t)}catch(n){return I(n.message)}}async function on(e,t){try{return await
|
|
54
|
+
`+n,128):null}async function vt(e,t,n){let r=await Be(e,t);return r||I(n??`bad revision '${t}'`)}async function He(e,t,n){let r=await Be(e,t);if(!r)return I(n??`bad revision '${t}'`);try{let o=await _e(e,r),s=await j(e,o);return{hash:o,commit:s}}catch{return I(n??`bad revision '${t}'`)}}async function Qe(e,t){try{return await Gr(e,t)}catch(n){return I(n.message)}}async function on(e,t){try{return await $s(e,t)}catch(n){return I(n.message)}}function Er(e,t){let n=new Map;for(let r of e.entries)r.stage===0&&n.set(r.path,r);for(let[r,o]of n){let s=t.get(r);if(!s||s.hash!==o.hash)return!0}for(let[r]of t)if(!n.has(r))return!0;return!1}function Oe(e,t){return e<t?-1:e>t?1:0}function mt(e,t){return e.workTree?ft(e.workTree,t):""}function Y(e){return e.slice(0,7)}function fe(e){let t=e.indexOf(`
|
|
55
55
|
`);return t===-1?e:e.slice(0,t)}function Vt(e){return I(`ambiguous argument '${e}': unknown revision or path not in the working tree.
|
|
56
56
|
Use '--' to separate paths from revisions, like this:
|
|
57
|
-
'git <command> [<revision>...] -- [<file>...]'`)}function Ht(e,t,n,r=!1){return`[${e}${r?" (root-commit)":""} ${Y(t)}] ${fe(n)}`}async function Dn(e,t,n){if(!await F(e,n.operationRef))return n.noOpError;let o=await F(e,"ORIG_HEAD")??await Z(e);if(!o)return I(`There is no ${n.operationName} to abort (ORIG_HEAD missing).`);let s=await Z(e),i=await j(e,o),a=await K(e),c=await Vs(e,i.tree,a,n.origHeadAsTargetRev?o:void 0);if(!c.success)return c.errorOutput;if(await
|
|
57
|
+
'git <command> [<revision>...] -- [<file>...]'`)}function Ht(e,t,n,r=!1){return`[${e}${r?" (root-commit)":""} ${Y(t)}] ${fe(n)}`}async function Dn(e,t,n){if(!await F(e,n.operationRef))return n.noOpError;let o=await F(e,"ORIG_HEAD")??await Z(e);if(!o)return I(`There is no ${n.operationName} to abort (ORIG_HEAD missing).`);let s=await Z(e),i=await j(e,o),a=await K(e),c=await Vs(e,i.tree,a,n.origHeadAsTargetRev?o:void 0);if(!c.success)return c.errorOutput;if(await $n(e,o),await ae(e,{version:2,entries:c.newEntries}),await Me(e,c.worktreeOps),s&&((await Q(e))?.type==="symbolic"||s!==o)){let d=n.origHeadAsTargetRev?o:"HEAD";await re(e,t,"HEAD",s,o,`reset: moving to ${d}`)}return await n.clearState(e),{stdout:"",stderr:"",exitCode:0}}async function ht(e,t,n,r,o,s){let i=tn({type:"commit",tree:t,parents:n,author:r,committer:o,message:s}),a=await Se(e,"commit",i);return await $n(e,a),a}function an(e){return e.split(`
|
|
58
58
|
`).filter(t=>!t.startsWith("#")).map(t=>t.trimEnd()).join(`
|
|
59
59
|
`).replace(/\n+$/,`
|
|
60
60
|
`)}function At(e){return e.endsWith(`
|
|
61
61
|
`)?e:`${e}
|
|
62
|
-
`}var Tu,vu,se=Ee(()=>{"use strict";
|
|
63
|
-
`)}function cd(e,t){let n=e.length,r=t.length,o=new Array((n+1)*(r+1));for(let s=0;s<=n;s++)o[s*(r+1)]=s;for(let s=0;s<=r;s++)o[s]=s;for(let s=1;s<=n;s++)for(let i=1;i<=r;i++){let a=e[s-1]===t[i-1]?0:1;o[s*(r+1)+i]=Math.min(o[(s-1)*(r+1)+i]+1,o[s*(r+1)+(i-1)]+1,o[(s-1)*(r+1)+(i-1)]+a)}return o[n*(r+1)+r]}function
|
|
64
|
-
`)}function fd(e,t){let n=Object.entries(e);if(n.length===0)return[];let r=[];for(let[i,a]of n){let c=Dr(i);if(a._kind==="flag"){let f=a,l=[];f.short&&l.push(`-${f.short},`),l.push(`--${c}`);let d=[];f.description&&d.push(f.description),f.counted&&d.push("(counted)"),f.default!==void 0&&d.push(`(default: ${f.default})`),r.push([l.join(" "),d.join(" ")])}else{let f=a,l=[];f.short&&l.push(`-${f.short},`),l.push(`--${c} <${f.type}>`);let d=[];f.description&&d.push(f.description),f.required&&d.push("(required)"),f.default!==void 0&&d.push(`(default: ${JSON.stringify(f.default)})`),f.env&&d.push(`[env: ${f.env}]`),r.push([l.join(" "),d.join(" ")])}}let o=Math.max(...r.map(([i])=>i.length)),s=[];t&&s.push(t);for(let[i,a]of r)if(a){let c=" ".repeat(o-i.length+2);s.push(` ${i}${c}${a}`)}else s.push(` ${i}`);return s}function Oa(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e))t[n]=r._def;return t}function Ia(e){return e?e.map(t=>t._def):[]}var
|
|
62
|
+
`}var Tu,vu,se=Ee(()=>{"use strict";Pn();Ce();ie();un();le();Fe();ue();Sn();hn();sn();Tu=I("not a git repository (or any of the parent directories): .git"),vu=I("this operation must be run in a work tree")});var jc={};id(jc,{CommitHeap:()=>Mn,countAheadBehind:()=>xi,findOrphanedCommits:()=>Pi,walkCommits:()=>Dt});async function*Dt(e,t,n){if(n?.topoOrder){yield*Gu(e,t,n);return}let r=await Mc(e,n?.exclude),o=new Set(r),s=new Mn,i=n?.shallowBoundary,a=Array.isArray(t)?t:[t];for(let c of a)o.has(c)||s.push(await kr(e,c));for(;s.size>0;){let c=s.pop();if(o.has(c.hash)||(o.add(c.hash),yield c,i?.has(c.hash)))continue;let f=n?.firstParent?c.commit.parents.slice(0,1):c.commit.parents;for(let l of f)if(!o.has(l))try{s.push(await kr(e,l))}catch{}}}async function*Gu(e,t,n){let r=await Mc(e,n?.exclude),o=new Set(r),s=new Mn,i=n?.shallowBoundary,a=Array.isArray(t)?t:[t];for(let m of a)o.has(m)||s.push(await kr(e,m));let c=[],f=new Map;for(;s.size>0;){let m=s.pop();if(o.has(m.hash)||(o.add(m.hash),f.set(m.hash,c.length),c.push(m),i?.has(m.hash)))continue;let h=n?.firstParent?m.commit.parents.slice(0,1):m.commit.parents;for(let p of h)if(!o.has(p))try{s.push(await kr(e,p))}catch{}}let l=c.length;if(l===0)return;let d=new Int32Array(l);for(let m of c){let h=n?.firstParent?m.commit.parents.slice(0,1):m.commit.parents;for(let p of h){let g=f.get(p);g!==void 0&&(d[g]=(d[g]??0)+1)}}let u=[];for(let m=l-1;m>=0;m--)d[m]===0&&u.push(m);for(;u.length>0;){let m=u.pop();yield c[m];let h=n?.firstParent?c[m].commit.parents.slice(0,1):c[m].commit.parents;for(let p of h){let g=f.get(p);if(g!==void 0){let w=(d[g]??0)-1;d[g]=w,w===0&&u.push(g)}}}}async function xi(e,t,n){if(t===n)return{ahead:0,behind:0};let r=new Set;for await(let a of Dt(e,t))r.add(a.hash);let o=new Set;for await(let a of Dt(e,n))o.add(a.hash);let s=0;for(let a of r)o.has(a)||s++;let i=0;for(let a of o)r.has(a)||i++;return{ahead:s,behind:i}}async function Pi(e,t,n){let r=n?.maxCount??25,o=await ge(e,"refs"),s=[];for(let l of o)try{s.push(await _e(e,l.hash))}catch{}n?.targetHash&&s.push(n.targetHash);let i=new Set;if(s.length>0)for await(let l of Dt(e,s))i.add(l.hash);if(i.has(t))return[];let a=[],c=new Set,f=new Mn;for(f.push(await kr(e,t));f.size>0&&a.length<r;){let l=f.pop();if(!c.has(l.hash)&&(c.add(l.hash),!i.has(l.hash))){a.push({hash:l.hash,subject:fe(l.commit.message)});for(let d of l.commit.parents)c.has(d)||f.push(await kr(e,d))}}return a}async function Mc(e,t){if(!t||t.length===0)return new Set;let n=new Set;for await(let r of Dt(e,t))n.add(r.hash);return n}async function kr(e,t){return{hash:t,commit:await j(e,t)}}var Mn,rr=Ee(()=>{"use strict";se();ie();ue();Mn=class{heap=[];nextEpoch=0;get size(){return this.heap.length}push(t){this.heap.push({entry:t,epoch:this.nextEpoch++}),this.siftUp(this.heap.length-1)}pop(){let{heap:t}=this;if(t.length===0)return;let n=t[0],r=t.pop();return t.length>0&&(t[0]=r,this.siftDown(0)),n.entry}higher(t,n){let r=t.entry.commit.committer.timestamp,o=n.entry.commit.committer.timestamp;return r>o||r===o&&t.epoch<n.epoch}siftUp(t){let{heap:n}=this;for(;t>0;){let r=t-1>>1;if(!this.higher(n[t],n[r]))break;[n[r],n[t]]=[n[t],n[r]],t=r}}siftDown(t){let{heap:n}=this,r=n.length;for(;;){let o=t,s=2*t+1,i=2*t+2;if(s<r&&this.higher(n[s],n[o])&&(o=s),i<r&&this.higher(n[i],n[o])&&(o=i),o===t)break;[n[t],n[o]]=[n[o],n[t]],t=o}}}});var Lo=class e{_def;constructor(t){this._def=t}name(t){return new e({...this._def,name:t})}describe(t){return new e({...this._def,description:t})}optional(){return new e({...this._def,required:!1})}variadic(){return new e({...this._def,variadic:!0})}default(t){return new e({...this._def,required:!1,default:t})}};function ya(e){return new Lo({_kind:"arg",type:e,required:!0})}function Ea(){return ya("string")}function ka(){return ya("number")}var xs=class e{_def;constructor(t={_kind:"flag"}){this._def=t}describe(t){return new e({...this._def,description:t})}alias(t){return new e({...this._def,short:t})}default(t){return new e({...this._def,default:t})}count(){return new e({...this._def,counted:!0})}};var _o=class e{_def;constructor(t){this._def=t}describe(t){return new e({...this._def,description:t})}alias(t){return new e({...this._def,short:t})}env(t){return new e({...this._def,env:t})}required(){return new e({...this._def,required:!0})}default(t){return new e({...this._def,default:t})}};function Ra(e){return new _o({_kind:"option",type:e})}function xa(){return Ra("string")}function Pa(){return Ra("number")}var J={string:xa,number:Pa};function $(){return new xs}var q={string:Ea,number:ka};function ad(e){switch(e.type){case"unknown_option":{let t=`Unknown option "${e.name}".`;return e.suggestions.length>0&&(t+=` Did you mean ${e.suggestions.map(n=>`"${n}"`).join(" or ")}?`),t}case"invalid_type":return`Invalid value for "${e.name}": expected ${e.expected}, got "${e.received}".`;case"missing_required":return e.kind==="option"?`Missing required option "--${e.name}".`:`Missing required argument <${e.name}>.`;case"unexpected_positional":return e.maxPositionals===0?`Unexpected argument "${e.value}". This command takes no positional arguments.`:`Unexpected argument "${e.value}". Expected at most ${e.maxPositionals} positional argument${e.maxPositionals===1?"":"s"}.`;case"missing_value":return`Option "--${e.name}" requires a value.`;case"unknown_command":{let t=`Unknown command "${e.path}".`;return e.suggestions.length>0&&(t+=` Did you mean ${e.suggestions.map(n=>`"${n}"`).join(" or ")}?`),t}}}function No(e){return e.map(ad).join(`
|
|
63
|
+
`)}function cd(e,t){let n=e.length,r=t.length,o=new Array((n+1)*(r+1));for(let s=0;s<=n;s++)o[s*(r+1)]=s;for(let s=0;s<=r;s++)o[s]=s;for(let s=1;s<=n;s++)for(let i=1;i<=r;i++){let a=e[s-1]===t[i-1]?0:1;o[s*(r+1)+i]=Math.min(o[(s-1)*(r+1)+i]+1,o[s*(r+1)+(i-1)]+1,o[(s-1)*(r+1)+(i-1)]+a)}return o[n*(r+1)+r]}function Ps(e,t,n){let r=n??Math.min(Math.max(1,Math.floor(e.length/2)),3);return t.map(s=>({candidate:s,distance:cd(e,s)})).filter(s=>s.distance<=r&&s.distance>0).sort((s,i)=>s.distance-i.distance).slice(0,2).map(s=>s.candidate)}function Ca(e,t,n,r){let o=[],s=new Map,i=new Map;for(let[u,m]of Object.entries(e)){let h=Dr(u);s.set(h,{key:u,def:m}),m.short&&i.set(m.short,{key:u,def:m})}let a={},c=[],f=[],l=0;for(;l<n.length;){let u=n[l];if(u==="--"){for(l++;l<n.length;)f.push(n[l]),l++;break}if(u.startsWith("--")){let m=u.indexOf("="),h,p;m!==-1?(h=u.slice(2,m),p=u.slice(m+1)):h=u.slice(2);let g=s.get(h);if(!g){if(h.startsWith("no-")){let b=s.get(h.slice(3));if(b&&b.def._kind==="flag"){a[b.key]=b.def.counted?0:!1,l++;continue}}let x=[...s.keys()];o.push({type:"unknown_option",name:`--${h}`,suggestions:Ps(h,x).map(b=>`--${b}`)}),l++;continue}if(g.def._kind==="flag"){g.def.counted?a[g.key]=(a[g.key]||0)+1:a[g.key]=!0,l++;continue}let w=p??n[++l];if(w===void 0){o.push({type:"missing_value",name:g.key}),l++;continue}let y=Ar(w,g.def.type,g.key,o);y!==void 0&&(a[g.key]=y),l++;continue}if(u.startsWith("-")&&u.length>1){let m=u.slice(1);for(let h=0;h<m.length;h++){let p=m[h],g=i.get(p);if(!g){let b=[];s.has(p)&&b.push(`--${p}`),o.push({type:"unknown_option",name:`-${p}`,suggestions:b});continue}if(g.def._kind==="flag"){g.def.counted?a[g.key]=(a[g.key]||0)+1:a[g.key]=!0;continue}let w=m.slice(h+1),y=w.length>0?w:n[++l];if(y===void 0){o.push({type:"missing_value",name:g.key});break}let x=Ar(y,g.def.type,g.key,o);x!==void 0&&(a[g.key]=x);break}l++;continue}c.push(u),l++}let d=0;for(let u=0;u<t.length;u++){let m=t[u],h=m.name??`arg${u}`;if(m.variadic){let p=c.slice(d);p.length>0?a[h]=p.map(g=>Ar(g,m.type,h,o)):m.required?o.push({type:"missing_required",name:h,kind:"arg"}):m.default!==void 0?a[h]=m.default:a[h]=[],d=c.length}else{let p=c[d];p!==void 0?(a[h]=Ar(p,m.type,h,o),d++):m.required?o.push({type:"missing_required",name:h,kind:"arg"}):m.default!==void 0&&(a[h]=m.default)}}if(d<c.length)for(let u=d;u<c.length;u++)o.push({type:"unexpected_positional",value:c[u],maxPositionals:t.length});for(let[u,m]of Object.entries(e))if(a[u]===void 0){if(m._kind==="flag")a[u]=m.default??(m.counted?0:!1);else if(m._kind==="option"){let h=m;if(h.env&&r?.[h.env]!==void 0){let p=Ar(r[h.env],h.type,u,o);p!==void 0&&(a[u]=p)}a[u]===void 0&&(h.required&&h.default===void 0?o.push({type:"missing_required",name:u,kind:"option"}):h.default!==void 0&&(a[u]=h.default))}}return o.length>0?{ok:!1,errors:o}:{ok:!0,args:a,passthrough:f}}function Ar(e,t,n,r){switch(t){case"string":return e;case"number":{let o=Number(e);if(Number.isNaN(o)){r.push({type:"invalid_type",name:n,expected:"number",received:e});return}return o}case"boolean":{if(e==="true"||e==="1")return!0;if(e==="false"||e==="0")return!1;r.push({type:"invalid_type",name:n,expected:"boolean",received:e});return}default:return e}}function Dr(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function Fo(e){let t=[],n=e.children.size>0;e.description?t.push(`${e.fullPath} - ${e.description}`):t.push(e.fullPath),t.push("");let r=[e.fullPath];n&&r.push("<command>"),Object.keys(e.options).length>0&&r.push("[options]");let o=e.args;for(let i of o){let a=i.name??"arg",c=i.variadic?`${a}...`:a;r.push(i.required?`<${c}>`:`[${c}]`)}if(t.push("Usage:"),t.push(` ${r.join(" ")}`),t.push(""),n){t.push("Commands:");let i=[];for(let[c,f]of e.children)i.push([c,f.description||""]);let a=Math.max(...i.map(([c])=>c.length));for(let[c,f]of i)if(f){let l=" ".repeat(a-c.length+2);t.push(` ${c}${l}${f}`)}else t.push(` ${c}`);t.push("")}if(o.length>0){t.push("Arguments:");let i=[];for(let c of o){let f=c.name??"arg",l=c.variadic?`${f}...`:f,d=[];c.description&&d.push(c.description),c.required&&d.push("(required)"),c.default!==void 0&&d.push(`(default: ${JSON.stringify(c.default)})`),i.push([l,d.join(" ")])}let a=Math.max(...i.map(([c])=>c.length));for(let[c,f]of i)if(f){let l=" ".repeat(a-c.length+2);t.push(` ${c}${l}${f}`)}else t.push(` ${c}`);t.push("")}let s=fd(e.options);if(s.length>0&&(t.push("Options:"),t.push(...s),t.push("")),e.examples.length>0){t.push("Examples:");for(let i of e.examples)t.push(` ${i}`);t.push("")}return t.join(`
|
|
64
|
+
`)}function fd(e,t){let n=Object.entries(e);if(n.length===0)return[];let r=[];for(let[i,a]of n){let c=Dr(i);if(a._kind==="flag"){let f=a,l=[];f.short&&l.push(`-${f.short},`),l.push(`--${c}`);let d=[];f.description&&d.push(f.description),f.counted&&d.push("(counted)"),f.default!==void 0&&d.push(`(default: ${f.default})`),r.push([l.join(" "),d.join(" ")])}else{let f=a,l=[];f.short&&l.push(`-${f.short},`),l.push(`--${c} <${f.type}>`);let d=[];f.description&&d.push(f.description),f.required&&d.push("(required)"),f.default!==void 0&&d.push(`(default: ${JSON.stringify(f.default)})`),f.env&&d.push(`[env: ${f.env}]`),r.push([l.join(" "),d.join(" ")])}}let o=Math.max(...r.map(([i])=>i.length)),s=[];t&&s.push(t);for(let[i,a]of r)if(a){let c=" ".repeat(o-i.length+2);s.push(` ${i}${c}${a}`)}else s.push(` ${i}`);return s}function Oa(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e))t[n]=r._def;return t}function Ia(e){return e?e.map(t=>t._def):[]}var Cs=class e{name;description;options;args;examples;handler;transformArgs;children=new Map;parent;constructor(t,n,r,o,s,i,a){this.name=t,this.description=n,this.options=r,this.args=o,this.examples=s,this.handler=i,this.transformArgs=a}command(t,n){let r=new e(t,n.description,Oa(n.options),Ia(n.args),n.examples??[],n.handler,n.transformArgs);return r.parent=this,this.children.set(t,r),r}get fullPath(){let t=[],n=this;for(;n;)t.unshift(n.name),n=n.parent;return t.join(" ")}toCommand(){return{name:this.name,execute:this.execute.bind(this)}}get allOptions(){return this.options}toTokens(t){let n=[],r=this.allOptions,o=t;for(let[s,i]of Object.entries(r)){let a=o[s],c=Dr(s);if(i._kind==="flag")if(i.counted&&typeof a=="number"&&a>0)for(let f=0;f<a;f++)n.push(`--${c}`);else a===!0?n.push(`--${c}`):a===!1&&i.default===!0&&n.push(`--no-${c}`);else i._kind==="option"&&a!==void 0&&n.push(`--${c}`,String(a))}for(let s of this.args){let i=s.name??"arg",a=o[i];if(a!==void 0)if(s.variadic&&Array.isArray(a))for(let c of a)n.push(String(c));else n.push(String(a))}return n}async invoke(t,n){if(!this.handler)return{stdout:"",stderr:`Command "${this.fullPath}" has no handler`,exitCode:1};let r={...t},o=this.allOptions;for(let[s,i]of Object.entries(o))if(r[s]===void 0){if(i._kind==="flag")r[s]=i.default??(i.counted?0:!1);else if(i._kind==="option"){if(i.default!==void 0)r[s]=i.default;else if(i.required)return{stdout:"",stderr:`Missing required option "${s}"`,exitCode:1}}}for(let s of this.args){let i=s.name??"arg";if(r[i]===void 0){if(s.default!==void 0)r[i]=s.default;else if(s.required)return{stdout:"",stderr:`Missing required arg "${i}"`,exitCode:1}}}try{return await this.handler(r,n,{passthrough:[]})}catch(s){return{stdout:"",stderr:s instanceof Error?s.message:String(s),exitCode:1}}}async execute(t,n){let r=n?.env?Object.fromEntries(n.env):{},o=t[0];if(o&&!o.startsWith("-")){let s=this.children.get(o);if(s)return s.execute(t.slice(1),n)}if(ld(t))return{stdout:Fo(this),stderr:"",exitCode:0};if(this.handler){let s=this.transformArgs?this.transformArgs([...t]):[...t],i=Ca(this.allOptions,this.args,s,r);if(!i.ok)return{stdout:"",stderr:No(i.errors),exitCode:1};try{return await this.handler(i.args,n,{passthrough:i.passthrough})}catch(a){return{stdout:"",stderr:a instanceof Error?a.message:String(a),exitCode:1}}}if(o&&!o.startsWith("-")){let s=Ps(o,[...this.children.keys()]);return{stdout:"",stderr:No([{type:"unknown_command",path:`${this.fullPath} ${o}`,suggestions:s}]),exitCode:1}}return{stdout:Fo(this),stderr:"",exitCode:0}}};function Uo(e,t){return new Cs(e,t.description,Oa(t.options),Ia(t.args),t.examples??[],t.handler,t.transformArgs)}function ld(e){return e.some(t=>t==="--help"||t==="-h")}se();Ws();Ce();le();Fs();var Xs=1,Ei=2,Ys=4,ki=8,es=16,Ac=new Set(["*","?","[","\\"]),Au={glob:Xs,literal:Ei,icase:Ys,top:ki,exclude:es};function nr(e){for(let t=0;t<e.length;t++)if(Ac.has(e[t]))return!0;return!1}function Du(e){for(let t=0;t<e.length;t++)if(Ac.has(e[t]))return t;return e.length}function Hc(e){let t=e.split("/"),n=[];for(let r of t)if(!(r===""||r===".")){if(r===".."){n.length>0&&n[n.length-1]!==".."&&n.pop();continue}n.push(r)}return n.join("/")}function Ue(e,t){let n=0,r=e;if(r.startsWith(":(")){let c=r.indexOf(")");if(c!==-1){let f=r.slice(2,c);r=r.slice(c+1);for(let l of f.split(",")){let d=Au[l.trim()];d!==void 0&&(n|=d)}}}else r.startsWith(":/")?(n|=ki,r=r.slice(2)):(r.startsWith(":!")||r.startsWith(":^"))&&(n|=es,r=r.slice(2));n&Ei&&n&Xs&&(n&=~Xs);let o;n&ki||t===""?o=Hc(r):o=Hc(`${t}/${r}`);let s=!!(n&Ei),i=s?!1:nr(o),a=s?o.length:Du(o);return{original:e,pattern:o,magic:n,hasWildcard:i,nowildcardLen:a}}function Zs(e,t){let{pattern:n,hasWildcard:r,magic:o,nowildcardLen:s}=e;if(n==="")return!0;if(!r){let a=!!(o&Ys),c=a?n.toLowerCase():n,f=a?t.toLowerCase():t;return!!(c===f||f.startsWith(c)&&f[c.length]==="/"||c.endsWith("/")&&f.startsWith(c))}if(s>0){let a=n.slice(0,s),c=t.slice(0,s);if(o&Ys){if(a.toLowerCase()!==c.toLowerCase())return!1}else if(a!==c)return!1}let i=0;return o&Xs&&(i|=2),o&Ys&&(i|=1),Jn(n,t,i)===0}function ye(e,t){let n=!1,r=!1;for(let o of e)o.magic&es?Zs(o,t)&&(r=!0):Zs(o,t)&&(n=!0);return n&&!r}tt();function Dc(e,t){e.command("add",{description:"Add file contents to the index",args:[q.string().name("paths").describe("Pathspec of files to add").optional().variadic()],options:{all:$().alias("A").describe("Add changes from all tracked and untracked files"),force:$().alias("f").describe("Allow adding otherwise ignored files"),update:$().alias("u").describe("Update tracked files"),"dry-run":$().alias("n").describe("Don't actually add the file(s)")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=Xe(s);if(i)return i;let a=s.workTree,c={skipIgnore:n.force,updateOnly:n.update,actions:n["dry-run"]?[]:void 0},f=n.paths;if((n.all||n.update)&&f.length===0){let p=await K(s);return p=await Ri(s,p,a,"",c),n["dry-run"]||await ae(s,p),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}if(f.length===0)return{stdout:"",stderr:`Nothing specified, nothing added.
|
|
65
65
|
Maybe you wanted to say 'git add .'?`,exitCode:0};let l=await K(s),d=[],u=[];for(let p of f)nr(p)?u.push(p):d.push(p);let m=[];for(let p of d){let g=It(r.cwd,p),w=ft(a,g);if((w==="."||w==="")&&(w=""),w.startsWith(".."))return I(`'${p}' is outside repository at '${a}'`);if(await r.fs.exists(g)){if(!n.force&&w!==""){let b=l.entries.some(E=>E.path===w||E.path.startsWith(`${w}/`)),k=await ju(s,a,w,b);if(k){b&&((await r.fs.stat(g)).isDirectory?l=await Ri(s,l,g,w,c):l=(await rn(s,l,w)).index),m.push(k);continue}}if((await r.fs.stat(g)).isDirectory)l=await Ri(s,l,g,w,c);else{let b=l.entries.find(E=>E.path===w&&E.stage===0)?.hash,k=await rn(s,l,w);l=k.index,c.actions&&k.hash!==b&&c.actions.push(`add '${w}'
|
|
66
66
|
`)}}else if(l.entries.some(b=>b.path===w||b.path.startsWith(`${w}/`))){if(c.actions)for(let b of l.entries)(b.path===w||b.path.startsWith(`${w}/`))&&c.actions.push(`remove '${b.path}'
|
|
67
67
|
`);l={...l,entries:l.entries.filter(b=>b.path!==w&&!b.path.startsWith(`${w}/`))}}else return I(`pathspec '${p}' did not match any files`)}if(m.length>0)return n["dry-run"]||await ae(s,l),L(`The following paths are ignored by one of your .gitignore files:
|
|
@@ -69,14 +69,14 @@ ${m.join(`
|
|
|
69
69
|
`)}
|
|
70
70
|
hint: Use -f if you really want to add them.
|
|
71
71
|
hint: Disable this message with "git config set advice.addIgnoredFile false"
|
|
72
|
-
`);if(u.length>0){let p=await Mu(s,r.cwd,l,u,c);if(p.error)return p.error;l=p.index}return n["dry-run"]||await ae(s,l),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}})}async function Mu(e,t,n,r,o){let s=e.workTree,i=
|
|
72
|
+
`);if(u.length>0){let p=await Mu(s,r.cwd,l,u,c);if(p.error)return p.error;l=p.index}return n["dry-run"]||await ae(s,l),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}})}async function Mu(e,t,n,r,o){let s=e.workTree,i=mt(e,t),a=r.map(d=>Ue(d,i)),c=new Array(a.length).fill(!1),f=d=>{for(let u=0;u<a.length;u++)a[u].hasWildcard&&Zs(a[u],d)&&(c[u]=!0)},l=[];for(let d of n.entries){if(d.stage>0||!ye(a,d.path))continue;f(d.path);let u=T(s,d.path);if(await e.fs.exists(u)){let m=await rn(e,n,d.path);n=m.index,o?.actions&&m.hash!==d.hash&&o.actions.push(`add '${d.path}'
|
|
73
73
|
`)}else o?.actions&&o.actions.push(`remove '${d.path}'
|
|
74
74
|
`),l.push(d.path)}for(let d of l)n=at(n,d);if(!o?.updateOnly){let d=new Set(n.entries.map(m=>m.path)),u=await et(e,s,"",{skipIgnore:o?.skipIgnore});for(let m of u){if(d.has(m)||!ye(a,m))continue;f(m),o?.actions&&o.actions.push(`add '${m}'
|
|
75
75
|
`),n=(await rn(e,n,m)).index}}for(let d=0;d<a.length;d++){let u=a[d];if(!c[d]&&!(u.magic&es))return{index:n,error:I(`pathspec '${u.original}' did not match any files`)}}return{index:n}}async function Ri(e,t,n,r,o){let s=r===""?"":`${r}/`,i=e.workTree,a=[],c=new Set;for(let f of t.entries){if(!(s===""||f.path.startsWith(s))||c.has(f.path))continue;c.add(f.path);let l=T(i,f.path);if(await e.fs.exists(l)){let d=f.stage>0,u=await rn(e,t,f.path);t=u.index,o?.actions&&(d||u.hash!==f.hash)&&o.actions.push(`add '${f.path}'
|
|
76
76
|
`)}else o?.actions&&o.actions.push(`remove '${f.path}'
|
|
77
77
|
`),a.push(f.path)}for(let f of a)t=at(t,f);if(!o?.updateOnly){let f=new Set(t.entries.map(d=>d.path)),l=await et(e,n,r===""?"":r,{skipIgnore:o?.skipIgnore});for(let d of l){if(f.has(d))continue;o?.actions&&o.actions.push(`add '${d}'
|
|
78
|
-
`),t=(await rn(e,t,d)).index}}return t}async function ju(e,t,n,r){let o=await
|
|
79
|
-
`);return{termBad:n[0]??"bad",termGood:n[1]??"good"}}async function Js(e){let t=(await
|
|
78
|
+
`),t=(await rn(e,t,d)).index}}return t}async function ju(e,t,n,r){let o=await yr(e);try{let i=await e.fs.readFile(T(t,".gitignore"));o=Qn(o,i,"",T(t,".gitignore"))}catch{}let s=n.split("/");for(let i=0;i<s.length-1;i++){let a=s.slice(0,i+1).join("/"),c=T(t,a);if(nn(o,a,!0)==="ignored")return a;try{let f=await e.fs.readFile(T(c,".gitignore"));o=Qn(o,f,a,T(c,".gitignore"))}catch{}}if(!r){let i=await e.fs.stat(T(t,n)).then(a=>a.isDirectory).catch(()=>!1);if(nn(o,n,i)==="ignored")return n}return null}se();se();rr();ie();le();ue();async function Pe(e,t){let n=T(e.gitDir,t);return await e.fs.exists(n)?e.fs.readFile(n):null}async function Te(e,t,n){await e.fs.writeFile(T(e.gitDir,t),n)}async function pe(e,t){let n=T(e.gitDir,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function ts(e){await de(e,"MERGE_HEAD"),await de(e,"ORIG_HEAD"),await pe(e,"MERGE_MSG"),await pe(e,"MERGE_MODE"),await pe(e,"SQUASH_MSG")}async function Mt(e){await de(e,"CHERRY_PICK_HEAD"),await de(e,"ORIG_HEAD"),await pe(e,"MERGE_MSG")}async function jt(e){await de(e,"REVERT_HEAD"),await de(e,"ORIG_HEAD"),await pe(e,"MERGE_MSG")}async function sr(e){for(let t of["CHERRY_PICK_HEAD","REVERT_HEAD","MERGE_HEAD","ORIG_HEAD"])await de(e,t);await pe(e,"MERGE_MSG"),await pe(e,"MERGE_MODE"),await pe(e,"SQUASH_MSG")}var Ci="DETACH_POINT";async function Gc(e,t){await e.fs.writeFile(T(e.gitDir,Ci),t)}async function pt(e){let t=T(e.gitDir,Ci);await e.fs.exists(t)&&await e.fs.rm(t)}async function ns(e){let t=T(e.gitDir,Ci);return await e.fs.exists(t)?(await e.fs.readFile(t))?.trim()??null:null}le();ue();async function Rt(e){let t=await Pe(e,"BISECT_START");return t!=null&&t.trim().length>0}async function rs(e){let t=await Pe(e,"BISECT_TERMS");if(!t)return{termBad:"bad",termGood:"good"};let n=t.trim().split(`
|
|
79
|
+
`);return{termBad:n[0]??"bad",termGood:n[1]??"good"}}async function Js(e){let t=(await Pe(e,"BISECT_START"))?.trim()??"",{termBad:n,termGood:r}=await rs(e),o=await F(e,`refs/bisect/${n}`),s=[],i=[],a=await ge(e,"refs/bisect");for(let l of a)l.name.startsWith(`refs/bisect/${r}-`)?s.push(l.hash):l.name.startsWith("refs/bisect/skip-")&&i.push(l.hash);let c=await Pe(e,"BISECT_HEAD")!=null||await e.fs.exists(T(e.gitDir,"BISECT_HEAD")),f=await e.fs.exists(T(e.gitDir,"BISECT_FIRST_PARENT"));return{startRef:t,badHash:o,goodHashes:s,skipHashes:i,termBad:n,termGood:r,noCheckout:c,firstParent:f}}async function xt(e,t){let n=await Pe(e,"BISECT_LOG")??"";await Te(e,"BISECT_LOG",n+t+`
|
|
80
80
|
`)}async function Qs(e){let t=await ge(e,"refs/bisect");for(let r of t)await de(e,r.name);await pe(e,"BISECT_EXPECTED_REV"),await pe(e,"BISECT_ANCESTORS_OK"),await pe(e,"BISECT_LOG"),await pe(e,"BISECT_TERMS"),await pe(e,"BISECT_NAMES"),await pe(e,"BISECT_FIRST_PARENT"),await pe(e,"BISECT_HEAD"),await pe(e,"BISECT_START");let n=T(e.gitDir,"refs","bisect");if(await e.fs.exists(n))try{await e.fs.rm(n,{recursive:!0})}catch{}}async function Lc(e,t,n,r,o){let s=[],i=new Map;for await(let g of Dt(e,t,{exclude:n})){let w=o?g.commit.parents.slice(0,1):g.commit.parents;s.push({hash:g.hash,subject:fe(g.commit.message)}),i.set(g.hash,w)}let a=s.length;if(a===0)return null;if(a===1)return{hash:s[0].hash,subject:s[0].subject,remaining:0,steps:0,found:!0,onlySkippedLeft:!1};let c=new Set(s.map(g=>g.hash)),f=new Map;for(let g of s){let w=new Set,y=[g.hash],x=0;for(;x<y.length;){let b=y[x++];if(w.has(b)||!c.has(b))continue;w.add(b);let k=i.get(b);if(k)for(let E of k)!w.has(E)&&c.has(E)&&y.push(E)}f.set(g.hash,w.size)}let l=s[0].hash,d=a;for(let g of s){if(r.has(g.hash))continue;let w=f.get(g.hash)??0,y=Math.abs(2*w-a);y<d&&(d=y,l=g.hash)}let u=!1;if(d===a){u=!0;for(let g of s){let w=f.get(g.hash)??0,y=Math.abs(2*w-a);y<d&&(d=y,l=g.hash)}}let m=s.find(g=>g.hash===l),h=Lu(a),p=_u(a);return{hash:m.hash,subject:m.subject,remaining:h,steps:p,found:!1,onlySkippedLeft:u}}function Lu(e){return Math.floor((e-1)/2)}function _u(e){return e<=1?0:Math.ceil(Math.log2(e))}function _c(e){let t=e.badHash!=null,n=e.goodHashes.length;return!t&&n===0?`status: waiting for both ${e.termGood} and ${e.termBad} commits
|
|
81
81
|
`:t?n===0?`status: waiting for ${e.termGood} commit(s), ${e.termBad} commit known
|
|
82
82
|
`:"":`status: waiting for ${e.termBad} commit, ${n} ${e.termGood} commit(s) known
|
|
@@ -89,23 +89,23 @@ hint: Disable this message with "git config set advice.addIgnoredFile false"
|
|
|
89
89
|
`,i+=`
|
|
90
90
|
`,i+=` ${r}
|
|
91
91
|
`,i+=`
|
|
92
|
-
`,i}se();rr();Ne();
|
|
92
|
+
`,i}se();rr();Ne();Ce();ie();le();Fe();ue();se();rr();Ne();Ce();ie();le();ie();un();le();function Rr(e){return T(e.gitDir,"rebase-merge")}async function Gt(e){return e.fs.exists(Rr(e))}async function gt(e){let t=Rr(e);if(!await e.fs.exists(t))return null;let n=await e.fs.readFile(T(t,"head-name")),r=await e.fs.readFile(T(t,"orig-head")),o=await e.fs.readFile(T(t,"onto")),s=Number.parseInt(await e.fs.readFile(T(t,"msgnum")),10),i=Number.parseInt(await e.fs.readFile(T(t,"end")),10),a=await e.fs.exists(T(t,"git-rebase-todo"))?T(t,"git-rebase-todo"):T(t,"todo"),c=Uc(await e.fs.readFile(a)),f=await e.fs.exists(T(t,"done"))?await e.fs.readFile(T(t,"done")):"",l=Uc(f);return{headName:n.trim(),origHead:r.trim(),onto:o.trim(),todo:c,done:l,msgnum:s,end:i}}async function Oi(e,t){let n=Rr(e);await e.fs.mkdir(n,{recursive:!0}),await e.fs.writeFile(T(n,"head-name"),`${t.headName}
|
|
93
93
|
`),await e.fs.writeFile(T(n,"orig-head"),`${t.origHead}
|
|
94
94
|
`),await e.fs.writeFile(T(n,"onto"),`${t.onto}
|
|
95
95
|
`),await e.fs.writeFile(T(n,"msgnum"),`${String(t.msgnum)}
|
|
96
96
|
`),await e.fs.writeFile(T(n,"end"),`${String(t.end)}
|
|
97
|
-
`),await e.fs.writeFile(T(n,"git-rebase-todo"),to(t.todo)),await e.fs.writeFile(T(n,"done"),to(t.done)),await e.fs.writeFile(T(n,"interactive"),"")}async function qc(e){let t=
|
|
98
|
-
`),await e.fs.writeFile(T(t,"git-rebase-todo"),to(n.todo)),await e.fs.writeFile(T(t,"done"),to(n.done))}async function Ii(e){let t=
|
|
97
|
+
`),await e.fs.writeFile(T(n,"git-rebase-todo"),to(t.todo)),await e.fs.writeFile(T(n,"done"),to(t.done)),await e.fs.writeFile(T(n,"interactive"),"")}async function qc(e){let t=Rr(e),n=await gt(e);if(!n)throw new Error("No rebase in progress");let r=n.todo.shift();r&&n.done.push(r),n.msgnum=n.done.length,await e.fs.writeFile(T(t,"msgnum"),`${String(n.msgnum)}
|
|
98
|
+
`),await e.fs.writeFile(T(t,"git-rebase-todo"),to(n.todo)),await e.fs.writeFile(T(t,"done"),to(n.done))}async function Ii(e){let t=Rr(e);await e.fs.exists(t)&&await e.fs.rm(t,{recursive:!0})}async function no(e,t,n){let r=Rr(e),o=`@${n.timestamp} ${n.timezone}`;await e.fs.writeFile(T(r,"author-script"),`GIT_AUTHOR_NAME='${n.name}'
|
|
99
99
|
GIT_AUTHOR_EMAIL='${n.email}'
|
|
100
100
|
GIT_AUTHOR_DATE='${o}'
|
|
101
101
|
`),await e.fs.writeFile(T(r,"stopped-sha"),`${t}
|
|
102
102
|
`)}function Uc(e){let t=[];for(let n of e.split(`
|
|
103
103
|
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^pick\s+([0-9a-f]+)\s+(.*)/);if(o?.[1]&&o[2]){let s=o[2].startsWith("# ")?o[2].slice(2):o[2];t.push({hash:o[1],subject:s})}}return t}function to(e){return e.length===0?"":`${e.map(t=>`pick ${t.hash} # ${t.subject}`).join(`
|
|
104
104
|
`)}
|
|
105
|
-
`}async function zc(e,t,n){let r=new Map,[o,s]=await Promise.all([Bc(e,t,r),Bc(e,n,r)]),i=new Set;for(let c of s)o.has(c)||i.add(c);let a=new Set;for(let c of o)s.has(c)||a.add(c);return{right:await Wc(e,r,n,i),left:await Wc(e,r,t,a)}}async function Bc(e,t,n){let r=new Set,o=[t],s=0;for(;s<o.length;){let i=o[s++];if(r.has(i))continue;r.add(i);let a=await eo(e,i,n);for(let c of a.commit.parents)r.has(c)||o.push(c)}return r}async function Wc(e,t,n,r){if(r.size===0)return[];let o=new Map;for(let f of r)o.set(f,0);for(let f of r){let l=await eo(e,f,t);for(let d of l.commit.parents)r.has(d)&&o.set(d,(o.get(d)??0)+1)}let s=[];for(let f of r)o.get(f)===0&&s.push(await eo(e,f,t));s.sort((f,l)=>f.commit.committer.timestamp-l.commit.committer.timestamp);let i=s.map(f=>f.hash),a=[],c=new Set;for(;i.length>0;){let f=i.pop();if(!f||c.has(f))continue;c.add(f);let l=await eo(e,f,t);l.commit.parents.length<=1&&a.push(l);for(let d of l.commit.parents)if(r.has(d)&&!c.has(d)){let u=(o.get(d)??0)-1;o.set(d,u),u<=0&&i.push(d)}}return a.reverse(),a}async function eo(e,t,n){let r=n.get(t);if(r)return r;let o=await we(e,t);if(o.type!=="commit")throw new Error(`Expected commit object, got ${o.type}`);let s={hash:t,commit:en(o.content)};return n.set(t,s),s}ue();ie();function
|
|
106
|
-
`))l.push(D);d=!0}}if(d&&(w||u||m||h)&&l.push(""),w&&h)Yc(l,w),l.push(""),a.length>0?(l.push("You have unmerged paths."),l.push(' (fix conflicts and run "git commit")'),l.push(' (use "git merge --abort" to abort the merge)')):(l.push("All conflicts fixed but you are still merging."),l.push(' (use "git commit" to conclude merge)')),d=!0;else if(w){let
|
|
105
|
+
`}async function zc(e,t,n){let r=new Map,[o,s]=await Promise.all([Bc(e,t,r),Bc(e,n,r)]),i=new Set;for(let c of s)o.has(c)||i.add(c);let a=new Set;for(let c of o)s.has(c)||a.add(c);return{right:await Wc(e,r,n,i),left:await Wc(e,r,t,a)}}async function Bc(e,t,n){let r=new Set,o=[t],s=0;for(;s<o.length;){let i=o[s++];if(r.has(i))continue;r.add(i);let a=await eo(e,i,n);for(let c of a.commit.parents)r.has(c)||o.push(c)}return r}async function Wc(e,t,n,r){if(r.size===0)return[];let o=new Map;for(let f of r)o.set(f,0);for(let f of r){let l=await eo(e,f,t);for(let d of l.commit.parents)r.has(d)&&o.set(d,(o.get(d)??0)+1)}let s=[];for(let f of r)o.get(f)===0&&s.push(await eo(e,f,t));s.sort((f,l)=>f.commit.committer.timestamp-l.commit.committer.timestamp);let i=s.map(f=>f.hash),a=[],c=new Set;for(;i.length>0;){let f=i.pop();if(!f||c.has(f))continue;c.add(f);let l=await eo(e,f,t);l.commit.parents.length<=1&&a.push(l);for(let d of l.commit.parents)if(r.has(d)&&!c.has(d)){let u=(o.get(d)??0)-1;o.set(d,u),u<=0&&i.push(d)}}return a.reverse(),a}async function eo(e,t,n){let r=n.get(t);if(r)return r;let o=await we(e,t);if(o.type!=="commit")throw new Error(`Expected commit object, got ${o.type}`);let s={hash:t,commit:en(o.content)};return n.set(t,s),s}ue();ie();function xr(e){let t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function Nu(e,t){if(e.length===0)return;if(e.length===1)return e.shift();let n=xr(t),r=0;for(let o=0;o<e.length;o++){let s=e[o];if(s&&xr(s.path)===n){r=o;break}}return e.splice(r,1)[0]}var Fu=50;async function nt(e,t,n=Fu){let r=new Map,o=[],s=[],i=[];for(let l of t)if(l.status==="deleted"&&l.oldHash){let d=r.get(l.oldHash)??[];d.push(l),r.set(l.oldHash,d),o.push(l)}else l.status==="added"&&l.newHash?s.push(l):i.push(l);let a=[],c=[];for(let l of s){let d=l.newHash;if(!d){c.push(l);continue}let u=r.get(d);if(u&&u.length>0){let m=Nu(u,l.path);m&&a.push({oldPath:m.path,newPath:l.path,oldHash:m.oldHash??d,newHash:d,similarity:100,oldMode:m.oldMode,newMode:l.newMode})}else c.push(l)}let f=[...r.values()].flat();if(f.length>0&&c.length>0){let l=await Uu(e,f,c,n);if(l.length>0){let d=new Set(l.map(m=>m.oldPath)),u=new Set(l.map(m=>m.newPath));f=f.filter(m=>!d.has(m.path)),c=c.filter(m=>!u.has(m.path)),a.push(...l)}}if(f.length>0&&c.length>0){let l=await qu(e,f,c,n);if(l.length>0){let d=new Set(l.map(m=>m.oldPath)),u=new Set(l.map(m=>m.newPath));f=f.filter(m=>!d.has(m.path)),c=c.filter(m=>!u.has(m.path)),a.push(...l)}}return{remaining:[...i,...f,...c],renames:a}}async function Uu(e,t,n,r){let o=new Map;for(let a=0;a<t.length;a++){let c=t[a];if(!c)continue;let f=xr(c.path);o.has(f)?o.set(f,-1):o.set(f,a)}let s=new Map;for(let a=0;a<n.length;a++){let c=n[a];if(!c)continue;let f=xr(c.path);s.has(f)?s.set(f,-1):s.set(f,a)}let i=[];for(let[a,c]of o){if(c===-1)continue;let f=s.get(a);if(f===void 0||f===-1)continue;let l=t[c],d=n[f];if(!l?.oldHash||!d?.newHash||l.oldHash===d.newHash)continue;let u=await kt(e,l.oldHash),m=await kt(e,d.newHash),h=Wu(u,m);h<r||i.push({oldPath:l.path,newPath:d.path,oldHash:l.oldHash,newHash:d.newHash,similarity:h,oldMode:l.oldMode,newMode:d.newMode})}return i}var Kc=107927;function ro(e){let t=new Map,n=0,r=0,o=0;for(let i=0;i<e.length;i++){let a=e[i],c=r;if(r=(r<<7^o>>>25)>>>0,o=(o<<7^c>>>25)>>>0,r=r+a>>>0,n++,n<64&&a!==10)continue;let f=(r+Math.imul(o,97))%Kc;t.set(f,(t.get(f)??0)+n),n=0,r=0,o=0}if(n>0){let i=(r+Math.imul(o,97))%Kc;t.set(i,(t.get(i)??0)+n)}let s=[];for(let[i,a]of t)s.push({hash:i,count:a});return s.sort((i,a)=>i.hash-a.hash),s}function Bu(e,t){let n=0,r=0,o=0,s=0;for(;o<e.length;){let i=e[o];if(!i)break;for(;s<t.length;){let f=t[s];if(!f||f.hash>=i.hash)break;r+=f.count,s++}let a=i.count,c=0;if(s<t.length){let f=t[s];f&&f.hash===i.hash&&(c=f.count,s++)}a<c?(r+=c-a,n+=a):n+=c,o++}for(;s<t.length;){let i=t[s];i&&(r+=i.count),s++}return{srcCopied:n,literalAdded:r}}function Wu(e,t){return e.length===0&&t.length===0?100:e.length===0||t.length===0?0:Vc(e.length,ro(e),t.length,ro(t))}function Vc(e,t,n,r){let o=Math.max(e,n),s=Math.min(e,n);if(s<o-s)return 0;let{srcCopied:i}=Bu(t,r);return Math.floor(i*100/o)}async function qu(e,t,n,r){let o=[];for(let l of t)if(l.oldHash){let d=await kt(e,l.oldHash);o.push({size:d.length,chunks:ro(d)})}else o.push(null);let s=[];for(let l of n)if(l.newHash){let d=await kt(e,l.newHash);s.push({size:d.length,chunks:ro(d)})}else s.push(null);let i=[];for(let l=0;l<t.length;l++){let d=t[l],u=o[l];if(!(!d||!u))for(let m=0;m<n.length;m++){let h=n[m],p=s[m];if(!h||!p)continue;let g=Vc(u.size,u.chunks,p.size,p.chunks);if(g>=r){let w=xr(d.path)===xr(h.path)?1:0;i.push({similarity:g,nameScore:w,delIdx:l,addIdx:m})}}}i.sort((l,d)=>d.similarity-l.similarity||d.nameScore-l.nameScore);let a=new Set,c=new Set,f=[];for(let{similarity:l,delIdx:d,addIdx:u}of i){if(a.has(d)||c.has(u))continue;a.add(d),c.add(u);let m=t[d],h=n[u];!m||!h||f.push({oldPath:m.path,newPath:h.path,oldHash:m.oldHash??"",newHash:h.newHash??"",similarity:l,oldMode:m.oldMode,newMode:h.newMode})}return f}function cn(e,t){let n=e.length,r=t.length,o=0,s=0;for(;s<n&&s<r&&e[s]===t[s];)e[s]==="/"&&(o=s+1),s++;let i=o>0?1:0,a=0,c=n,f=r;for(;o-i<=c&&o-i<=f&&c>=0&&f>=0;){if(c===n&&f===r){c--,f--;continue}if(e[c]!==t[f])break;e[c]==="/"&&(a=n-c),c--,f--}let l=Math.max(0,n-o-a),d=Math.max(0,r-o-a),u=e.slice(0,o),m=e.slice(n-a),h=e.slice(o,o+l),p=t.slice(o,o+d);return o+a>0?`${u}{${h} => ${p}}${m}`:`${e} => ${t}`}ve();tt();async function rt(e,t){let n=await Q(e),r=await Z(e),o,s=!1;n&&n.type==="symbolic"?o=Re(n.target):(s=!0,o="HEAD detached");let i=t?.index??await K(e),a=Si(i),c=t?.compareHash!==void 0?t.compareHash:r,f=t?.compareHash!==void 0?!t.compareHash:!r,l=await $i(e,c,i,a),d=await Tt(e,i),u=[],m=[];for(let g of d)g.status==="untracked"?m.push(g.path):u.push({path:g.path,status:g.status});u.sort((g,w)=>Oe(g.path,w.path));let h=new Set(i.entries.map(g=>g.path)),p=Ti(m,h);return zu(e,r,s,o,i,l,u,a,p,{fromCommit:t?.fromCommit,noWarn:t?.noWarn,isInitial:f})}function Yc(e,t){if(t.done.length>0){let n=t.done.length;e.push(`Last command${n===1?"":"s"} done (${n} command${n===1?"":"s"} done):`);for(let r of t.done.slice(-2))e.push(` pick ${Y(r.hash)} # ${r.subject}`);n>2&&e.push(" (see more in file .git/rebase-merge/done)")}if(t.todo.length>0){let n=t.todo.length;e.push(`Next command${n===1?"":"s"} to do (${n} remaining command${n===1?"":"s"}):`);for(let r of t.todo.slice(0,2))e.push(` pick ${Y(r.hash)} # ${r.subject}`);e.push(' (use "git rebase --edit-todo" to view and edit)')}else e.push("No commands remaining.")}async function zu(e,t,n,r,o,s,i,a,c,f){let l=[],d=!1,u=await F(e,"CHERRY_PICK_HEAD"),m=await F(e,"REVERT_HEAD"),h=await F(e,"MERGE_HEAD"),p=!u&&!h,w=await Gt(e)?await gt(e):null;if(n&&w){let C=Y(w.onto);l.push(`interactive rebase in progress; onto ${C}`)}else if(n){let C=await ns(e);if(C){let P=t===C?"at":"from";l.push(`HEAD detached ${P} ${Y(C)}`)}else l.push("Not currently on any branch.")}else l.push(`On branch ${r}`);if(!n&&!w){let C=await he(e),P=await bn(e,C,r);if(P){let v=or(P,{abbreviated:f?.fromCommit});for(let D of v.trimEnd().split(`
|
|
106
|
+
`))l.push(D);d=!0}}if(d&&(w||u||m||h)&&l.push(""),w&&h)Yc(l,w),l.push(""),a.length>0?(l.push("You have unmerged paths."),l.push(' (fix conflicts and run "git commit")'),l.push(' (use "git merge --abort" to abort the merge)')):(l.push("All conflicts fixed but you are still merging."),l.push(' (use "git commit" to conclude merge)')),d=!0;else if(w){let C=St(o),P=await e.fs.exists(T(e.gitDir,"MERGE_MSG"));Yc(l,w);let D=w.headName==="detached HEAD"?null:Re(w.headName),O=Y(w.onto),H=D?` branch '${D}' on '${O}'`:"";if(C)l.push(`You are currently rebasing${H}.`),l.push(' (fix conflicts and then run "git rebase --continue")'),l.push(' (use "git rebase --skip" to skip this patch)'),l.push(' (use "git rebase --abort" to check out the original branch)');else if(P)l.push(`You are currently rebasing${H}.`),l.push(' (all conflicts fixed: run "git rebase --continue")');else{let G=H?`You are currently editing a commit while rebasing${H}.`:"You are currently editing a commit during a rebase.";l.push(G),l.push(' (use "git commit --amend" to amend the current commit)'),l.push(' (use "git rebase --continue" once you are satisfied with your changes)')}d=!0}else u?(l.push(`You are currently cherry-picking commit ${Y(u)}.`),a.length>0?l.push(' (fix conflicts and run "git cherry-pick --continue")'):l.push(' (all conflicts fixed: run "git cherry-pick --continue")'),l.push(' (use "git cherry-pick --skip" to skip this patch)'),l.push(' (use "git cherry-pick --abort" to cancel the cherry-pick operation)'),d=!0):m?(l.push(`You are currently reverting commit ${Y(m)}.`),a.length>0?l.push(' (fix conflicts and run "git revert --continue")'):l.push(' (all conflicts fixed: run "git revert --continue")'),l.push(' (use "git revert --skip" to skip this patch)'),l.push(' (use "git revert --abort" to cancel the revert operation)'),d=!0):h&&(a.length>0?(l.push("You have unmerged paths."),l.push(' (fix conflicts and run "git commit")'),l.push(' (use "git merge --abort" to abort the merge)')):(l.push("All conflicts fixed but you are still merging."),l.push(' (use "git commit" to conclude merge)')),d=!0);if(await Rt(e)){let P=(await Pe(e,"BISECT_START"))?.trim()??"";l.push(`You are currently bisecting, started from branch '${P}'.`),l.push(' (use "git bisect reset" to get back to the original branch)'),d=!0}let y=f?.isInitial??!t;y&&(l.push(""),l.push(f?.fromCommit?"Initial commit":"No commits yet"),d=!0);let x=null;p&&(x=t?' (use "git restore --staged <file>..." to unstage)':' (use "git rm --cached <file>..." to unstage)');let k=i.some(C=>C.status==="deleted")?' (use "git add/rm <file>..." to update what will be committed)':' (use "git add <file>..." to update what will be committed)',E=!1;if(s.length>0){d&&l.push(""),l.push("Changes to be committed:"),x&&l.push(x);for(let C of s)l.push(` ${Xc(C.status,C.path,C.displayPath)}`);l.push(""),E=!0}if(a.length>0){!E&&d&&l.push(""),l.push("Unmerged paths:"),p&&(t?l.push(' (use "git restore --staged <file>..." to unstage)'):l.push(' (use "git rm --cached <file>..." to unstage)')),a.some(P=>P.status==="deleted by us"||P.status==="deleted by them"||P.status==="both deleted")?l.push(' (use "git add/rm <file>..." as appropriate to mark resolution)'):l.push(' (use "git add <file>..." to mark resolution)');for(let P of a)l.push(` ${Ku(P.status,P.path)}`);l.push(""),E=!0}if(i.length>0){!E&&d&&l.push(""),l.push("Changes not staged for commit:"),l.push(k),l.push(' (use "git restore <file>..." to discard changes in working directory)');for(let C of i)l.push(` ${Xc(C.status,C.path)}`);l.push(""),E=!0}if(c.length>0){!E&&d&&l.push(""),l.push("Untracked files:"),l.push(' (use "git add <file>..." to include in what will be committed)');for(let C of c)l.push(` ${C}`);l.push(""),E=!0}let R=s.length>0||!!h&&a.length===0;return!E&&d&&(f?.noWarn||R)&&l.push(""),!R&&!f?.noWarn&&(!E&&d&&i.length===0&&a.length===0&&c.length===0&&l.push(""),i.length>0||a.length>0?l.push('no changes added to commit (use "git add" and/or "git commit -a")'):c.length>0?l.push('nothing added to commit but untracked files present (use "git add" to track)'):y?l.push('nothing to commit (create/copy files and use "git add" to track)'):l.push("nothing to commit, working tree clean")),`${l.join(`
|
|
107
107
|
`)}
|
|
108
|
-
`}async function
|
|
108
|
+
`}async function $i(e,t,n,r){let o=new Set(r?.map(m=>m.path)),s=null;t&&(s=(await j(e,t)).tree);let i=await ce(e,s),a=new Map(De(n).map(m=>[m.path,m])),c=[];for(let[m,h]of a){if(o.has(m))continue;let p=i.get(m);p?p.hash!==h.hash&&c.push({path:m,status:"modified",oldHash:p.hash,newHash:h.hash,oldMode:p.mode,newMode:h.mode.toString(8).padStart(6,"0")}):c.push({path:m,status:"added",newHash:h.hash,newMode:h.mode.toString(8).padStart(6,"0")})}for(let[m,h]of i)o.has(m)||a.has(m)||c.push({path:m,status:"deleted",oldHash:h.hash,oldMode:h.mode});let{remaining:f,renames:l}=await nt(e,c),d={added:"new file",deleted:"deleted",modified:"modified"},u=[];for(let m of f){let h=d[m.status];h&&u.push({path:m.path,status:h})}for(let m of l)u.push({path:m.newPath,status:"renamed",displayPath:`${m.oldPath} -> ${m.newPath}`});return u.sort((m,h)=>Oe(m.path,h.path))}function Si(e){let t=new Map;for(let r of e.entries)if(r.stage>0){let o=t.get(r.path);o||(o=new Set,t.set(r.path,o)),o.add(r.stage)}let n=[];for(let[r,o]of t){let s,i=o.has(1),a=o.has(2),c=o.has(3);a&&c?s=i?"both modified":"both added":i&&!a&&!c?s="both deleted":i&&c?s="deleted by us":i&&a?s="deleted by them":a&&!i&&!c?s="added by us":c&&!i&&!a?s="added by them":s="unmerged",n.push({path:r,status:s})}return n.sort((r,o)=>Oe(r.path,o.path))}function Ti(e,t){if(e.length===0)return[];let n=new Set;for(let o of t){let s=o.indexOf("/");for(;s!==-1;)n.add(o.slice(0,s+1)),s=o.indexOf("/",s+1)}let r=new Set;for(let o of e){let s=o.split("/");if(s.length===1){r.add(o);continue}let i=!1;for(let a=1;a<s.length;a++){let c=`${s.slice(0,a).join("/")}/`;if(!n.has(c)){r.add(c),i=!0;break}}i||r.add(o)}return[...r].sort()}function Xc(e,t,n){return`${e}:`.padEnd(12)+(n??t)}function Ku(e,t){return`${e}:`.padEnd(17)+t}async function bn(e,t,n){let r=t[`branch "${n}"`];if(!r?.remote||!r?.merge)return null;let o=r.remote,s=r.merge,i=s.replace(/^refs\/heads\//,`refs/remotes/${o}/`),a=`${o}/${s.replace(/^refs\/heads\//,"")}`,c=await F(e,i);if(!c)return{upstream:a,ahead:0,behind:0,gone:!0};let f=await F(e,`refs/heads/${n}`);if(!f)return null;if(f===c)return{upstream:a,ahead:0,behind:0,gone:!1};let{ahead:l,behind:d}=await xi(e,f,c);return{upstream:a,ahead:l,behind:d,gone:!1}}function Zc(e,t){if(t){if(e.gone)return`[${e.upstream}: gone]`;if(e.ahead===0&&e.behind===0)return`[${e.upstream}]`;let r=[];return e.ahead>0&&r.push(`ahead ${e.ahead}`),e.behind>0&&r.push(`behind ${e.behind}`),`[${e.upstream}: ${r.join(", ")}]`}if(e.gone)return"[gone]";if(e.ahead===0&&e.behind===0)return"";let n=[];return e.ahead>0&&n.push(`ahead ${e.ahead}`),e.behind>0&&n.push(`behind ${e.behind}`),`[${n.join(", ")}]`}function or(e,t){if(e.gone)return`Your branch is based on '${e.upstream}', but the upstream is gone.
|
|
109
109
|
(use "git branch --unset-upstream" to fixup)
|
|
110
110
|
`;if(e.ahead===0&&e.behind===0)return`Your branch is up to date with '${e.upstream}'.
|
|
111
111
|
`;if(e.ahead>0&&e.behind===0){let r=e.ahead===1?"commit":"commits";return`Your branch is ahead of '${e.upstream}' by ${e.ahead} ${r}.
|
|
@@ -123,9 +123,9 @@ and have ${e.ahead} and ${e.behind} different commits each, respectively.
|
|
|
123
123
|
`,exitCode:1}:null}async function oo(e,t,n,r){if(!e.workTree)return I("this operation must be run in a work tree");if(r)return Yu(e,t,n,r);let o=await K(e),s=t.map(a=>Ue(a,n)),i=o.entries.filter(a=>a.stage===0&&ye(s,a.path));if(i.length===0)return o.entries.some(c=>c.stage>0&&ye(s,c.path))?L(`error: path '${t[0]}' is unmerged
|
|
124
124
|
`):L(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
125
125
|
`);for(let a of i)await ct(e,{path:a.path,hash:a.hash,mode:a.mode});return{stdout:"",stderr:"",exitCode:0}}async function Yu(e,t,n,r){let o=await ce(e,r),s=await K(e),i=t.map(c=>Ue(c,n)),a=[];for(let[c]of o)ye(i,c)&&a.push(c);if(a.length===0)return L(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
126
|
-
`);for(let c of a){let f=o.get(c);f&&(await ct(e,{path:f.path,hash:f.hash,mode:f.mode}),s=
|
|
126
|
+
`);for(let c of a){let f=o.get(c);f&&(await ct(e,{path:f.path,hash:f.hash,mode:f.mode}),s=Et(s,{path:f.path,hash:f.hash,mode:parseInt(f.mode,8),stage:0,stat:Ie()}))}return await ae(e,s),{stdout:"",stderr:"",exitCode:0}}async function io(e,t,n,r,o){if(!e.workTree)return I("this operation must be run in a work tree");let s=o?.deleteOnMissing??!1,i=await K(e),a=t.map(f=>Ue(f,n)),c=new Set;for(let f of i.entries)ye(a,f.path)&&c.add(f.path);if(c.size===0)return L(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
127
127
|
`);for(let f of c){let l=i.entries.find(m=>m.path===f&&m.stage===r),d=!l&&i.entries.find(m=>m.path===f&&m.stage===0),u=l||d;if(u)await ct(e,{path:u.path,hash:u.hash,mode:u.mode});else if(s){let m=T(e.workTree,f);await e.fs.exists(m)&&await e.fs.rm(m)}else if(i.entries.some(h=>h.path===f&&h.stage>0))return L(`error: path '${f}' does not have ${r===2?"our":"their"} version
|
|
128
|
-
`)}return{stdout:"",stderr:"",exitCode:0}}async function ir(e,t,n){if(!e.workTree)return"";let r=await Ve(e,t),o=new Map;for(let c of r)o.set(c.path,c.hash);let s=new Map;for(let c of n.entries)c.stage===0&&s.set(c.path,c.hash);let i=new Map;for(let[c]of s){let f=T(e.workTree,c);if(await e.fs.exists(f)){if((await e.fs.stat(f)).isFile){let d=await e.fs.readFileBuffer(f);i.set(c,await
|
|
128
|
+
`)}return{stdout:"",stderr:"",exitCode:0}}async function ir(e,t,n){if(!e.workTree)return"";let r=await Ve(e,t),o=new Map;for(let c of r)o.set(c.path,c.hash);let s=new Map;for(let c of n.entries)c.stage===0&&s.set(c.path,c.hash);let i=new Map;for(let[c]of s){let f=T(e.workTree,c);if(await e.fs.exists(f)){if((await e.fs.stat(f)).isFile){let d=await e.fs.readFileBuffer(f);i.set(c,await ut("blob",d))}}else i.set(c,null)}let a=[];for(let[c,f]of o){let l=s.get(c);if(l===void 0){a.push(`D ${c}`);continue}let d=i.get(c);d===null?a.push(`D ${c}`):(l!==f||d!==void 0&&d!==f)&&a.push(`M ${c}`)}for(let[c]of s)o.has(c)||i.get(c)!=null&&a.push(`A ${c}`);return a.length===0?"":(a.sort((c,f)=>{let l=c.slice(2),d=f.slice(2);return l<d?-1:l>d?1:0}),`${a.join(`
|
|
129
129
|
`)}
|
|
130
130
|
`)}var Jc=5;function Xu(e){let t=e.length,n=t===1?"commit":"commits",r=t===1?"it":"them",o=t>Jc?Jc-1:t,i=e.slice(0,o).map(c=>` ${Y(c.hash)} ${c.subject}`),a=t-o;return a>0&&i.push(` ... and ${a} more.`),`Warning: you are leaving ${t} ${n} behind, not connected to
|
|
131
131
|
any of your branches:
|
|
@@ -139,9 +139,9 @@ to do so with:
|
|
|
139
139
|
git branch <new-branch-name> ${Y(e[0].hash)}
|
|
140
140
|
|
|
141
141
|
`}async function vi(e,t){let n=await j(e,t);return`Previous HEAD position was ${Y(t)} ${fe(n.message)}
|
|
142
|
-
`}async function ao(e,t,n){let r=await
|
|
143
|
-
`,exitCode:0};let a=await K(e),c=jn(a);if(c)return c;let f=await Z(e),d=(await j(e,r)).tree,u=null;if(f&&(u=(await j(e,f)).tree),u!==d){let x=await An(e,u,d,a);if(!x.success)return x.errorOutput??L("error: checkout would overwrite local changes");a={version:2,entries:x.newEntries},await ae(e,a),await
|
|
144
|
-
${p}`,exitCode:0}}async function Gn(e,t,n,r,o){let s=await K(e),i=jn(s);if(i)return i;let a=await Z(e),c=await j(e,t),f=c.tree,l=null;if(a&&(l=(await j(e,a)).tree),l!==f){let x=await An(e,l,f,s);if(!x.success)return x.errorOutput??L("error: checkout would overwrite local changes");s={version:2,entries:x.newEntries},await ae(e,s),await
|
|
142
|
+
`}async function ao(e,t,n){let r=await Pi(e,t,{targetHash:n});return r.length>0?Xu(r):t!==n?vi(e,t):""}async function ar(e,t,n,r,o,s){let i=await Q(e);if(i?.type==="symbolic"&&i.target===n)return{stdout:"",stderr:`Already on '${t}'
|
|
143
|
+
`,exitCode:0};let a=await K(e),c=jn(a);if(c)return c;let f=await Z(e),d=(await j(e,r)).tree,u=null;if(f&&(u=(await j(e,f)).tree),u!==d){let x=await An(e,u,d,a);if(!x.success)return x.errorOutput??L("error: checkout would overwrite local changes");a={version:2,entries:x.newEntries},await ae(e,a),await Me(e,x.worktreeOps)}let m="";i?.type==="direct"&&f&&(m=await ao(e,f,r));let h=i?.type==="symbolic"?i.target.replace(/^refs\/heads\//,""):f??te;await ze(e,"HEAD",n),await pt(e);let p=await yn(e);await re(e,o,"HEAD",f,r,`checkout: moving from ${h} to ${t}`),await s?.hooks?.postCheckout?.({repo:e,prevHead:f,newHead:r,isBranchCheckout:!0});let g=await ir(e,d,a),w=await he(e),y=await bn(e,w,t);return y&&(g+=or(y)),{stdout:g,stderr:`${m}Switched to branch '${t}'
|
|
144
|
+
${p}`,exitCode:0}}async function Gn(e,t,n,r,o){let s=await K(e),i=jn(s);if(i)return i;let a=await Z(e),c=await j(e,t),f=c.tree,l=null;if(a&&(l=(await j(e,a)).tree),l!==f){let x=await An(e,l,f,s);if(!x.success)return x.errorOutput??L("error: checkout would overwrite local changes");s={version:2,entries:x.newEntries},await ae(e,s),await Me(e,x.worktreeOps)}let d=await Q(e),u=d?.type==="direct"&&a===t;if(await X(e,"HEAD",t),!u){await Gc(e,t);let x=d?.type==="symbolic"?d.target.replace(/^refs\/heads\//,""):a??te;await re(e,n,"HEAD",a,t,`checkout: moving from ${x} to ${t}`)}let m=await yn(e);await r?.hooks?.postCheckout?.({repo:e,prevHead:a,newHead:t,isBranchCheckout:!1});let h=Y(t),p=fe(c.message),g=d?.type==="direct",w="";return g&&a&&a!==t&&(w+=await ao(e,a,t)),g||!o?.detachAdviceTarget?w+=`HEAD is now at ${h} ${p}
|
|
145
145
|
`:w=`Note: switching to '${o.detachAdviceTarget}'.
|
|
146
146
|
|
|
147
147
|
You are in 'detached HEAD' state. You can look around, make experimental
|
|
@@ -162,19 +162,19 @@ Turn off this advice by setting config variable advice.detachedHead to false
|
|
|
162
162
|
HEAD is now at ${h} ${p}
|
|
163
163
|
`,w+=m,{stdout:await ir(e,f,s),stderr:w,exitCode:0}}async function Zu(e,t){if(t.startsWith("refs/remotes/")){if(!await F(e,t))return null;let s=t.slice(13).split("/");if(s.length<2)return null;let i=s[0],a=s.slice(1).join("/");return{remote:i,branch:a,ref:t}}let n=`refs/remotes/${t}`;if(await F(e,n)){let o=t.split("/");if(o.length<2)return null;let s=o[0],i=o.slice(1).join("/");return{remote:s,branch:i,ref:n}}return null}async function co(e,t,n){let r=await Zu(e,n);if(!r||await ke(e,"branch.autoSetupMerge")==="false")return"";let s=await he(e),i=`branch "${t}"`;return s[i]||(s[i]={}),s[i].remote=r.remote,s[i].merge=`refs/heads/${r.branch}`,await Ye(e,s),`branch '${t}' set up to track '${r.remote}/${r.branch}'.
|
|
164
164
|
`}async function fo(e,t){let n=await ge(e,"refs/remotes"),r=[];for(let o of n){let s=o.name.replace(/^refs\/remotes\//,"").split("/"),i=s[0];s.length>=2&&i&&s.slice(1).join("/")===t&&r.push({remote:i,ref:o.name})}if(r.length===1){let o=r[0];return{remote:o.remote,startPoint:o.ref,trackingRef:o.ref}}if(r.length>1){let o=await ke(e,"checkout.defaultRemote");if(o){let s=r.filter(i=>i.remote===o);if(s.length===1){let i=s[0];return{remote:i.remote,startPoint:i.ref,trackingRef:i.ref}}}}return null}ie();le();ue();hn();var Qc=new Set(["help","start","skip","next","reset","visualize","view","replay","log","run","terms"]),os={stdout:`You need to start by "git bisect start"
|
|
165
|
-
`,stderr:"",exitCode:1};async function Hi(e){let t=await
|
|
166
|
-
`,exitCode:1};let i=r.rest??[],a=await W(o.fs,o.cwd,t);return M(a)?a:tm(a,o.env,t,s,i)}});Ju(n,t),Qu(n,t),nm(n,t),rm(n,t),om(n,t),im(n,t),cm(n,t),lm(n,t),dm(n,t)}function Ju(e,t){e.command("start",{description:"Start bisecting",args:[q.string().name("revs").describe("Bad and good revisions").optional().variadic()],options:{"term-new":J.string().describe("Alternate term for new/bad"),"term-bad":J.string().describe("Alternate term for new/bad"),"term-old":J.string().describe("Alternate term for old/good"),"term-good":J.string().describe("Alternate term for old/good"),"no-checkout"
|
|
165
|
+
`,stderr:"",exitCode:1};async function Hi(e){let t=await Pe(e,"BISECT_HEAD");if(t?.trim())return t.trim();let n=await Z(e);return n||I("no current commit")}function ef(e,t){let n=e.command("bisect",{description:"Use binary search to find the commit that introduced a bug",args:[q.string().name("subcommand").describe("Subcommand or custom term").optional(),q.string().name("rest").describe("Additional arguments").optional().variadic()],handler:async(r,o)=>{let s=r.subcommand;if(!s)return{stdout:"",stderr:`usage: git bisect [start|bad|good|new|old|terms|skip|next|reset|visualize|view|replay|log|run]
|
|
166
|
+
`,exitCode:1};let i=r.rest??[],a=await W(o.fs,o.cwd,t);return M(a)?a:tm(a,o.env,t,s,i)}});Ju(n,t),Qu(n,t),nm(n,t),rm(n,t),om(n,t),im(n,t),cm(n,t),lm(n,t),dm(n,t)}function Ju(e,t){e.command("start",{description:"Start bisecting",args:[q.string().name("revs").describe("Bad and good revisions").optional().variadic()],options:{"term-new":J.string().describe("Alternate term for new/bad"),"term-bad":J.string().describe("Alternate term for new/bad"),"term-old":J.string().describe("Alternate term for old/good"),"term-good":J.string().describe("Alternate term for old/good"),"no-checkout":$().describe("Do not checkout the bisection commit"),"first-parent":$().describe("Follow only first parent on merges")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=Xe(s);if(i&&!n["no-checkout"])return i;let a=n["term-new"]??n["term-bad"]??"bad",c=n["term-old"]??n["term-good"]??"good";return Qc.has(a)?I(`'${a}' is not a valid term`):Qc.has(c)?I(`'${c}' is not a valid term`):a===c?I("'bad' and 'good' terms must be different"):tf(s,r.env,t,n.revs??[],a,c,n["no-checkout"]??!1,n["first-parent"]??!1)}})}async function tf(e,t,n,r,o,s,i,a){await Rt(e)&&await Qs(e);let c=await Q(e),f;if(c?.type==="symbolic"?f=c.target.replace(/^refs\/heads\//,""):f=await Z(e)??"HEAD",await Te(e,"BISECT_START",f+`
|
|
167
167
|
`),await Te(e,"BISECT_TERMS",`${o}
|
|
168
168
|
${s}
|
|
169
169
|
`),await Te(e,"BISECT_NAMES",`
|
|
170
170
|
`),a&&await Te(e,"BISECT_FIRST_PARENT",""),i){let u=await Z(e);u&&await Te(e,"BISECT_HEAD",u)}if(r.length>0){let u=r[0],m=await vt(e,u);if(M(m))return m;await X(e,`refs/bisect/${o}`,m);let h=await j(e,m);await xt(e,`# ${o}: [${m}] ${fe(h.message)}`);for(let p=1;p<r.length;p++){let g=r[p],w=await vt(e,g);if(M(w))return w;await X(e,`refs/bisect/${s}-${w}`,w);let y=await j(e,w);await xt(e,`# ${s}: [${w}] ${fe(y.message)}`)}}let l=r.map(u=>`'${u}'`),d=l.length>0?` ${l.join(" ")}`:"";return await xt(e,`git bisect start${d}`),is(e,t,n)}function Qu(e,t){for(let n of["bad","good","new","old"])e.command(n,{description:n==="bad"||n==="new"?"Mark a commit as bad/new":"Mark a commit as good/old",args:[q.string().name("rev").describe("Revision to mark").optional()],handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);return M(s)?s:em(s,o.env,t,n,r.rev)}})}async function em(e,t,n,r,o){if(!await Rt(e))return os;let s=await rs(e),i=r==="bad"||r==="new"?s.termBad:s.termGood;return ss(e,t,n,i,s,o)}async function tm(e,t,n,r,o){if(!await Rt(e))return os;let s=await rs(e);return r!==s.termBad&&r!==s.termGood?{stdout:"",stderr:`error: unknown command: 'git bisect ${r}'
|
|
171
171
|
`,exitCode:1}:ss(e,t,n,r,s,o[0])}async function ss(e,t,n,r,o,s){let i;if(s){let f=await vt(e,s);if(M(f))return f;i=f}else{let f=await Hi(e);if(M(f))return f;i=f}let a=await j(e,i),c=fe(a.message);return r===o.termBad?await X(e,`refs/bisect/${o.termBad}`,i):await X(e,`refs/bisect/${o.termGood}-${i}`,i),await xt(e,`# ${r}: [${i}] ${c}`),await xt(e,`git bisect ${r} ${i}`),is(e,t,n)}function nm(e,t){e.command("skip",{description:"Mark a commit as untestable",args:[q.string().name("revs").describe("Revisions to skip").optional().variadic()],handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(!await Rt(s))return os;let i=n.revs??[];if(i.length===0){let a=await Hi(s);if(M(a))return a;i.push(a)}for(let a of i){let c;if(a.length===40&&/^[0-9a-f]+$/.test(a))c=a;else{let l=await vt(s,a);if(M(l))return l;c=l}await X(s,`refs/bisect/skip-${c}`,c);let f=await j(s,c);await xt(s,`# skip: [${c}] ${fe(f.message)}`),await xt(s,`git bisect skip ${c}`)}return is(s,r.env,t)}})}function rm(e,t){e.command("reset",{description:"Finish bisecting and return to original branch",args:[q.string().name("commit").describe("Branch or commit to checkout").optional()],handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;return await Rt(s)?sm(s,r.env,t,n.commit):{stdout:`We are not bisecting.
|
|
172
|
-
`,stderr:"",exitCode:0}}})}async function sm(e,t,n,r){let o=(await
|
|
172
|
+
`,stderr:"",exitCode:0}}})}async function sm(e,t,n,r){let o=(await Pe(e,"BISECT_START"))?.trim()??"";if(await Qs(e),r){let s=await vt(e,r);return M(s)?s:Gn(e,s,t,n)}if(o){let s=`refs/heads/${o}`,i=await F(e,s);if(i)return ar(e,o,s,i,t,n);let a=await Be(e,o);if(a)return Gn(e,a,t,n)}return{stdout:"",stderr:"",exitCode:0}}function om(e,t){e.command("log",{description:"Show the bisect log",handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;return await Rt(s)?{stdout:await Pe(s,"BISECT_LOG")??"",stderr:"",exitCode:0}:{stdout:"",stderr:`error: We are not bisecting.
|
|
173
173
|
`,exitCode:1}}})}function im(e,t){e.command("replay",{description:"Replay a bisect log",args:[q.string().name("logfile").describe("Path to bisect log file")],handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=n.logfile.startsWith("/")?n.logfile:T(r.cwd,n.logfile);if(!await r.fs.exists(i))return I(`cannot open '${n.logfile}': No such file or directory`);let a=await r.fs.readFile(i);return am(s,r.env,t,a)}})}async function am(e,t,n,r){await Rt(e)&&await Qs(e);let o={termBad:"bad",termGood:"good"},s="";for(let i of r.split(`
|
|
174
174
|
`)){let a=i.trim();if(!a||a.startsWith("#"))continue;let c=a.match(/^git[\s-]bisect\s+(\S+)(.*)$/);if(!c)continue;let f=c[1],l=c[2].trim(),d;if(f==="start"){let u=l?l.split(/\s+/).map(m=>m.replace(/^'|'$/g,"")):[];d=await tf(e,t,n,u,"bad","good",!1,!1)}else if(f==="bad"||f==="new")d=await ss(e,t,n,"bad",o,l||void 0);else if(f==="good"||f==="old")d=await ss(e,t,n,"good",o,l||void 0);else if(f==="skip"){for(let u of l?l.split(/\s+/):[]){await X(e,`refs/bisect/skip-${u}`,u);let m=await j(e,u);await xt(e,`# skip: [${u}] ${fe(m.message)}`),await xt(e,`git bisect skip ${u}`)}d=await is(e,t,n)}else continue;if(d.exitCode!==0)return d;s+=d.stdout}return{stdout:s,stderr:"",exitCode:0}}function cm(e,t){e.command("run",{description:"Bisect by running a command",args:[q.string().name("cmd").describe("Command and arguments to run").variadic()],handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(!await Rt(s))return os;if(!r.exec)return I("bisect run requires shell execution support");let i=n.cmd.join(" ");return fm(s,r.env,t,i,r.exec,r.cwd)}})}async function fm(e,t,n,r,o,s){let i="";for(;;){i+=`running '${r}'
|
|
175
175
|
`;let c=(await o(r,{cwd:s})).exitCode;if(c===125){let u=await Hi(e);if(M(u))return u;await X(e,`refs/bisect/skip-${u}`,u);let m=await j(e,u);await xt(e,`# skip: [${u}] ${fe(m.message)}`),await xt(e,`git bisect skip ${u}`);let h=await is(e,t,n);if(i+=h.stdout,h.stdout.includes("is the first bad commit"))return i+=`bisect found first bad commit
|
|
176
176
|
`,{stdout:i,stderr:"",exitCode:0};if(h.exitCode!==0)return{stdout:i,stderr:h.stderr,exitCode:h.exitCode};continue}let f=await Js(e),l=c===0?f.termGood:f.termBad,d=await ss(e,t,n,l,f,void 0);if(i+=d.stdout,d.stdout.includes("is the first bad commit"))return i+=`bisect found first bad commit
|
|
177
|
-
`,{stdout:i,stderr:"",exitCode:0};if(d.exitCode!==0)return{stdout:i,stderr:d.stderr,exitCode:d.exitCode}}}function lm(e,t){e.command("terms",{description:"Show the terms used for old and new commits",options:{"term-good"
|
|
177
|
+
`,{stdout:i,stderr:"",exitCode:0};if(d.exitCode!==0)return{stdout:i,stderr:d.stderr,exitCode:d.exitCode}}}function lm(e,t){e.command("terms",{description:"Show the terms used for old and new commits",options:{"term-good":$().describe("Show the term for the old state"),"term-bad":$().describe("Show the term for the new state")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(!await Rt(s))return{stdout:"",stderr:`error: no terms defined
|
|
178
178
|
`,exitCode:1};let{termBad:i,termGood:a}=await rs(s);return n["term-good"]?{stdout:`${a}
|
|
179
179
|
`,stderr:"",exitCode:0}:n["term-bad"]?{stdout:`${i}
|
|
180
180
|
`,stderr:"",exitCode:0}:{stdout:`Your current terms are ${a} for the old state
|
|
@@ -189,36 +189,36 @@ The first bad commit could be any of:
|
|
|
189
189
|
`),s+=`We cannot bisect more!
|
|
190
190
|
`,{stdout:s,stderr:"",exitCode:2}}if(r.noCheckout)await Te(e,"BISECT_HEAD",o.hash);else{let s=await Gn(e,o.hash,t,n);if(s.exitCode!==0)return s}return await Te(e,"BISECT_EXPECTED_REV",o.hash+`
|
|
191
191
|
`),{stdout:Nc(o),stderr:"",exitCode:0}}se();ie();function Lt(e){if(e.length===0)return[];let t=e.split(`
|
|
192
|
-
`);return t[t.length-1]===""&&t.pop(),t}function
|
|
193
|
-
`&&(t.push(e.slice(n,r+1)),n=r+1);return n<e.length&&t.push(e.slice(n)),t}var mm=4,nf=1024,lo=100,ho=0,uo=1,
|
|
192
|
+
`);return t[t.length-1]===""&&t.pop(),t}function bt(e){if(e.length===0)return[];let t=[],n=0;for(let r=0;r<e.length;r++)e[r]===`
|
|
193
|
+
`&&(t.push(e.slice(n,r+1)),n=r+1);return n<e.length&&t.push(e.slice(n)),t}var mm=4,nf=1024,lo=100,ho=0,uo=1,Pr=2;function Di(e){let t=1;for(;t*t<e;)t++;return t}function hm(e,t){let n=new Map,r=[],o=new Array(e.length),s=new Array(t.length);for(let i=0;i<e.length;i++){let a=e[i],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len1++,o[i]=c}for(let i=0;i<t.length;i++){let a=t[i],c=n.get(a);c===void 0&&(c=r.length,n.set(a,c),r.push({len1:0,len2:0})),r[c].len2++,s[i]=c}return{classes1:o,classes2:s,classInfo:r}}function pm(e,t,n,r){let o=0,s=Math.min(t,r);for(;o<s&&e[o]===n[o];)o++;let i=o,a=0,c=s-i;for(;a<c&&e[t-1-a]===n[r-1-a];)a++;return{dstart:i,dend1:t-a-1,dend2:r-a-1}}function rf(e,t,n,r){t-n>lo&&(n=t-lo),r-t>lo&&(r=t+lo);let o=0,s=1;for(let c=1;t-c>=n;c++){let f=e[t-c];if(f===ho)o++;else if(f===Pr)s++;else break}if(o===0)return!1;let i=0,a=1;for(let c=1;t+c<=r;c++){let f=e[t+c];if(f===ho)i++;else if(f===Pr)a++;else break}return i===0?!1:(i+=o,a+=s,a*mm<a+i)}function gm(e,t,n,r,o,s,i,a,c,f){let l=new Uint8Array(t),d=new Uint8Array(r),u=Math.min(Di(t),nf);for(let g=s;g<=i;g++){let w=o[e[g]].len2;w===0?l[g]=ho:w>=u?l[g]=Pr:l[g]=uo}let m=Math.min(Di(r),nf);for(let g=s;g<=a;g++){let w=o[n[g]].len1;w===0?d[g]=ho:w>=m?d[g]=Pr:d[g]=uo}let h=[];for(let g=s;g<=i;g++)l[g]===uo||l[g]===Pr&&!rf(l,g,s,i)?h.push(g):c[g]=1;let p=[];for(let g=s;g<=a;g++)d[g]===uo||d[g]===Pr&&!rf(d,g,s,a)?p.push(g):f[g]=1;return{refIndex1:h,nreff1:h.length,refIndex2:p,nreff2:p.length}}var Ln=20,sf=4,wm=256,bm=256,mo=2147483647;function wt(e,t){return e[t]??0}function ym(e,t,n,r,o,s,i,a,c,f){let l=t-s,d=n-o,u=t-o,m=n-s,h=u-m&1,p=u,g=u,w=m,y=m;i[u]=t,a[m]=n;for(let x=1;;x++){let b=!1;p>l?i[--p-1]=-1:++p,g<d?i[++g+1]=-1:--g;for(let k=g;k>=p;k-=2){let E;wt(i,k-1)>=wt(i,k+1)?E=wt(i,k-1)+1:E=wt(i,k+1);let R=E,C=E-k;for(;E<n&&C<s&&e[E]===r[C];)E++,C++;if(E-R>Ln&&(b=!0),i[k]=E,h&&w<=k&&k<=y&&wt(a,k)<=E)return{i1:E,i2:C,minLo:!0,minHi:!0}}w>l?a[--w-1]=mo:++w,y<d?a[++y+1]=mo:--y;for(let k=y;k>=w;k-=2){let E;wt(a,k-1)<wt(a,k+1)?E=wt(a,k-1):E=wt(a,k+1)-1;let R=E,C=E-k;for(;E>t&&C>o&&e[E-1]===r[C-1];)E--,C--;if(R-E>Ln&&(b=!0),a[k]=E,!h&&p<=k&&k<=g&&E<=wt(i,k))return{i1:E,i2:C,minLo:!0,minHi:!0}}if(!c){if(b&&x>wm){let k=0,E=null;for(let R=g;R>=p;R-=2){let C=R>u?R-u:u-R,P=wt(i,R),v=P-R,D=P-t+(v-o)-C;if(D>sf*x&&D>k&&t+Ln<=P&&P<n&&o+Ln<=v&&v<s){let O=!0;for(let H=1;H<=Ln;H++)if(e[P-H]!==r[v-H]){O=!1;break}O&&(k=D,E={i1:P,i2:v,minLo:!0,minHi:!1})}}if(E)return E;k=0,E=null;for(let R=y;R>=w;R-=2){let C=R>m?R-m:m-R,P=wt(a,R),v=P-R,D=n-P+(s-v)-C;if(D>sf*x&&D>k&&t<P&&P<=n-Ln&&o<v&&v<=s-Ln){let O=!0;for(let H=0;H<Ln;H++)if(e[P+H]!==r[v+H]){O=!1;break}O&&(k=D,E={i1:P,i2:v,minLo:!1,minHi:!0})}}if(E)return E}if(x>=f){let k=-1,E=-1;for(let P=g;P>=p;P-=2){let v=Math.min(wt(i,P),n),D=v-P;s<D&&(v=s+P,D=s),k<v+D&&(k=v+D,E=v)}let R=mo,C=mo;for(let P=y;P>=w;P-=2){let v=Math.max(t,wt(a,P)),D=v-P;D<o&&(v=o+P,D=o),v+D<R&&(R=v+D,C=v)}return n+s-R<k-(t+o)?{i1:E,i2:k-E,minLo:!0,minHi:!1}:{i1:C,i2:R-C,minLo:!1,minHi:!0}}}}}function Mi(e,t,n,r,o,s,i,a,c,f,l,d,u,m){for(;t<n&&o<s&&e[t]===r[o];)t++,o++;for(;t<n&&o<s&&e[n-1]===r[s-1];)n--,s--;if(t===n)for(let h=o;h<s;h++)a[f[h]]=1;else if(o===s)for(let h=t;h<n;h++)i[c[h]]=1;else{let h=ym(e,t,n,r,o,s,l,d,u,m);Mi(e,t,h.i1,r,o,h.i2,i,a,c,f,l,d,h.minLo,m),Mi(e,h.i1,n,r,h.i2,s,i,a,c,f,l,d,h.minHi,m)}}function Em(e,t,n,r){let o=[],s=0,i=0,a=1,c=1;for(;s<e.length||i<t.length;){if(s<e.length&&i<t.length&&!n[s]&&!r[i]){o.push({type:"keep",line:e[s]??"",oldLineNo:a++,newLineNo:c++}),s++,i++;continue}for(;s<e.length&&n[s];)o.push({type:"delete",line:e[s]??"",oldLineNo:a++,newLineNo:0}),s++;for(;i<t.length&&r[i];)o.push({type:"insert",line:t[i]??"",oldLineNo:0,newLineNo:c++}),i++}return o}var of=200,af=20,cf=100,km=1,Rm=21,xm=-30,Pm=6,Cm=-4,Om=10,Im=24,$m=17,Sm=23,Tm=17,vm=60;function Ai(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r===32)t+=1;else if(r===9)t+=8-t%8;else if(!(r===10||r===13||r===11||r===12))return t;if(t>=of)return of}return-1}function ff(e,t,n){let r={endOfFile:!1,indent:-1,preBlank:0,preIndent:-1,postBlank:0,postIndent:-1};n>=t?(r.endOfFile=!0,r.indent=-1):(r.endOfFile=!1,r.indent=Ai(e[n]));for(let o=n-1;o>=0&&(r.preIndent=Ai(e[o]),r.preIndent===-1);o--)if(r.preBlank+=1,r.preBlank===af){r.preIndent=0;break}for(let o=n+1;o<t&&(r.postIndent=Ai(e[o]),r.postIndent===-1);o++)if(r.postBlank+=1,r.postBlank===af){r.postIndent=0;break}return r}function lf(e,t){e.preIndent===-1&&e.preBlank===0&&(t.penalty+=km),e.endOfFile&&(t.penalty+=Rm);let n=e.indent===-1?1+e.postBlank:0,r=e.preBlank+n;t.penalty+=xm*r,t.penalty+=Pm*n;let o=e.indent!==-1?e.indent:e.postIndent,s=r!==0;t.effectiveIndent+=o,o===-1||e.preIndent===-1||(o>e.preIndent?t.penalty+=s?Om:Cm:o===e.preIndent||(e.postIndent!==-1&&e.postIndent>o?t.penalty+=s?$m:Im:t.penalty+=s?Tm:Sm))}function Hm(e,t){let n=(e.effectiveIndent>t.effectiveIndent?1:0)-(e.effectiveIndent<t.effectiveIndent?1:0);return vm*n+(e.penalty-t.penalty)}function df(e,t,n,r,o,s){let i=0,a=0;for(;e[a];)a++;let c=0,f=0;for(;o[f];)f++;let l=(d,u)=>t[d]===t[u];for(;;){if(a!==i){let d,u,m;do{for(d=a-i,u=-1;i>0&&l(i-1,a-1);){for(e[--i]=1,e[--a]=0;e[i-1];)i--;if(c===0)break;for(f=c-1,c=f;o[c-1];c--);}for(m=a,f>c&&(u=a);!(a>=r||!l(i,a));){for(e[i++]=0,e[a++]=1;e[a];)a++;if(f>=s)break;for(c=f+1,f=c;o[f];f++);f>c&&(u=a)}}while(d!==a-i);if(a!==m)if(u!==-1)for(;f===c;){for(e[--a]=0,e[--i]=1;e[i-1];)i--;for(f=c-1,c=f;o[c-1];c--);}else{let h=-1,p={effectiveIndent:0,penalty:0},g=m;for(a-d-1>g&&(g=a-d-1),a-cf>g&&(g=a-cf);g<=a;g++){let w={effectiveIndent:0,penalty:0},y=ff(n,r,g);lf(y,w);let x=ff(n,r,g-d);lf(x,w),(h===-1||Hm(w,p)<=0)&&(p={effectiveIndent:w.effectiveIndent,penalty:w.penalty},h=g)}for(;a>h;){for(e[--a]=0,e[--i]=1;e[i-1];)i--;for(f=c-1,c=f;o[c-1];c--);}}}if(a>=r)break;for(i=a+1,a=i;e[a];a++);if(f>=s)break;for(c=f+1,f=c;o[f];f++);}}function ji(e,t){let n=e.length,r=t.length,o=new Uint8Array(n),s=new Uint8Array(r);if(n>0&&r>0){let{classes1:i,classes2:a,classInfo:c}=hm(e,t),{dstart:f,dend1:l,dend2:d}=pm(i,n,a,r);if(f>l)for(let u=f;u<r-(n-1-l);u++)s[u]=1;else if(f>d)for(let u=f;u<n-(r-1-d);u++)o[u]=1;else{let{refIndex1:u,nreff1:m,refIndex2:h,nreff2:p}=gm(i,n,a,r,c,f,l,d,o,s);if(m>0&&p>0){let g=new Array(m);for(let E=0;E<m;E++)g[E]=i[u[E]];let w=new Array(p);for(let E=0;E<p;E++)w[E]=a[h[E]];let y={},x={},b=m+p+3,k=Math.max(bm,Di(b));Mi(g,0,m,w,0,p,o,s,u,h,y,x,!1,k)}else if(m===0)for(let g=0;g<p;g++)s[h[g]]=1;else for(let g=0;g<m;g++)o[u[g]]=1;df(o,i,e,n,s,r),df(s,a,t,r,o,n)}}else n===0?s.fill(1):o.fill(1);return{changedOld:o,changedNew:s}}function st(e,t){let n=e.length,r=t.length;if(n===0&&r===0)return[];if(n===0)return t.map((i,a)=>({type:"insert",line:i,oldLineNo:0,newLineNo:a+1}));if(r===0)return e.map((i,a)=>({type:"delete",line:i,oldLineNo:a+1,newLineNo:0}));let{changedOld:o,changedNew:s}=ji(e,t);return Em(e,t,o,s)}var Am=3;function Dm(e,t=Am){if(e.length===0)return[];let n=[];for(let a=0;a<e.length;a++){let c=e[a];c&&c.type!=="keep"&&n.push(a)}if(n.length===0)return[];let r=n[0]??0,o=[],s=Math.max(0,r-t),i=Math.min(e.length-1,r+t);for(let a=1;a<n.length;a++){let c=n[a]??0,f=Math.max(0,c-t),l=Math.min(e.length-1,c+t);f<=i+1||(o.push({start:s,end:i}),s=f),i=l}return o.push({start:s,end:i}),o.map(a=>Mm(e,a.start,a.end))}function Mm(e,t,n){let r=0,o=0,s=0,i=0,a=[],c=!1,f=!1;for(let l=t;l<=n;l++){let d=e[l];if(d)switch(d.type){case"keep":c||(r=d.oldLineNo,c=!0),f||(s=d.newLineNo,f=!0),o++,i++,a.push({type:"context",content:d.line});break;case"delete":c||(r=d.oldLineNo,c=!0),o++,a.push({type:"delete",content:d.line});break;case"insert":f||(s=d.newLineNo,f=!0),i++,a.push({type:"insert",content:d.line});break}}if(c||(r=s>0?s:1),f||(s=r>0?r:1),o===0)for(let l=t;l<=n;l++){let d=e[l];if(d&&d.type==="insert"){r=d.newLineNo>1?d.newLineNo-1:0;break}}if(i===0)for(let l=t;l<=n;l++){let d=e[l];if(d&&d.type==="delete"){s=d.oldLineNo>1?d.oldLineNo-1:0;break}}return{oldStart:r,oldCount:o,newStart:s,newCount:i,lines:a}}function po(e){return e?e.length<40?e:Y(e):"0000000"}function uf(e,t,n,r,o,s){let{path:i,oldMode:a,newMode:c}=t;e.push(`diff --git a/${i} b/${n}`),s?(e.push(`similarity index ${t.similarity??100}%`),e.push(`rename from ${i}`),e.push(`rename to ${n}`)):r?e.push(`new file mode ${c||"100644"}`):o?e.push(`deleted file mode ${a||"100644"}`):a&&c&&a!==c&&(e.push(`old mode ${a}`),e.push(`new mode ${c}`))}function jm(e,t,n){let{path:r,oldContent:o,newContent:s,oldMode:i,oldHash:a,newHash:c}=e,f=e.renameTo!==void 0,l=e.renameTo??r,d=e.isNew??o==="",u=e.isDeleted??s==="";if(o===s&&!f)return"";let m=[];if(uf(m,e,l,d,u,f),o!==s){if(a||c){let h=po(a),p=po(c);d||u||f?m.push(`index ${h}..${p}`):m.push(`index ${h}..${p} ${i||"100644"}`)}t&&n?m.push(`Binary files a/${r} and b/${l} differ`):d?m.push(`Binary files /dev/null and b/${l} differ`):u?m.push(`Binary files a/${r} and /dev/null differ`):m.push(`Binary files a/${r} and b/${l} differ`)}return`${m.join(`
|
|
194
194
|
`)}
|
|
195
|
-
`}function
|
|
195
|
+
`}function Pt(e){let{path:t,oldContent:n,newContent:r,oldMode:o,newMode:s,oldHash:i,newHash:a}=e,c=e.renameTo!==void 0,f=e.renameTo??t,l=$e(n),d=$e(r);if(l||d)return jm(e,l,d);let u=Lt(n),m=Lt(r),h=n.length>0&&n.endsWith(`
|
|
196
196
|
`),p=r.length>0&&r.endsWith(`
|
|
197
197
|
`),g="\0NOEOL",w=u;!h&&u.length>0&&(w=u.slice(),w[w.length-1]+=g);let y=m;!p&&m.length>0&&(y=m.slice(),y[y.length-1]+=g);let x=st(w,y);if(!h||!p)for(let D of x)D.line.includes(g)&&(D.line=D.line.replace(g,""));let b=Dm(x);if(b.length===0&&!c)return"";let k=e.isNew??n==="",E=e.isDeleted??r==="",R=[];if(uf(R,e,f,k,E,c),b.length===0)return`${R.join(`
|
|
198
198
|
`)}
|
|
199
|
-
`;if(i||a){let D=po(i),O=po(a);k||E?R.push(`index ${D}..${O}`):c?R.push(`index ${D}..${O} ${o||"100644"}`):o&&s&&o!==s?R.push(`index ${D}..${O}`):R.push(`index ${D}..${O} ${o||"100644"}`)}let
|
|
199
|
+
`;if(i||a){let D=po(i),O=po(a);k||E?R.push(`index ${D}..${O}`):c?R.push(`index ${D}..${O} ${o||"100644"}`):o&&s&&o!==s?R.push(`index ${D}..${O}`):R.push(`index ${D}..${O} ${o||"100644"}`)}let C=D=>D.includes(" ")?" ":"";k?(R.push("--- /dev/null"),R.push(`+++ b/${f}${C(f)}`)):E?(R.push(`--- a/${t}${C(t)}`),R.push("+++ /dev/null")):(R.push(`--- a/${t}${C(t)}`),R.push(`+++ b/${f}${C(f)}`));let P=u.length,v=m.length;for(let D of b){let O=D.oldCount===1?`${D.oldStart}`:`${D.oldStart},${D.oldCount}`,H=D.newCount===1?`${D.newStart}`:`${D.newStart},${D.newCount}`,G="";for(let N=D.oldStart-2;N>=0;N--){let B=u[N];if(B&&/^[a-zA-Z$_]/.test(B)){G=` ${B.trimEnd().slice(0,79)}`;break}}R.push(`@@ -${O} +${H} @@${G}`);let A=D.oldStart,S=D.newStart;for(let N of D.lines)switch(N.type){case"context":R.push(` ${N.content}`),(!h&&A===P||!p&&S===v)&&R.push("\"),A++,S++;break;case"delete":R.push(`-${N.content}`),!h&&A===P&&R.push("\"),A++;break;case"insert":R.push(`+${N.content}`),!p&&S===v&&R.push("\"),S++;break}}return`${R.join(`
|
|
200
200
|
`)}
|
|
201
|
-
`}ie();ve();async function _n(e,t,n){return(await ce(e,t)).get(n)?.hash??null}async function mf(e,t,n,r){let o=await We(e,t,n);if(!o.find(c=>c.status==="added"&&c.path===r))return null;let{renames:i}=await nt(e,o);return i.find(c=>c.newPath===r)?.oldPath??null}async function Gm(e,t,n,r,o,s){let i=await _n(e,(await j(e,t)).tree,n);if(!i){let p=new Map,g=await j(e,t);for(let w of r)p.set(w.finalIdx,Nn(t,n,w.currentLine,s+w.finalIdx,o[w.finalIdx],g,!1,void 0));return p}let a=await oe(e,i),c=Lt(a),f=new Array(o.length),l=[...r],d=t,u=n,m=c;for(;l.length>0;){let p=await j(e,d);if(p.parents.length===0){for(let
|
|
201
|
+
`}ie();ve();async function _n(e,t,n){return(await ce(e,t)).get(n)?.hash??null}async function mf(e,t,n,r){let o=await We(e,t,n);if(!o.find(c=>c.status==="added"&&c.path===r))return null;let{renames:i}=await nt(e,o);return i.find(c=>c.newPath===r)?.oldPath??null}async function Gm(e,t,n,r,o,s){let i=await _n(e,(await j(e,t)).tree,n);if(!i){let p=new Map,g=await j(e,t);for(let w of r)p.set(w.finalIdx,Nn(t,n,w.currentLine,s+w.finalIdx,o[w.finalIdx],g,!1,void 0));return p}let a=await oe(e,i),c=Lt(a),f=new Array(o.length),l=[...r],d=t,u=n,m=c;for(;l.length>0;){let p=await j(e,d);if(p.parents.length===0){for(let P of l)f[P.finalIdx]=Nn(d,u,P.currentLine,s+P.finalIdx,o[P.finalIdx],p,!0,void 0);break}let g=await _n(e,p.tree,u),w=null,y=[];for(let P of p.parents){let v=await j(e,P),D=u,O=await _n(e,v.tree,D);if(!O){let H=await mf(e,v.tree,p.tree,u);H&&(D=H,O=await _n(e,v.tree,D))}if(O&&(y.push({hash:P,path:D,blobHash:O}),O===g)){w={hash:P,path:D};break}}if(w){d=w.hash,u=w.path;continue}if(y.length===0){for(let P of l)f[P.finalIdx]=Nn(d,u,P.currentLine,s+P.finalIdx,o[P.finalIdx],p,!1,void 0);break}let x=y[0],b=await oe(e,x.blobHash),k=Lt(b),E=st(k,m),R=new Map;for(let P of E)P.type==="keep"&&R.set(P.newLineNo,P.oldLineNo);let C=[];for(let P of l){let v=R.get(P.currentLine);v!==void 0?C.push({finalIdx:P.finalIdx,currentLine:v}):f[P.finalIdx]=Nn(d,u,P.currentLine,s+P.finalIdx,o[P.finalIdx],p,!1,{hash:x.hash,path:x.path})}l=C,d=x.hash,u=x.path,m=k}let h=new Map;for(let p of r)f[p.finalIdx]&&h.set(p.finalIdx,f[p.finalIdx]);return h}async function hf(e,t,n,r){let o=await j(e,t),s=await _n(e,o.tree,n);if(!s)throw new Error(`no such path '${n}' in ${t.slice(0,7)}`);let i=await oe(e,s),a=Lt(i),c=r?.startLine??1,f=r?.endLine??a.length,l=a.slice(c-1,f),d=new Array(l.length),u=l.map((g,w)=>({finalIdx:w,currentLine:c+w})),m=t,h=n,p=a;for(;u.length>0;){let g=await j(e,m);if(g.parents.length===0){for(let R of u)d[R.finalIdx]=Nn(m,h,R.currentLine,c+R.finalIdx,l[R.finalIdx],g,!0,void 0);break}let w=await _n(e,g.tree,h),y=[],x=null;for(let R of g.parents){let C=await j(e,R),P=h,v=await _n(e,C.tree,P);if(!v){let D=await mf(e,C.tree,g.tree,h);D&&(P=D,v=await _n(e,C.tree,P))}if(v){let D={hash:R,path:P,blobHash:v};if(y.push(D),v===w){x=D;break}}}if(x){m=x.hash,h=x.path;continue}if(y.length===0){for(let R of u)d[R.finalIdx]=Nn(m,h,R.currentLine,c+R.finalIdx,l[R.finalIdx],g,!1,void 0);break}if(y.length===1){let R=y[0],C=await oe(e,R.blobHash),P=Lt(C),v=st(P,p),D=new Map;for(let H of v)H.type==="keep"&&D.set(H.newLineNo,H.oldLineNo);let O=[];for(let H of u){let G=D.get(H.currentLine);G!==void 0?O.push({finalIdx:H.finalIdx,currentLine:G}):d[H.finalIdx]=Nn(m,h,H.currentLine,c+H.finalIdx,l[H.finalIdx],g,!1,{hash:R.hash,path:R.path})}u=O,m=R.hash,h=R.path,p=P;continue}let b=[];for(let R of y){let C=await oe(e,R.blobHash),P=Lt(C),v=st(P,p),D=new Map;for(let O of v)O.type==="keep"&&D.set(O.newLineNo,O.oldLineNo);b.push({info:R,newToOld:D})}let k=new Map;for(let R of u){let C=!1;for(let P=0;P<b.length;P++){let v=b[P],D=v.newToOld.get(R.currentLine);if(D!==void 0){let O=k.get(P);O||(O={info:v.info,lines:[]},k.set(P,O)),O.lines.push({finalIdx:R.finalIdx,currentLine:D}),C=!0;break}}C||(d[R.finalIdx]=Nn(m,h,R.currentLine,c+R.finalIdx,l[R.finalIdx],g,!1,{hash:y[0].hash,path:y[0].path}))}let E=k.get(0);for(let[R,C]of k){if(R===0)continue;let P=await Gm(e,C.info.hash,C.info.path,C.lines,l,c);for(let[v,D]of P)d[v]=D}if(E&&E.lines.length>0){u=E.lines,m=E.info.hash,h=E.info.path;let R=await oe(e,E.info.blobHash);p=Lt(R)}else break}return d}function Nn(e,t,n,r,o,s,i,a){return{hash:e,origPath:t,origLine:n,finalLine:r,content:o,author:s.author,committer:s.committer,summary:s.message.split(`
|
|
202
202
|
`)[0],boundary:i,previous:a}}se();ie();ve();ie();le();function Lm(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}function _m(e,t){let n=Lm(t),r=new Date((e+n*60)*1e3),o=r.getUTCFullYear(),s=(r.getUTCMonth()+1).toString().padStart(2,"0"),i=r.getUTCDate().toString().padStart(2,"0"),a=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),f=r.getUTCSeconds().toString().padStart(2,"0");return`${o}-${s}-${i} ${a}:${c}:${f} ${t}`}function Nm(e,t,n,r,o){if(e.length===0)return"";let s=Math.max(...e.map(d=>d.finalLine)),i=String(s).length,a=e.some(d=>d.origPath!==t),c=0;if(!o)for(let d of e){let u=r?`<${d.author.email}>`:d.author.name;u.length>c&&(c=u.length)}let f=0;if(a)for(let d of e)d.origPath.length>f&&(f=d.origPath.length);let l=[];for(let d of e){let u;n?u=d.boundary?`^${d.hash.slice(0,39)}`:d.hash:u=d.boundary?`^${d.hash.slice(0,7)}`:d.hash.slice(0,8);let m=a?` ${d.origPath.padEnd(f)}`:"";if(o)l.push(`${u}${m} ${String(d.finalLine).padStart(i)}) ${d.content}`);else{let h=r?`<${d.author.email}>`:d.author.name,p=_m(d.author.timestamp,d.author.timezone);l.push(`${u}${m} (${h.padEnd(c)} ${p} ${String(d.finalLine).padStart(i)}) ${d.content}`)}}return`${l.join(`
|
|
203
203
|
`)}
|
|
204
204
|
`}function Fm(e,t){let n=new Set,r=[];for(let o of e){let s=!n.has(o.hash);n.add(o.hash),r.push(`${o.hash} ${o.origLine} ${o.finalLine} 1`),(s||t)&&(r.push(`author ${o.author.name}`),r.push(`author-mail <${o.author.email}>`),r.push(`author-time ${o.author.timestamp}`),r.push(`author-tz ${o.author.timezone}`),r.push(`committer ${o.committer.name}`),r.push(`committer-mail <${o.committer.email}>`),r.push(`committer-time ${o.committer.timestamp}`),r.push(`committer-tz ${o.committer.timezone}`),r.push(`summary ${o.summary}`),o.boundary&&r.push("boundary"),o.previous&&r.push(`previous ${o.previous.hash} ${o.previous.path}`),r.push(`filename ${o.origPath}`)),r.push(` ${o.content}`)}return`${r.join(`
|
|
205
205
|
`)}
|
|
206
|
-
`}function Um(e,t,n){if(e.startsWith("/"))return ft(n,e);let r=ft(n,t);return r===""||r==="."?e:`${r}/${e}`}function pf(e,t){e.command("blame",{description:"Show what revision and author last modified each line of a file",args:[q.string().name("args").variadic().optional()],options:{lineRange:J.string().alias("L").describe("Annotate only the given line range (<start>,<end>)"),long
|
|
206
|
+
`}function Um(e,t,n){if(e.startsWith("/"))return ft(n,e);let r=ft(n,t);return r===""||r==="."?e:`${r}/${e}`}function pf(e,t){e.command("blame",{description:"Show what revision and author last modified each line of a file",args:[q.string().name("args").variadic().optional()],options:{lineRange:J.string().alias("L").describe("Annotate only the given line range (<start>,<end>)"),long:$().alias("l").describe("Show long revision"),showEmail:$().alias("e").describe("Show author email instead of name"),suppress:$().alias("s").describe("Suppress author name and date"),porcelain:$().alias("p").describe("Show in machine-readable format"),linePorcelain:$().describe("Show porcelain format with full headers for each line")},handler:async(n,r,o)=>{let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s;if(!i.workTree)return I("this operation must be run in a work tree");let a=await Ze(i);if(M(a))return a;let c=n.args??[],f=o.passthrough??[],l=null,d=null;if(f.length>0?(d=f[f.length-1],c.length>0&&(l=c[0])):c.length===2?(l=c[0],d=c[1]):c.length===1&&(d=c[0]),!d)return I("no file specified");let u=Um(d,r.cwd,i.workTree),m;if(l){let E=await vt(i,l);if(M(E))return E;m=await _e(i,E)}else m=a;let h=await j(i,m),p=await ce(i,h.tree);if(!p.has(u))return I(`no such path ${u} in ${l??"HEAD"}`);let g=p.get(u).hash,w=await oe(i,g);if($e(w))return I(`cannot blame binary file '${u}'`);let y,x;if(n.lineRange){let E=n.lineRange,R=E.match(/^(\d+),(\d+)$/);if(R)y=parseInt(R[1],10),x=parseInt(R[2],10);else return I(`invalid -L range: '${E}'`)}let b;try{b=await hf(i,m,u,{startLine:y,endLine:x})}catch(E){let R=E instanceof Error?E.message:String(E);return I(R)}let k;return n.porcelain||n.linePorcelain?k=Fm(b,!!n.linePorcelain):k=Nm(b,u,!!n.long,!!n.showEmail,!!n.suppress),{stdout:k,stderr:"",exitCode:0}}})}se();Ne();Pn();se();var Bm=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],Wm=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function _t(e,t){let n=qm(t),r=new Date((e+n*60)*1e3),o=Bm[r.getUTCDay()],s=Wm[r.getUTCMonth()],i=r.getUTCDate(),a=r.getUTCHours().toString().padStart(2,"0"),c=r.getUTCMinutes().toString().padStart(2,"0"),f=r.getUTCSeconds().toString().padStart(2,"0"),l=r.getUTCFullYear();return`${o} ${s} ${i} ${a}:${c}:${f} ${l} ${t}`}function Gi(e){let t=e.trim();if(/^\d+$/.test(t))return parseInt(t,10);let n=Date.parse(t);return Number.isNaN(n)?null:Math.floor(n/1e3)}function qm(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}ie();ve();var go=new TextDecoder;function gf(e){if(e.length===0)return 0;let t=0;for(let n=0;n<e.length;n++)e[n]===`
|
|
207
207
|
`&&t++;return e[e.length-1]!==`
|
|
208
|
-
`&&t++,t}function Fn(e,t,n){if(e===0)return"";let r=[];return r.push(`${e} file${e!==1?"s":""} changed`),(t>0||n===0)&&r.push(`${t} insertion${t!==1?"s":""}(+)`),(n>0||t===0)&&r.push(`${n} deletion${n!==1?"s":""}(-)`),` ${r.join(", ")}`}async function Un(e,t,n){let r=[],o=[],s=[];for(let a of t)if(a.status==="added"&&a.newHash&&a.newMode){let c=await kt(e,a.newHash);On(c)?r.push({path:a.path,sortKey:a.path,insertions:0,deletions:0,isBinary:!0,oldSize:0,newSize:c.byteLength}):r.push({path:a.path,sortKey:a.path,insertions:gf(go.decode(c)),deletions:0}),o.push({path:a.path,mode:a.newMode})}else if(a.status==="deleted"&&a.oldHash&&a.oldMode){let c=await kt(e,a.oldHash);On(c)?r.push({path:a.path,sortKey:a.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:0}):r.push({path:a.path,sortKey:a.path,insertions:0,deletions:gf(go.decode(c))}),s.push({path:a.path,mode:a.oldMode})}else if(a.status==="modified"&&a.oldHash&&a.newHash){let c=await kt(e,a.oldHash),f=await kt(e,a.newHash);if(On(c)||On(f))r.push({path:a.path,sortKey:a.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:f.byteLength});else{let l=
|
|
208
|
+
`&&t++,t}function Fn(e,t,n){if(e===0)return"";let r=[];return r.push(`${e} file${e!==1?"s":""} changed`),(t>0||n===0)&&r.push(`${t} insertion${t!==1?"s":""}(+)`),(n>0||t===0)&&r.push(`${n} deletion${n!==1?"s":""}(-)`),` ${r.join(", ")}`}async function Un(e,t,n){let r=[],o=[],s=[];for(let a of t)if(a.status==="added"&&a.newHash&&a.newMode){let c=await kt(e,a.newHash);On(c)?r.push({path:a.path,sortKey:a.path,insertions:0,deletions:0,isBinary:!0,oldSize:0,newSize:c.byteLength}):r.push({path:a.path,sortKey:a.path,insertions:gf(go.decode(c)),deletions:0}),o.push({path:a.path,mode:a.newMode})}else if(a.status==="deleted"&&a.oldHash&&a.oldMode){let c=await kt(e,a.oldHash);On(c)?r.push({path:a.path,sortKey:a.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:0}):r.push({path:a.path,sortKey:a.path,insertions:0,deletions:gf(go.decode(c))}),s.push({path:a.path,mode:a.oldMode})}else if(a.status==="modified"&&a.oldHash&&a.newHash){let c=await kt(e,a.oldHash),f=await kt(e,a.newHash);if(On(c)||On(f))r.push({path:a.path,sortKey:a.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:f.byteLength});else{let l=bt(go.decode(c)),d=bt(go.decode(f)),u=st(l,d),m=0,h=0;for(let p of u)p.type==="insert"?m++:p.type==="delete"&&h++;r.push({path:a.path,sortKey:a.path,insertions:m,deletions:h})}a.oldMode&&a.newMode&&a.oldMode!==a.newMode&&(s.push({path:a.path,mode:a.oldMode}),o.push({path:a.path,mode:a.newMode}))}for(let a of n){let c=cn(a.oldPath,a.newPath),f=0,l=0;if(a.similarity<100&&a.oldHash&&a.newHash){let d=await oe(e,a.oldHash),u=await oe(e,a.newHash);if(!$e(d)&&!$e(u)){let m=bt(d),h=bt(u),p=st(m,h);for(let g of p)g.type==="insert"?f++:g.type==="delete"&&l++}}r.push({path:c,sortKey:a.newPath,insertions:f,deletions:l})}let i=[];for(let{path:a,mode:c}of o)i.push({sortKey:a,text:` create mode ${c} ${a}`});for(let{path:a,mode:c}of s)i.push({sortKey:a,text:` delete mode ${c} ${a}`});for(let a of n){let c=cn(a.oldPath,a.newPath);i.push({sortKey:a.newPath,text:` rename ${c} (${a.similarity}%)`})}return i.sort((a,c)=>a.sortKey<c.sortKey?-1:a.sortKey>c.sortKey?1:0),{fileStats:r,modeLines:i.map(a=>a.text)}}async function fn(e,t,n,r,o,s=!1,i=!1){let a=[];if((r.name!==o.name||r.email!==o.email)&&a.push(` Author: ${r.name} <${r.email}>`),s&&a.push(` Date: ${_t(r.timestamp,r.timezone)}`),i)return a.join(`
|
|
209
209
|
`)+(a.length>0?`
|
|
210
210
|
`:"");let c=await We(e,t,n),{remaining:f,renames:l}=await nt(e,c),{fileStats:d,modeLines:u}=await Un(e,f,l),m=0,h=0;for(let g of d)m+=g.insertions,h+=g.deletions;let p=Fn(d.length,m,h);p&&a.push(p);for(let g of u)a.push(g);return a.join(`
|
|
211
211
|
`)+(a.length>0?`
|
|
212
|
-
`:"")}var zm=80;function Km(e,t){if(e.length<=t)return e;let n=e;for(;n.length+4>t;){let o=n.indexOf("/");if(o===-1)break;n=n.slice(o+1)}let r=`.../${n}`;return r.length<=t?r:`...${e.slice(e.length-(t-3))}`}function cr(e,t=zm){if(e.length===0)return"";let n=e.filter(p=>!p.isUnmerged),r=n.length>0?Math.max(...n.map(p=>p.insertions+p.deletions)):0,o=e.some(p=>p.isBinary),s=r>0?String(r).length:1;o&&s<3&&(s=3);let i=Math.max(...e.map(p=>p.path.length)),a=r,c=i;if(c+s+6+a>t){let p=Math.floor(t*3/8)-s-6;a>p&&(a=Math.max(p,6));let g=t-s-6-a;c>g?c=g:a=t-s-6-c}for(let p of e)p.path=Km(p.path,c);let f=c,l=[],d=0,u=0,m=0;for(let p of e){let g=p.path.padEnd(f);if(p.isUnmerged){l.push(` ${g} | Unmerged`);continue}if(m++,d+=p.insertions,u+=p.deletions,p.isBinary){let
|
|
212
|
+
`:"")}var zm=80;function Km(e,t){if(e.length<=t)return e;let n=e;for(;n.length+4>t;){let o=n.indexOf("/");if(o===-1)break;n=n.slice(o+1)}let r=`.../${n}`;return r.length<=t?r:`...${e.slice(e.length-(t-3))}`}function cr(e,t=zm){if(e.length===0)return"";let n=e.filter(p=>!p.isUnmerged),r=n.length>0?Math.max(...n.map(p=>p.insertions+p.deletions)):0,o=e.some(p=>p.isBinary),s=r>0?String(r).length:1;o&&s<3&&(s=3);let i=Math.max(...e.map(p=>p.path.length)),a=r,c=i;if(c+s+6+a>t){let p=Math.floor(t*3/8)-s-6;a>p&&(a=Math.max(p,6));let g=t-s-6-a;c>g?c=g:a=t-s-6-c}for(let p of e)p.path=Km(p.path,c);let f=c,l=[],d=0,u=0,m=0;for(let p of e){let g=p.path.padEnd(f);if(p.isUnmerged){l.push(` ${g} | Unmerged`);continue}if(m++,d+=p.insertions,u+=p.deletions,p.isBinary){let C=`${"Bin".padStart(s)} ${p.oldSize??0} -> ${p.newSize??0} bytes`;l.push(` ${g} | ${C}`);continue}let w=p.insertions+p.deletions,y=String(w).padStart(s),x,b;if(r<=a)x=p.insertions,b=p.deletions;else{let R=v=>v===0?0:1+Math.floor(v*(a-1)/r),C=R(w),P=C<2&&p.insertions>0&&p.deletions>0?2:C;p.insertions<p.deletions?(x=R(p.insertions),b=P-x):(b=R(p.deletions),x=P-b)}let k="+".repeat(x)+"-".repeat(b),E=k?` ${k}`:"";l.push(` ${g} | ${y}${E}`)}let h=Fn(m,d,u);return h?l.push(h):e.some(p=>p.isUnmerged)&&l.push(" 0 files changed"),`${l.join(`
|
|
213
213
|
`)}
|
|
214
214
|
`}async function Bn(e,t,n){let r=await We(e,t,n),{remaining:o,renames:s}=await nt(e,r);if(o.length===0&&s.length===0)return"";let{fileStats:i,modeLines:a}=await Un(e,o,s);i.sort((f,l)=>f.sortKey<l.sortKey?-1:f.sortKey>l.sortKey?1:0);let c=cr(i);for(let f of a)c+=`${f}
|
|
215
|
-
`;return c}Ne();
|
|
215
|
+
`;return c}Ne();Ce();ie();ue();sn();async function Vm(e,t){let n=new Set,r=[t],o=0;for(;o<r.length;){let s=r[o++];if(n.has(s))continue;n.add(s);let i;try{i=await j(e,s)}catch{continue}for(let a of i.parents)n.has(a)||r.push(a)}return n}async function En(e,t,n){if(t===n)return!0;let r=new Set,o=[n],s=0;for(;s<o.length;){let i=o[s++];if(i===t)return!0;if(r.has(i))continue;r.add(i);let a;try{a=await j(e,i)}catch{continue}for(let c of a.parents)r.has(c)||o.push(c)}return!1}async function Nt(e,t,n){if(t===n)return[t];let r=await Vm(e,t),o=[],s=new Set,i=[n],a=0;for(;a<i.length;){let f=i[a++];if(s.has(f))continue;if(s.add(f),r.has(f)){o.push(f);continue}let l;try{l=await j(e,f)}catch{continue}for(let d of l.parents)s.has(d)||i.push(d)}if(o.length<=1)return o;let c=[];for(let f of o){let l=!1;for(let d of o)if(d!==f&&await En(e,f,d)){l=!0;break}l||c.push(f)}return c.length<=1?c:Ym(e,t,n,c)}async function Ym(e,t,n,r){let o=new Set(r),s=new Set,i=[],a=new Map,c=new Map,f=0,l=[{hash:t,mask:1,seq:f++},{hash:n,mask:2,seq:f++}];async function d(u){let m=c.get(u);if(m!==void 0)return m;let h=(await j(e,u)).committer.timestamp;return c.set(u,h),h}for(;l.length>0;){let u=0,m=await d(l[0].hash);for(let y=1;y<l.length;y++){let x=l[y],b=await d(x.hash),k=l[u];(b>m||b===m&&x.seq<k.seq)&&(u=y,m=b)}let h=l.splice(u,1)[0],p=a.get(h.hash)??0,g=p|h.mask;if(g===p)continue;if(a.set(h.hash,g),g===3&&o.has(h.hash)&&!s.has(h.hash)&&(i.push(h.hash),s.add(h.hash),s.size===o.size))break;let w=await j(e,h.hash);for(let y of w.parents)l.push({hash:y,mask:g,seq:f++})}for(let u of r)s.has(u)||i.push(u);return i}async function fr(e,t,n){let r=await ke(e,"init.defaultBranch")??"main";return n===r?`Merge branch '${t}'
|
|
216
216
|
`:`Merge branch '${t}' into ${n}
|
|
217
217
|
`}async function wo(e,t,n){let r=await j(e,t),o=await j(e,n),s=Y(t),i=Y(n),a=`Updating ${s}..${i}
|
|
218
|
-
`;if(e.workTree){let f=await K(e),l=await vc(e,r.tree,o.tree,f);if(!l.success){let d=l.errorOutput;return{stdout:a+d.stdout,stderr:d.stderr,exitCode:d.exitCode}}await ae(e,{version:2,entries:l.newEntries}),await
|
|
219
|
-
${c}`,stderr:"",exitCode:0}}ie();Fe();ue();function wf(e,t){e.command("branch",{description:"List, create, or delete branches",args:[q.string().name("name").describe("Branch name").optional(),q.string().name("newName").describe("New branch name (for -m) or start-point (for create)").optional()],options:{delete
|
|
218
|
+
`;if(e.workTree){let f=await K(e),l=await vc(e,r.tree,o.tree,f);if(!l.success){let d=l.errorOutput;return{stdout:a+d.stdout,stderr:d.stderr,exitCode:d.exitCode}}await ae(e,{version:2,entries:l.newEntries}),await Me(e,l.worktreeOps)}await $n(e,n);let c=await Bn(e,r.tree,o.tree);return{stdout:`${a}Fast-forward
|
|
219
|
+
${c}`,stderr:"",exitCode:0}}ie();Fe();ue();function wf(e,t){e.command("branch",{description:"List, create, or delete branches",args:[q.string().name("name").describe("Branch name").optional(),q.string().name("newName").describe("New branch name (for -m) or start-point (for create)").optional()],options:{delete:$().alias("d").describe("Delete a branch"),forceDelete:$().alias("D").describe("Force delete a branch"),move:$().alias("m").describe("Rename a branch"),forceMove:$().alias("M").describe("Force rename a branch"),remotes:$().alias("r").describe("List remote-tracking branches"),all:$().alias("a").describe("List all branches"),setUpstreamTo:J.string().alias("u").describe("Set upstream tracking branch"),verbose:$().alias("v").count().describe("Show hash and subject")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=await Q(s),a=i?.type==="symbolic"?Re(i.target):null,c=!!n.forceMove;if(n.move||c){let w,y;if(n.newName)w=n.name,y=n.newName;else if(n.name){if(!a)return I("not on any branch");w=a,y=n.name}else return I("branch name required");let x=`refs/heads/${w}`,b=`refs/heads/${y}`,k=await F(s,x);if(!k)return I(`no branch named '${w}'`);if(await Gt(s)&&(await gt(s))?.headName===x)return I(`branch ${x} is being rebased at ${s.workTree}`);let E=await F(s,b);if(E&&!c)return I(`a branch named '${y}' already exists`);E&&await de(s,b);let R=await Je(s,x);await X(s,b,k),await de(s,x),w===a&&await ze(s,"HEAD",b),R.length>0&&await Tn(s,b,R);let C=`Branch: renamed ${x} to ${b}`;if(await re(s,r.env,b,k,k,C),w===a){let D=await Jt(s,r.env);await Ke(s,"HEAD",{oldHash:k,newHash:te,...D,message:C}),await Ke(s,"HEAD",{oldHash:te,newHash:k,...D,message:C})}let P=await he(s),v=`branch "${w}"`;return P[v]&&(P[`branch "${y}"`]=P[v],delete P[v],await Ye(s,P)),{stdout:"",stderr:"",exitCode:0}}let f=n.forceDelete;if(n.delete||f){if(!n.name)return I("branch name required");let w=n.name===a;if(!w&&!a&&await Gt(s)&&(await gt(s))?.headName===`refs/heads/${n.name}`&&(w=!0),w)return L(`error: cannot delete branch '${n.name}' used by worktree at '${s.workTree}'
|
|
220
220
|
`);let y=`refs/heads/${n.name}`,x=await F(s,y);if(!x)return L(`error: branch '${n.name}' not found
|
|
221
|
-
`);let b="";if(!f){let k=await Z(s),R=(await he(s))[`branch "${n.name}"`],
|
|
221
|
+
`);let b="";if(!f){let k=await Z(s),R=(await he(s))[`branch "${n.name}"`],C=R?.remote,P=R?.merge,v=null,D=null;if(C&&P&&(v=P.replace(/^refs\/heads\//,`refs/remotes/${C}/`),D=await F(s,v)),D&&v){if(!(x===D||await En(s,x,D))){let A=k!=null&&(x===k||await En(s,x,k))?`warning: not deleting branch '${n.name}' that is not yet merged to
|
|
222
222
|
'${v}', even though it is merged to HEAD
|
|
223
223
|
`:"";return L(`${A}error: the branch '${n.name}' is not fully merged
|
|
224
224
|
hint: If you are sure you want to delete it, run 'git branch -D ${n.name}'
|
|
@@ -229,24 +229,24 @@ hint: Disable this message with "git config set advice.forceDeleteBranch false"
|
|
|
229
229
|
hint: If you are sure you want to delete it, run 'git branch -D ${n.name}'
|
|
230
230
|
hint: Disable this message with "git config set advice.forceDeleteBranch false"
|
|
231
231
|
`)}return await de(s,y),{stdout:`Deleted branch ${n.name} (was ${Y(x)}).
|
|
232
|
-
`,stderr:b,exitCode:0}}if(n.setUpstreamTo){let w=n.setUpstreamTo,y=n.name||a;if(!y)return I("could not set upstream of HEAD when it does not point to any branch.");if(!await F(s,`refs/heads/${y}`))return I(`branch '${y}' does not exist`);let b=w.indexOf("/");if(b<0)return I(`the requested upstream branch '${w}' does not exist`);let k=w.slice(0,b),E=w.slice(b+1);if(!await F(s,`refs/remotes/${w}`))return I(`the requested upstream branch '${w}' does not exist`);let
|
|
233
|
-
`,exitCode:0}}if(n.name&&!n.remotes&&!n.all){let w=n.newName,y;if(w){let R=await He(s,w,`not a valid object name: '${w}'`);if(M(R))return R;y=R.hash}else if(y=await Z(s),!y)return I("Not a valid object name: 'HEAD'.");let x=`refs/heads/${n.name}`;if(await F(s,x))return I(`a branch named '${n.name}' already exists`);await X(s,x,y);let k=w??"HEAD";await re(s,r.env,x,null,y,`branch: Created from ${k}`);let E="";return w&&(E=await co(s,n.name,w)),{stdout:"",stderr:E,exitCode:0}}let l=n.verbose||0,d=!n.remotes||n.all,u=n.remotes||n.all,m=[];if(d&&!a){let w=await Z(s);if(w){let y=await Gt(s),x;if(y){let b=await
|
|
232
|
+
`,stderr:b,exitCode:0}}if(n.setUpstreamTo){let w=n.setUpstreamTo,y=n.name||a;if(!y)return I("could not set upstream of HEAD when it does not point to any branch.");if(!await F(s,`refs/heads/${y}`))return I(`branch '${y}' does not exist`);let b=w.indexOf("/");if(b<0)return I(`the requested upstream branch '${w}' does not exist`);let k=w.slice(0,b),E=w.slice(b+1);if(!await F(s,`refs/remotes/${w}`))return I(`the requested upstream branch '${w}' does not exist`);let C=await he(s),P=`branch "${y}"`;return C[P]||(C[P]={}),C[P].remote=k,C[P].merge=`refs/heads/${E}`,await Ye(s,C),{stdout:"",stderr:`branch '${y}' set up to track '${w}'.
|
|
233
|
+
`,exitCode:0}}if(n.name&&!n.remotes&&!n.all){let w=n.newName,y;if(w){let R=await He(s,w,`not a valid object name: '${w}'`);if(M(R))return R;y=R.hash}else if(y=await Z(s),!y)return I("Not a valid object name: 'HEAD'.");let x=`refs/heads/${n.name}`;if(await F(s,x))return I(`a branch named '${n.name}' already exists`);await X(s,x,y);let k=w??"HEAD";await re(s,r.env,x,null,y,`branch: Created from ${k}`);let E="";return w&&(E=await co(s,n.name,w)),{stdout:"",stderr:E,exitCode:0}}let l=n.verbose||0,d=!n.remotes||n.all,u=n.remotes||n.all,m=[];if(d&&!a){let w=await Z(s);if(w){let y=await Gt(s),x;if(y){let b=await gt(s);if(b?.headName){let k=Re(b.headName);if(k==="detached HEAD"){let E=await ns(s);x=`(no branch, rebasing detached HEAD ${E?Y(E):"(null)"})`}else x=`(no branch, rebasing ${k})`}else x="(no branch)"}else{let b=await ns(s);b?x=`(HEAD detached ${w===b?"at":"from"} ${Y(b)})`:x="(no branch)"}m.push({displayName:x,hash:w,isCurrent:!0,branchName:null})}}if(d){let w=await ge(s,"refs/heads");for(let y of w){let x=Re(y.name);m.push({displayName:x,hash:y.hash,isCurrent:x===a,branchName:x})}}if(u){let w=await ge(s,"refs/remotes");for(let y of w){let x=y.name.replace("refs/remotes/","");m.push({displayName:n.all?`remotes/${x}`:x,hash:y.hash,isCurrent:!1,branchName:null})}}if(m.length===0)return{stdout:"",stderr:"",exitCode:0};if(l===0)return{stdout:`${m.map(y=>y.isCurrent?`* ${y.displayName}`:` ${y.displayName}`).join(`
|
|
234
234
|
`)}
|
|
235
|
-
`,stderr:"",exitCode:0};let h=l>=1?await he(s):null,p=Math.max(...m.map(w=>w.displayName.length)),g=[];for(let w of m){let y=w.isCurrent?"* ":" ",x=w.displayName.padEnd(p),b=Y(w.hash),k="";try{let R=await j(s,w.hash);k=fe(R.message)}catch{}let E="";if(h&&w.branchName){let R=await bn(s,h,w.branchName);if(R){let
|
|
235
|
+
`,stderr:"",exitCode:0};let h=l>=1?await he(s):null,p=Math.max(...m.map(w=>w.displayName.length)),g=[];for(let w of m){let y=w.isCurrent?"* ":" ",x=w.displayName.padEnd(p),b=Y(w.hash),k="";try{let R=await j(s,w.hash);k=fe(R.message)}catch{}let E="";if(h&&w.branchName){let R=await bn(s,h,w.branchName);if(R){let C=Zc(R,l>=2);C&&(E=` ${C}`)}}g.push(`${y}${x} ${b}${E} ${k}`)}return{stdout:`${g.join(`
|
|
236
236
|
`)}
|
|
237
|
-
`,stderr:"",exitCode:0}}})}function ee(e){return e!=null&&typeof e=="object"&&"reject"in e&&e.reject===!0}var Xm=["preCommit","preMergeCommit","preCheckout","prePush","preFetch","preClone","prePull","preRebase","preReset","preClean","preRm","preCherryPick","preRevert","preStash","beforeCommand"],Zm=["commitMsg","mergeMsg"],Jm=["postCommit","postMerge","postCheckout","postPush","postFetch","postClone","postPull","postReset","postClean","postRm","postCherryPick","postRevert","postStash","afterCommand"],Qm=["onRefUpdate","onRefDelete","onObjectWrite"];function eh(...e){let t=e.filter(r=>r!=null);if(t.length===0)return{};if(t.length===1)return t[0];let n={};for(let r of Xm){let o=t.filter(s=>s[r]).map(s=>s[r]);o.length>0&&(n[r]=async s=>{for(let i of o){let a=await i(s);if(ee(a))return a}})}for(let r of Zm){let o=t.filter(s=>s[r]).map(s=>s[r]);o.length>0&&(n[r]=async s=>{for(let i of o){let a=await i(s);if(ee(a))return a}})}for(let r of Jm){let o=t.filter(s=>s[r]).map(s=>s[r]);o.length>0&&(n[r]=async s=>{for(let i of o)try{await i(s)}catch{}})}for(let r of Qm){let o=t.filter(s=>s[r]).map(s=>s[r]);o.length>0&&(n[r]=s=>{for(let i of o)try{i(s)}catch{}})}return n}se();Ne();
|
|
238
|
-
`)}})}async function th(e,t,n){let r=await so(e);return r?Ef(e,r.name,r.refName,r.hash,t,n):I("no previous branch")}async function nh(e,t,n,r){let o=`refs/heads/${t}`;if(await F(e,o))return I(`a branch named '${t}' already exists`);let i=await K(e),a=jn(i);if(a)return a;let c=await Z(e),f=null;c&&(f=(await j(e,c)).tree),await ze(e,"HEAD",o),await
|
|
239
|
-
${l}`,exitCode:0}}async function rh(e,t,n,r,o=!1){let s=await r?.hooks?.preCheckout?.({repo:e,target:t,mode:"create-branch"});if(ee(s))return L(s.message??"");let i=await Q(e),a=await Z(e),c=`refs/heads/${t}`,f=await F(e,c);if(f&&!o)return I(`a branch named '${t}' already exists`);if(o){let g=await K(e),w=jn(g);if(w)return w}a&&await X(e,c,a),await ze(e,"HEAD",c),await
|
|
237
|
+
`,stderr:"",exitCode:0}}})}function ee(e){return e!=null&&typeof e=="object"&&"reject"in e&&e.reject===!0}var Xm=["preCommit","preMergeCommit","preCheckout","prePush","preFetch","preClone","prePull","preRebase","preReset","preClean","preRm","preCherryPick","preRevert","preStash","beforeCommand"],Zm=["commitMsg","mergeMsg"],Jm=["postCommit","postMerge","postCheckout","postPush","postFetch","postClone","postPull","postReset","postClean","postRm","postCherryPick","postRevert","postStash","afterCommand"],Qm=["onRefUpdate","onRefDelete","onObjectWrite"];function eh(...e){let t=e.filter(r=>r!=null);if(t.length===0)return{};if(t.length===1)return t[0];let n={};for(let r of Xm){let o=t.filter(s=>s[r]).map(s=>s[r]);o.length>0&&(n[r]=async s=>{for(let i of o){let a=await i(s);if(ee(a))return a}})}for(let r of Zm){let o=t.filter(s=>s[r]).map(s=>s[r]);o.length>0&&(n[r]=async s=>{for(let i of o){let a=await i(s);if(ee(a))return a}})}for(let r of Jm){let o=t.filter(s=>s[r]).map(s=>s[r]);o.length>0&&(n[r]=async s=>{for(let i of o)try{await i(s)}catch{}})}for(let r of Qm){let o=t.filter(s=>s[r]).map(s=>s[r]);o.length>0&&(n[r]=s=>{for(let i of o)try{i(s)}catch{}})}return n}se();Ne();Ce();ie();Fe();ue();hn();tt();function yf(e,t){e.command("checkout",{description:"Switch branches or restore working tree files",args:[q.string().name("target").describe("Branch name or path to checkout").optional()],options:{branch:$().alias("b").describe("Create and switch to a new branch"),forceBranch:$().alias("B").describe("Create/reset and switch to a new branch"),detach:$().alias("d").describe("Detach HEAD at named commit"),orphan:$().describe("Create a new orphan branch"),ours:$().describe("Checkout our version for unmerged files"),theirs:$().describe("Checkout their version for unmerged files")},handler:async(n,r,o)=>{let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s,a=n.target;if(n.ours&&n.theirs)return I("--ours and --theirs are incompatible");if(n.detach&&(n.branch||n.forceBranch||n.orphan))return I("'--detach' cannot be used with '-b/-B/--orphan'");if(o.passthrough.length>0){if(n.detach)return I(`git checkout: --detach does not take a path argument '${o.passthrough[0]}'`);let u=mt(i,r.cwd),m=o.passthrough,h=null;if(a){if(n.ours||n.theirs)return I("cannot specify both a revision and --ours/--theirs");let p=await He(i,a,`invalid reference: ${a}`);if(M(p))return p;h=p.commit.tree}return n.ours||n.theirs?io(i,m,u,n.theirs?3:2):oo(i,m,u,h)}if(n.orphan)return n.branch?I("--orphan and -b are incompatible"):n.ours||n.theirs?I("--orphan and --ours/--theirs are incompatible"):a?nh(i,a,r.env,t):I("you must specify a branch to checkout");if(n.detach){let u=a??"HEAD",m=await He(i,u,`invalid reference: ${u}`);return M(m)?m:bf(i,u,m.hash,r.env,t)}if(!a)return I("you must specify a branch to checkout");if(n.branch||n.forceBranch)return rh(i,a,r.env,t,!!n.forceBranch);if(a==="-")return th(i,r.env,t);let c=`refs/heads/${a}`,f=await F(i,c);if(f)return Ef(i,a,c,f,r.env,t);let l=await fo(i,a);if(l)return sh(i,a,l.trackingRef,r.env,t);let d=await Be(i,a);if(d){let u=await _e(i,d);return bf(i,a,u,r.env,t)}if(i.workTree){let u=await K(i),m=Ts(u,a);if(m)return await ct(i,{path:m.path,hash:m.hash,mode:m.mode}),{stdout:"",stderr:"",exitCode:0}}return L(`error: pathspec '${a}' did not match any file(s) known to git
|
|
238
|
+
`)}})}async function th(e,t,n){let r=await so(e);return r?Ef(e,r.name,r.refName,r.hash,t,n):I("no previous branch")}async function nh(e,t,n,r){let o=`refs/heads/${t}`;if(await F(e,o))return I(`a branch named '${t}' already exists`);let i=await K(e),a=jn(i);if(a)return a;let c=await Z(e),f=null;c&&(f=(await j(e,c)).tree),await ze(e,"HEAD",o),await pt(e);let l=await yn(e);await r?.hooks?.postCheckout?.({repo:e,prevHead:c,newHead:te,isBranchCheckout:!0});let d="";return f&&(d=await ir(e,f,i)),{stdout:d,stderr:`Switched to a new branch '${t}'
|
|
239
|
+
${l}`,exitCode:0}}async function rh(e,t,n,r,o=!1){let s=await r?.hooks?.preCheckout?.({repo:e,target:t,mode:"create-branch"});if(ee(s))return L(s.message??"");let i=await Q(e),a=await Z(e),c=`refs/heads/${t}`,f=await F(e,c);if(f&&!o)return I(`a branch named '${t}' already exists`);if(o){let g=await K(e),w=jn(g);if(w)return w}a&&await X(e,c,a),await ze(e,"HEAD",c),await pt(e);let l=await yn(e),d=i?.type==="symbolic"?i.target.replace(/^refs\/heads\//,""):a??te;a&&(f?f!==a&&await re(e,n,c,f,a,"branch: Reset to HEAD"):await re(e,n,c,null,a,"branch: Created from HEAD")),await re(e,n,"HEAD",a,a??te,`checkout: moving from ${d} to ${t}`),await r?.hooks?.postCheckout?.({repo:e,prevHead:a,newHead:a??te,isBranchCheckout:!0});let u="";if(o&&a){let g=await K(e),w=await j(e,a);u=await ir(e,w.tree,g)}let m=await he(e),h=await bn(e,m,t);h&&(u+=or(h));let p=f?`Switched to and reset branch '${t}'
|
|
240
240
|
`:`Switched to a new branch '${t}'
|
|
241
241
|
`;return{stdout:u,stderr:`${p}${l}`,exitCode:0}}async function Ef(e,t,n,r,o,s){let i=await s?.hooks?.preCheckout?.({repo:e,target:t,mode:"switch"});return ee(i)?L(i.message??""):ar(e,t,n,r,o,s)}async function sh(e,t,n,r,o){let s=await o?.hooks?.preCheckout?.({repo:e,target:t,mode:"create-branch"});if(ee(s))return L(s.message??"");let i=await F(e,n);if(!i)return I(`invalid reference: ${n}`);let a=`refs/heads/${t}`;await X(e,a,i);let c=n.replace(/^refs\/remotes\//,"").split("/"),f=c[0]??"",l=`refs/heads/${c.slice(1).join("/")}`,d=await he(e);d[`branch "${t}"`]={...d[`branch "${t}"`],remote:f,merge:l},await Ye(e,d),await re(e,r,a,null,i,`branch: Created from ${n}`);let u=await ar(e,t,a,i,r,o),m=c.slice(1).join("/");return u.stderr=`branch '${t}' set up to track '${f}/${m}'.
|
|
242
|
-
${u.stderr}`,u}async function bf(e,t,n,r,o){let s=await o?.hooks?.preCheckout?.({repo:e,target:t,mode:"detach"});return ee(s)?L(s.message??""):Gn(e,n,r,o,{detachAdviceTarget:t})}se();Ne();
|
|
242
|
+
${u.stderr}`,u}async function bf(e,t,n,r,o){let s=await o?.hooks?.preCheckout?.({repo:e,target:t,mode:"detach"});return ee(s)?L(s.message??""):Gn(e,n,r,o,{detachAdviceTarget:t})}se();Ne();Ce();se();function Li(e,t){let n=e.length,r=t.length;if(n===0&&r===0)return[];if(n===0)return[{buffer1:[0,0],buffer2:[0,r]}];if(r===0)return[{buffer1:[0,n],buffer2:[0,0]}];let{changedOld:o,changedNew:s}=ji(e,t);return oh(o,n,s,r)}function oh(e,t,n,r){let o=[],s=0,i=0;for(;s<t||i<r;){for(;s<t&&i<r&&!e[s]&&!n[i];)s++,i++;if(s>=t&&i>=r)break;let a=s,c=i;for(;s<t&&e[s];)s++;for(;i<r&&n[i];)i++;(s>a||i>c)&&o.push({buffer1:[a,s-a],buffer2:[c,i-c]})}return o}function ih(e,t,n){let r=[];for(let c of Li(t,e))r.push({ab:"a",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});for(let c of Li(t,n))r.push({ab:"b",oStart:c.buffer1[0],oLength:c.buffer1[1],abStart:c.buffer2[0],abLength:c.buffer2[1]});r.sort((c,f)=>c.oStart-f.oStart);let o=[],s=0;function i(c){c>s&&(o.push({stable:!0,buffer:"o",bufferStart:s,bufferLength:c-s,content:t.slice(s,c)}),s=c)}let a=0;for(;a<r.length;){let c=r[a++],f=c.oStart,l=c.oStart+c.oLength,d=[c];for(i(f);a<r.length;){let u=r[a];if(u.oStart>l)break;l=Math.max(l,u.oStart+u.oLength),d.push(u),a++}if(d.length===1){if(c.abLength>0){let u=c.ab==="a"?e:n;o.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:u.slice(c.abStart,c.abStart+c.abLength)})}}else{let u={a:{abMin:e.length,abMax:-1,oMin:t.length,oMax:-1},b:{abMin:n.length,abMax:-1,oMin:t.length,oMax:-1}};for(let w of d){let y=w.oStart,x=y+w.oLength,b=w.abStart,k=b+w.abLength,E=u[w.ab];E.abMin=Math.min(b,E.abMin),E.abMax=Math.max(k,E.abMax),E.oMin=Math.min(y,E.oMin),E.oMax=Math.max(x,E.oMax)}let m=u.a.abMin+(f-u.a.oMin),h=u.a.abMax+(l-u.a.oMax),p=u.b.abMin+(f-u.b.oMin),g=u.b.abMax+(l-u.b.oMax);o.push({stable:!1,a:e.slice(m,h),o:t.slice(f,l),b:n.slice(p,g)})}s=l}return i(t.length),o}function ah(e,t,n,r){let o=r?.excludeFalseConflicts??!0,s=ih(e,t,n),i=[],a=[];function c(){a.length&&(i.push({type:"ok",lines:a}),a=[])}for(let f of s)f.stable?a.push(...f.content):o&&Rf(f.a,f.b)?a.push(...f.a):(c(),i.push({type:"conflict",a:f.a,o:f.o,b:f.b}));return c(),r?.conflictStyle==="diff3"?kf(i):kf(ch(i))}function as(e,t,n,r){let o=r?.markerSize??7,s=r?.conflictStyle??"merge",i=`${"<".repeat(o)}${r?.a?` ${r.a}`:""}`,a=`${"|".repeat(o)}${r?.o?` ${r.o}`:""}`,c="=".repeat(o),f=`${">".repeat(o)}${r?.b?` ${r.b}`:""}`,l=ah(e,t,n,{conflictStyle:s}),d=!1,u=[];for(let m of l)m.type==="ok"?u.push(...m.lines):(d=!0,s==="diff3"?u.push(i,...m.a,a,...m.o,c,...m.b,f):u.push(i,...m.a,c,...m.b,f));return{conflict:d,result:u}}function ch(e){let t=[];for(let n of e)n.type==="ok"?t.push(n):t.push(...fh(n));return t}function fh(e){let{a:t,b:n}=e;if(t.length===0||n.length===0)return[e];if(Rf(t,n))return[e];let r=Li(t,n);if(r.length===0)return[{type:"ok",lines:t}];let o=[],s=0;for(let a of r){let c=a.buffer1[0];c-s>0&&o.push({type:"ok",lines:t.slice(s,c)});let l=c+a.buffer1[1],d=a.buffer2[0]+a.buffer2[1];o.push({type:"conflict",a:t.slice(c,l),o:[],b:n.slice(a.buffer2[0],d)}),s=l}return t.length-s>0&&o.push({type:"ok",lines:t.slice(s)}),o.length===1&&o[0].type==="conflict"?[e]:o}function kf(e){if(e.length<3)return e;let t=[e[0]];for(let r=1;r<e.length;r++){let o=t[t.length-1],s=e[r];o.type==="ok"&&s.type==="ok"?o.lines=[...o.lines,...s.lines]:t.push(s)}if(t.length<3)return t;let n=[t[0]];for(let r=1;r<t.length;r++){let o=n[n.length-1],s=t[r];if(o.type==="conflict"&&s.type==="ok"&&s.lines.length<=3&&r+1<t.length&&t[r+1].type==="conflict"){let i=t[r+1],a=o;a.a=[...o.a,...s.lines,...i.a],a.b=[...o.b,...s.lines,...i.b],a.o=[...o.o,...s.lines,...i.o],r++}else n.push(s)}return n}function lr(e,t,n,r){let o=as(Ct(e),Ct(t),Ct(n),{a:r.a,o:r.o,b:r.b,markerSize:r.markerSize,conflictStyle:r.conflictStyle}),i=(o.result[o.result.length-1]??"").endsWith("\0"),a=o.result.map(_i);return(a[a.length-1]??"").startsWith(">>>>>>>")||!i?`${a.join(`
|
|
243
243
|
`)}
|
|
244
244
|
`:a.join(`
|
|
245
|
-
`)}function
|
|
246
|
-
`);if(t[t.length-1]==="")t.pop();else{let n=t[t.length-1]??"";t[t.length-1]=`${n}\0`}return t}function _i(e){return e.endsWith("\0")?e.slice(0,-1):e}function Rf(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}Pe();ie();un();le();Zn();ve();tt();sn();var Cr=new TextDecoder,Wn=new TextEncoder,xf={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function Ft(e,t,n,r,o){let{paths:s,baseMap:i,oursMap:a,theirsMap:c}=await dh(e,t,n,r),f=await mh(e,s,i,a,c,o);return hh(e,s,o,f)}async function fs(e,t,n,r){let o=await Nt(e,t,n),s=await j(e,t),i=await j(e,n);if(o.length===0)return{...await Ft(e,null,s.tree,i.tree,r),baseTree:null};if(o.length===1){let f=await j(e,o[0]);return{...await Ft(e,f.tree,s.tree,i.tree,r),baseTree:f.tree}}let a=await Hf(e,t,n,o,1);return{...await Ft(e,a,s.tree,i.tree,r),baseTree:a}}async function dh(e,t,n,r){let o=await ce(e,t),s=await ce(e,n),i=await ce(e,r),a=new Set;for(let f of o.keys())a.add(f);for(let f of s.keys())a.add(f);for(let f of i.keys())a.add(f);let c=new Map;for(let f of a){let l=o.get(f)??null,d=s.get(f)??null,u=i.get(f)??null,m=l?{hash:l.hash,mode:l.mode}:null,h=d?{hash:d.hash,mode:d.mode}:null,p=u?{hash:u.hash,mode:u.mode}:null,g=(l?1:0)|(d?2:0)|(u?4:0),w=l?.hash??null,y=d?.hash??null,x=u?.hash??null,b=0;w!==null&&w===y&&(b|=3),w!==null&&w===x&&(b|=5),y!==null&&y===x&&(b|=6);let k={path:f,stages:[m,h,p],pathnames:[f,f,f],filemask:g,matchMask:b,merged:{result:null,clean:!1},pathConflict:!1};if(uh(k)){c.set(f,k);continue}c.set(f,k)}return{paths:c,baseMap:o,oursMap:s,theirsMap:i}}function uh(e){let[t,n,r]=e.stages,o=t?.hash??null,s=n?.hash??null,i=r?.hash??null;return s===o&&i===o?(n?e.merged={result:{hash:s,mode:n.mode},clean:!0}:e.merged={result:null,clean:!0},!0):s===i&&s!==null?(e.merged={result:{hash:s,mode:n.mode},clean:!0},!0):s===null&&i===null?(e.merged={result:null,clean:!0},!0):i===o&&s!==o?(n?e.merged={result:{hash:s,mode:n.mode},clean:!0}:e.merged={result:null,clean:!0},!0):s===o&&i!==o?(r?e.merged={result:{hash:i,mode:r.mode},clean:!0}:e.merged={result:null,clean:!0},!0):!1}async function mh(e,t,n,r,o,s){let i={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[A,$]of n)r.has(A)||a.push({path:A,status:"deleted",oldHash:$.hash,oldMode:$.mode}),o.has(A)||c.push({path:A,status:"deleted",oldHash:$.hash,oldMode:$.mode});for(let[A,$]of r)n.has(A)||a.push({path:A,status:"added",newHash:$.hash,newMode:$.mode});for(let[A,$]of o)n.has(A)||c.push({path:A,status:"added",newHash:$.hash,newMode:$.mode});let f=await nt(e,a),l=await nt(e,c);if(f.renames.length===0&&l.renames.length===0)return i;let d=new Map,u=new Map;for(let A of f.renames)d.set(A.oldPath,A);for(let A of l.renames)u.set(A.oldPath,A);let m=new Set;for(let[A]of r)!n.has(A)&&o.has(A)&&m.add(A);let h=new Set,p=s?.a??"HEAD",g=s?.b??"theirs";function w(A,$,N=0){i.msgBuf.push({sortKey:A,subOrder:N,text:$})}for(let A of[...n.keys()].sort()){let $=d.get(A),N=u.get(A);if(!$&&!N)continue;let B=n.get(A);if(h.add(A),$&&N)if(h.add($.newPath),h.add(N.newPath),$.newPath===N.newPath){let z=r.get($.newPath),_=o.get(N.newPath);if(z.hash===_.hash)i.entries.push(bt($.newPath,z));else{let U=Ni(t,$.newPath);U.stages=[{hash:B.hash,mode:B.mode},{hash:z.hash,mode:z.mode},{hash:_.hash,mode:_.mode}],U.pathnames=[A,$.newPath,N.newPath],U.filemask=7,U.merged={result:null,clean:!1}}}else{let z=r.get($.newPath),_=o.get(N.newPath),U=await vf(e,B,z,_,s);U.conflict&&w(A,`Auto-merging ${A}`,-1),i.conflicts.push({path:A,reason:"rename-rename",oursPath:$.newPath,theirsPath:N.newPath}),w(A,`CONFLICT (rename/rename): ${A} renamed to ${$.newPath} in ${p} and to ${N.newPath} in ${g}.`),i.entries.push(bt(A,B,1)),i.entries.push(ot($.newPath,z.mode,U.hash,2)),i.entries.push(ot(N.newPath,_.mode,U.hash,3)),i.worktreeBlobs.set($.newPath,{hash:U.hash,mode:z.mode}),i.worktreeBlobs.set(N.newPath,{hash:U.hash,mode:_.mode})}else if($){h.add($.newPath);let z=o.get(A),_=r.get($.newPath),U=m.has($.newPath);if(z)if(U)await $f(e,i,$.newPath,A,B,_,z,r,o,!1,s);else if(z.hash===B.hash&&_.hash===B.hash)i.entries.push(bt($.newPath,_));else if(z.hash===B.hash)i.entries.push(bt($.newPath,_));else if(_.hash===B.hash)i.entries.push(ot($.newPath,_.mode,z.hash));else{let V=Ni(t,$.newPath);V.stages=[{hash:B.hash,mode:B.mode},{hash:_.hash,mode:_.mode},{hash:z.hash,mode:z.mode}],V.pathnames=[A,$.newPath,A],V.filemask=7,V.merged={result:null,clean:!1}}else{let V=o.get($.newPath);if(i.conflicts.push({path:$.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:A}),w($.newPath,`CONFLICT (rename/delete): ${A} renamed to ${$.newPath} in ${p}, but deleted in ${g}.`),V){i.conflicts.push({path:$.newPath,reason:"add-add"}),w($.newPath,`Auto-merging ${$.newPath}`,0),w($.newPath,`CONFLICT (add/add): Merge conflict in ${$.newPath}`,1),i.entries.push(bt($.newPath,_,2)),i.entries.push(bt($.newPath,V,3));let be=await bo(e,_.hash,V.hash,_.mode,s);i.worktreeBlobs.set($.newPath,{hash:be,mode:_.mode})}else i.entries.push(ot($.newPath,B.mode,B.hash,1)),i.entries.push(bt($.newPath,_,2)),i.worktreeBlobs.set($.newPath,{hash:_.hash,mode:_.mode}),_.hash!==B.hash&&w($.newPath,`CONFLICT (modify/delete): ${$.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${$.newPath} left in tree.`,1)}}else if(N){h.add(N.newPath);let z=r.get(A),_=o.get(N.newPath),U=m.has(N.newPath);if(z)if(U)await $f(e,i,N.newPath,A,B,z,_,r,o,!0,s);else if(z.hash===B.hash&&_.hash===B.hash)i.entries.push(bt(N.newPath,_));else if(z.hash===B.hash)i.entries.push(bt(N.newPath,_));else if(_.hash===B.hash)i.entries.push(ot(N.newPath,_.mode,z.hash));else{let V=Ni(t,N.newPath);V.stages=[{hash:B.hash,mode:B.mode},{hash:z.hash,mode:z.mode},{hash:_.hash,mode:_.mode}],V.pathnames=[A,A,N.newPath],V.filemask=7,V.merged={result:null,clean:!1}}else{let V=r.get(N.newPath);if(i.conflicts.push({path:N.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:A}),w(N.newPath,`CONFLICT (rename/delete): ${A} renamed to ${N.newPath} in ${g}, but deleted in ${p}.`),V){i.conflicts.push({path:N.newPath,reason:"add-add"}),w(N.newPath,`Auto-merging ${N.newPath}`,0),w(N.newPath,`CONFLICT (add/add): Merge conflict in ${N.newPath}`,1),i.entries.push(bt(N.newPath,V,2)),i.entries.push(bt(N.newPath,_,3));let be=await bo(e,V.hash,_.hash,V.mode,s);i.worktreeBlobs.set(N.newPath,{hash:be,mode:V.mode})}else i.entries.push(ot(N.newPath,B.mode,B.hash,1)),i.entries.push(bt(N.newPath,_,3)),i.worktreeBlobs.set(N.newPath,{hash:_.hash,mode:_.mode}),_.hash!==B.hash&&w(N.newPath,`CONFLICT (modify/delete): ${N.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${N.newPath} left in tree.`,1)}}}let y=new Set(f.renames.map(A=>A.newPath)),x=new Set(l.renames.map(A=>A.newPath)),b=Cf(n,r),k=Cf(n,o),E=Pf(b,o,n),R=Pf(k,r,n),P=Of(f.renames,E),C=Of(l.renames,R),v=If(P),D=If(C);for(let A of[...v.keys()])D.has(A)&&(v.delete(A),D.delete(A));let O=new Set(v.keys()),H=new Set(D.keys());if(D.size>0)for(let A of a){if(A.status!=="added"||y.has(A.path))continue;let $=Sf(A.path,D,O);if(!$)continue;if(t.has($)||n.has($)||r.has($)||o.has($)){if(r.has($)){w($,`CONFLICT (implicit dir rename): Existing file/dir at ${$} in the way of implicit directory rename(s) putting the following path(s) there: ${A.path}.`,1);continue}let z=r.get(A.path),_=o.get($)??n.get($);i.entries.push(ot($,z.mode,z.hash,2)),_&&i.entries.push(ot($,_.mode,_.hash,3)),i.worktreeBlobs.set($,{hash:z.hash,mode:z.mode}),i.conflicts.push({path:$,reason:"add-add"}),w($,`CONFLICT (file location): ${A.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${$}.`,1);let U=t.get(A.path);U&&(U.merged={result:null,clean:!0}),h.add(A.path);continue}let N=r.get(A.path);i.entries.push(ot($,N.mode,N.hash,2)),i.worktreeBlobs.set($,{hash:N.hash,mode:N.mode}),i.conflicts.push({path:$,reason:"directory-rename"}),w($,`CONFLICT (file location): ${A.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${$}.`,1);let B=t.get(A.path);B&&(B.merged={result:null,clean:!0}),h.add(A.path)}if(v.size>0)for(let A of c){if(A.status!=="added"||x.has(A.path))continue;let $=Sf(A.path,v,H);if(!$)continue;if(t.has($)||n.has($)||r.has($)||o.has($)){if(o.has($)){w($,`CONFLICT (implicit dir rename): Existing file/dir at ${$} in the way of implicit directory rename(s) putting the following path(s) there: ${A.path}.`,1);continue}let z=o.get(A.path),_=r.get($)??n.get($);_&&i.entries.push(ot($,_.mode,_.hash,2)),i.entries.push(ot($,z.mode,z.hash,3)),i.worktreeBlobs.set($,{hash:z.hash,mode:z.mode}),i.conflicts.push({path:$,reason:"add-add"}),w($,`CONFLICT (file location): ${A.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${$}.`,1);let U=t.get(A.path);U&&(U.merged={result:null,clean:!0}),h.add(A.path);continue}let N=o.get(A.path);i.entries.push(ot($,N.mode,N.hash,3)),i.worktreeBlobs.set($,{hash:N.hash,mode:N.mode}),i.conflicts.push({path:$,reason:"directory-rename"}),w($,`CONFLICT (file location): ${A.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${$}.`,1);let B=t.get(A.path);B&&(B.merged={result:null,clean:!0}),h.add(A.path)}let G=new Set(i.entries.map(A=>A.path));for(let A of G){let $=t.get(A);$&&($.merged={result:null,clean:!0})}for(let A of h){if(G.has(A))continue;let $=t.get(A);if(!$||$.merged.clean)continue;$.filemask===7&&!$.pathConflict||($.merged={result:null,clean:!0})}return i}function Cf(e,t){let n=new Set;for(let s of e.keys()){let i=Ot(s);for(;i;)n.add(i),i=Ot(i)}let r=new Set;for(let s of t.keys()){let i=Ot(s);for(;i;)r.add(i),i=Ot(i)}let o=new Set;for(let s of n)r.has(s)||o.add(s);return o}function Pf(e,t,n){if(e.size===0)return e;let r=new Set;for(let o of t.keys()){if(n.has(o))continue;let s=Ot(o)??"";e.has(s)&&r.add(s)}for(let o of[...r]){let s=Ot(o);for(;s;)e.has(s)&&!r.has(s)&&r.add(s),s=Ot(s)}return r}function Of(e,t){let n=new Map;for(let r of e){let o=Ot(r.oldPath),s=Ot(r.newPath),i=!0;for(;;){if(!i){let a=o.length+(o?1:0),c=s.length+(s?1:0),f=r.oldPath.slice(a,r.oldPath.indexOf("/",a)),l=r.newPath.slice(c,r.newPath.indexOf("/",c));if(f!==l)break}if(t.has(o)){let a=n.get(o);a||(a=new Map,n.set(o,a)),a.set(s,(a.get(s)??0)+1)}if(i=!1,!o||!s)break;o=Ot(o),s=Ot(s)}}return n}function If(e){let t=new Map;for(let[n,r]of e){let o=0,s=0,i=null;for(let[a,c]of r)c===o?s=o:c>o&&(o=c,i=a);o>0&&s!==o&&i!==null&&t.set(n,i)}return t}function Sf(e,t,n){let r=Ot(e);for(;r;){let s=t.get(r);if(s!==void 0){if(n.has(s))return null;let i=e.slice(r.length+1);return s?`${s}/${i}`:i}r=Ot(r)}let o=t.get("");return o!==void 0&&!n.has(o)?`${o}/${e}`:null}function Ot(e){let t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}async function $f(e,t,n,r,o,s,i,a,c,f=!1,l){let d=f?a.get(n):c.get(n),u=f?i:s;if(d.hash===u.hash){t.entries.push(ot(n,d.mode,d.hash)),t.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let h=await vf(e,o,s,i,l,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(d.hash===h.hash)t.entries.push(ot(n,d.mode,h.hash));else if(t.conflicts.push({path:n,reason:"add-add"}),t.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),t.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),f){t.entries.push(bt(n,d,2)),t.entries.push(ot(n,i.mode,h.hash,3));let p=await bo(e,d.hash,h.hash,d.mode,l);t.worktreeBlobs.set(n,{hash:p,mode:d.mode})}else{t.entries.push(ot(n,s.mode,h.hash,2)),t.entries.push(bt(n,d,3));let p=await bo(e,h.hash,d.hash,s.mode,l);t.worktreeBlobs.set(n,{hash:p,mode:s.mode})}}async function vf(e,t,n,r,o,s,i){if(n.hash===t.hash)return{hash:r.hash,conflict:!1};if(r.hash===t.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(pn(t.mode)||pn(n.mode)||pn(r.mode))return{hash:n.hash,conflict:!0};let a=await oe(e,t.hash),c=await oe(e,n.hash),f=await oe(e,r.hash);if(Se(c)||Se(f)||Se(a))return{hash:n.hash,conflict:!0};let l=Pt(a),d=Pt(c),u=Pt(f),m=o?.conflictStyle,h=as(d,l,u,{conflictStyle:m});if(!h.conflict)return{hash:await Ui(e,h.result),conflict:!1};let p=o?.a??"HEAD",g=o?.b??"theirs",w=s?.oursPath?`${p}:${s.oursPath}`:p,y=s?.theirsPath?`${g}:${s.theirsPath}`:g,x=lr(c,a,f,{a:w,b:y,markerSize:i??7,conflictStyle:m});return{hash:await $e(e,"blob",Wn.encode(x)),conflict:!0}}async function bo(e,t,n,r,o){let s=await oe(e,t),i=await oe(e,n),a=lr(s,"",i,{a:o?.a??"HEAD",b:o?.b??"theirs",conflictStyle:o?.conflictStyle});return $e(e,"blob",Wn.encode(a))}function bt(e,t,n=0){return ot(e,t.mode,t.hash,n)}function ot(e,t,n,r=0){return{path:e,mode:parseInt(t,8),hash:n,stage:r,stat:Ie()}}async function hh(e,t,n,r){let o=[...r.entries],s=[...r.conflicts],i=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(m,h,p=0){i.push({sortKey:m,subOrder:p,text:h})}for(let m of[...t.keys()].sort()){let h=t.get(m);if(h.merged.clean){h.merged.result?.hash&&o.push(Me(m,h.merged.result.hash,h.merged.result.mode));continue}await ph(e,h,n,o,s,c,a)}i.sort((m,h)=>(m.sortKey<h.sortKey?-1:m.sortKey>h.sortKey?1:0)||m.subOrder-h.subOrder);let f=i.map(m=>m.text),l=[],d=new Set;for(let m of o)m.stage===0&&(l.push(m),d.add(m.path));for(let[m,h]of a)d.has(m)||l.push(Me(m,h.hash,h.mode));l.sort((m,h)=>Oe(m.path,h.path));let u=await Ge(e,l);return{entries:o,conflicts:s,messages:f,resultTree:u}}async function ph(e,t,n,r,o,s,i){let a=t.path,[c,f,l]=t.stages,d=c?.hash??null,u=f?.hash??null,m=l?.hash??null;if(u===null&&m!==null&&d!==null){o.push({path:a,reason:"delete-modify",deletedBy:"ours"});let h=n?.a??"HEAD",p=n?.b??"theirs";s(a,`CONFLICT (modify/delete): ${a} deleted in ${h} and modified in ${p}. Version ${p} of ${a} left in tree.`),c&&r.push(Me(a,d,c.mode,1)),r.push(Me(a,m,l.mode,3)),i.set(a,{hash:m,mode:l.mode});return}if(m===null&&u!==null&&d!==null){o.push({path:a,reason:"delete-modify",deletedBy:"theirs"});let h=n?.b??"theirs",p=n?.a??"HEAD";s(a,`CONFLICT (modify/delete): ${a} deleted in ${h} and modified in ${p}. Version ${p} of ${a} left in tree.`),c&&r.push(Me(a,d,c.mode,1)),r.push(Me(a,u,f.mode,2)),i.set(a,{hash:u,mode:f.mode});return}if(d===null&&u!==null&&m!==null){if(u===m){r.push(Me(a,u,f.mode));return}s(a,`Auto-merging ${a}`,0);let h=await oe(e,u),p=await oe(e,m);if(Se(h)||Se(p)){o.push({path:a,reason:"add-add"}),s(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),s(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(Me(a,u,f.mode,2)),r.push(Me(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let g=Pt(""),w=Pt(h),y=Pt(p),x=as(w,g,y,{conflictStyle:n?.conflictStyle});if(!x.conflict){let E=await Ui(e,x.result);r.push(Me(a,E,f.mode));return}o.push({path:a,reason:"add-add"}),s(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(Me(a,u,f.mode,2)),r.push(Me(a,m,l.mode,3));let b=lr(h,"",p,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),k=await $e(e,"blob",Wn.encode(b));i.set(a,{hash:k,mode:f.mode});return}if(d!==null&&u!==null&&m!==null){if(u===d){r.push(Me(a,m,l.mode));return}if(m===d){r.push(Me(a,u,f.mode));return}if(u===m){r.push(Me(a,u,f.mode));return}if(s(a,`Auto-merging ${a}`,0),pn(c.mode)||pn(f.mode)||pn(l.mode)){o.push({path:a,reason:"content"}),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(Me(a,d,c.mode,1)),r.push(Me(a,u,f.mode,2)),r.push(Me(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let h=await oe(e,d),p=await oe(e,u),g=await oe(e,m);if(Se(p)||Se(g)||Se(h)){o.push({path:a,reason:"content"}),s(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(Me(a,d,c.mode,1)),r.push(Me(a,u,f.mode,2)),r.push(Me(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let w=Pt(h),y=Pt(p),x=Pt(g),b=as(y,w,x,{conflictStyle:n?.conflictStyle});if(b.conflict){let k=t.pathnames[1],E=t.pathnames[2],R=k!==a||E!==a,P={path:a,reason:"content"};R&&(k!==a&&(P.oursOrigPath=k),E!==a&&(P.theirsOrigPath=E)),o.push(P),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(Me(a,d,c.mode,1)),r.push(Me(a,u,f.mode,2)),r.push(Me(a,m,l.mode,3));let C=R?`${n?.a??"HEAD"}:${k}`:n?.a??"HEAD",v=R?`${n?.b??"theirs"}:${E}`:n?.b??"theirs",D=lr(p,h,g,{a:C,b:v,conflictStyle:n?.conflictStyle}),O=await $e(e,"blob",Wn.encode(D));i.set(a,{hash:O,mode:f.mode})}else{let k=await Ui(e,b.result);r.push(Me(a,k,f.mode))}return}}var gh=200;async function Hf(e,t,n,r,o){let s=await Promise.all(r.map(async l=>({hash:l,timestamp:(await j(e,l)).committer.timestamp})));s.sort((l,d)=>l.timestamp-d.timestamp);let i=s.map(l=>l.hash),a=i[0],c=a,f=(await j(e,a)).tree;for(let l=1;l<i.length;l++){let d=i[l],u=(await j(e,d)).tree,m=null;if(o>=gh)m=f;else{let g=await Nt(e,c,d);g.length===0?m=null:g.length===1?m=(await j(e,g[0])).tree:m=await Hf(e,c,d,g,o+1)}let h=await Ft(e,m,f,u);f=await wh(e,h,o);let p=tn({type:"commit",tree:f,parents:[c,d],author:xf,committer:xf,message:"merged common ancestors"});c=await $e(e,"commit",p)}return f}async function wh(e,t,n){let r=t.entries.filter(a=>a.stage===0),o=new Map;for(let a of t.entries)a.stage>0&&o.set(`${a.path}\0${a.stage}`,a);let s=(a,c)=>o.get(`${a}\0${c}`),i={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let a of t.conflicts){if(a.reason==="delete-modify"||a.reason==="rename-delete"){let l=s(a.path,1);if(l){r.push({...l,stage:0});continue}}if(a.reason==="rename-rename"){let l=a.oursPath??a.path,d=a.theirsPath??a.path,u=s(a.path,1),m=s(l,2),h=s(d,3);if(m&&h){let p=Cr.decode((await we(e,m.hash)).content),g=Cr.decode((await we(e,h.hash)).content),w=u?Cr.decode((await we(e,u.hash)).content):"",y=8+n*2,x=i.a??"Temporary merge branch 1",b=i.b??"Temporary merge branch 2",k=lr(p,w,g,{a:`${x}:${l}`,o:i.o,b:`${b}:${d}`,markerSize:y}),E=await $e(e,"blob",Wn.encode(k));r.push({path:l,mode:m.mode,hash:E,stage:0,stat:Ie()}),r.push({path:d,mode:h.mode,hash:E,stage:0,stat:Ie()});continue}else if(m){r.push({...m,stage:0});continue}}let c=s(a.path,2),f=s(a.path,3);if(c&&f&&(a.reason==="content"||a.reason==="add-add")){let l=Cr.decode((await we(e,c.hash)).content),d=Cr.decode((await we(e,f.hash)).content),u=a.reason==="content"?s(a.path,1):null,m=u?Cr.decode((await we(e,u.hash)).content):"",h=a.oursOrigPath||a.theirsOrigPath,p=i.a??"Temporary merge branch 1",g=i.b??"Temporary merge branch 2",w=h?`${p}:${a.oursOrigPath??a.path}`:p,y=h?`${g}:${a.theirsOrigPath??a.path}`:g,x=lr(l,m,d,{a:w,o:i.o,b:y,markerSize:i.markerSize}),b=await $e(e,"blob",Wn.encode(x));r.push({path:a.path,mode:c.mode,hash:b,stage:0,stat:Ie()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((a,c)=>Oe(a.path,c.path)),Ge(e,r)}async function Ui(e,t){let n=t.map(_i);if(n.length===0)return $e(e,"blob",Wn.encode(""));let s=(t[t.length-1]??"").endsWith("\0")?n.join(`
|
|
245
|
+
`)}function Ct(e){if(e==="")return[];let t=e.split(`
|
|
246
|
+
`);if(t[t.length-1]==="")t.pop();else{let n=t[t.length-1]??"";t[t.length-1]=`${n}\0`}return t}function _i(e){return e.endsWith("\0")?e.slice(0,-1):e}function Rf(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}Ce();ie();un();le();Zn();ve();tt();sn();var Cr=new TextDecoder,Wn=new TextEncoder,xf={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function Ft(e,t,n,r,o){let{paths:s,baseMap:i,oursMap:a,theirsMap:c}=await dh(e,t,n,r),f=await mh(e,s,i,a,c,o);return hh(e,s,o,f)}async function fs(e,t,n,r){let o=await Nt(e,t,n),s=await j(e,t),i=await j(e,n);if(o.length===0)return{...await Ft(e,null,s.tree,i.tree,r),baseTree:null};if(o.length===1){let f=await j(e,o[0]);return{...await Ft(e,f.tree,s.tree,i.tree,r),baseTree:f.tree}}let a=await Hf(e,t,n,o,1);return{...await Ft(e,a,s.tree,i.tree,r),baseTree:a}}async function dh(e,t,n,r){let o=await ce(e,t),s=await ce(e,n),i=await ce(e,r),a=new Set;for(let f of o.keys())a.add(f);for(let f of s.keys())a.add(f);for(let f of i.keys())a.add(f);let c=new Map;for(let f of a){let l=o.get(f)??null,d=s.get(f)??null,u=i.get(f)??null,m=l?{hash:l.hash,mode:l.mode}:null,h=d?{hash:d.hash,mode:d.mode}:null,p=u?{hash:u.hash,mode:u.mode}:null,g=(l?1:0)|(d?2:0)|(u?4:0),w=l?.hash??null,y=d?.hash??null,x=u?.hash??null,b=0;w!==null&&w===y&&(b|=3),w!==null&&w===x&&(b|=5),y!==null&&y===x&&(b|=6);let k={path:f,stages:[m,h,p],pathnames:[f,f,f],filemask:g,matchMask:b,merged:{result:null,clean:!1},pathConflict:!1};if(uh(k)){c.set(f,k);continue}c.set(f,k)}return{paths:c,baseMap:o,oursMap:s,theirsMap:i}}function uh(e){let[t,n,r]=e.stages,o=t?.hash??null,s=n?.hash??null,i=r?.hash??null;return s===o&&i===o?(n?e.merged={result:{hash:s,mode:n.mode},clean:!0}:e.merged={result:null,clean:!0},!0):s===i&&s!==null?(e.merged={result:{hash:s,mode:n.mode},clean:!0},!0):s===null&&i===null?(e.merged={result:null,clean:!0},!0):i===o&&s!==o?(n?e.merged={result:{hash:s,mode:n.mode},clean:!0}:e.merged={result:null,clean:!0},!0):s===o&&i!==o?(r?e.merged={result:{hash:i,mode:r.mode},clean:!0}:e.merged={result:null,clean:!0},!0):!1}async function mh(e,t,n,r,o,s){let i={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[A,S]of n)r.has(A)||a.push({path:A,status:"deleted",oldHash:S.hash,oldMode:S.mode}),o.has(A)||c.push({path:A,status:"deleted",oldHash:S.hash,oldMode:S.mode});for(let[A,S]of r)n.has(A)||a.push({path:A,status:"added",newHash:S.hash,newMode:S.mode});for(let[A,S]of o)n.has(A)||c.push({path:A,status:"added",newHash:S.hash,newMode:S.mode});let f=await nt(e,a),l=await nt(e,c);if(f.renames.length===0&&l.renames.length===0)return i;let d=new Map,u=new Map;for(let A of f.renames)d.set(A.oldPath,A);for(let A of l.renames)u.set(A.oldPath,A);let m=new Set;for(let[A]of r)!n.has(A)&&o.has(A)&&m.add(A);let h=new Set,p=s?.a??"HEAD",g=s?.b??"theirs";function w(A,S,N=0){i.msgBuf.push({sortKey:A,subOrder:N,text:S})}for(let A of[...n.keys()].sort()){let S=d.get(A),N=u.get(A);if(!S&&!N)continue;let B=n.get(A);if(h.add(A),S&&N)if(h.add(S.newPath),h.add(N.newPath),S.newPath===N.newPath){let z=r.get(S.newPath),_=o.get(N.newPath);if(z.hash===_.hash)i.entries.push(yt(S.newPath,z));else{let U=Ni(t,S.newPath);U.stages=[{hash:B.hash,mode:B.mode},{hash:z.hash,mode:z.mode},{hash:_.hash,mode:_.mode}],U.pathnames=[A,S.newPath,N.newPath],U.filemask=7,U.merged={result:null,clean:!1}}}else{let z=r.get(S.newPath),_=o.get(N.newPath),U=await vf(e,B,z,_,s);U.conflict&&w(A,`Auto-merging ${A}`,-1),i.conflicts.push({path:A,reason:"rename-rename",oursPath:S.newPath,theirsPath:N.newPath}),w(A,`CONFLICT (rename/rename): ${A} renamed to ${S.newPath} in ${p} and to ${N.newPath} in ${g}.`),i.entries.push(yt(A,B,1)),i.entries.push(ot(S.newPath,z.mode,U.hash,2)),i.entries.push(ot(N.newPath,_.mode,U.hash,3)),i.worktreeBlobs.set(S.newPath,{hash:U.hash,mode:z.mode}),i.worktreeBlobs.set(N.newPath,{hash:U.hash,mode:_.mode})}else if(S){h.add(S.newPath);let z=o.get(A),_=r.get(S.newPath),U=m.has(S.newPath);if(z)if(U)await Sf(e,i,S.newPath,A,B,_,z,r,o,!1,s);else if(z.hash===B.hash&&_.hash===B.hash)i.entries.push(yt(S.newPath,_));else if(z.hash===B.hash)i.entries.push(yt(S.newPath,_));else if(_.hash===B.hash)i.entries.push(ot(S.newPath,_.mode,z.hash));else{let V=Ni(t,S.newPath);V.stages=[{hash:B.hash,mode:B.mode},{hash:_.hash,mode:_.mode},{hash:z.hash,mode:z.mode}],V.pathnames=[A,S.newPath,A],V.filemask=7,V.merged={result:null,clean:!1}}else{let V=o.get(S.newPath);if(i.conflicts.push({path:S.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:A}),w(S.newPath,`CONFLICT (rename/delete): ${A} renamed to ${S.newPath} in ${p}, but deleted in ${g}.`),V){i.conflicts.push({path:S.newPath,reason:"add-add"}),w(S.newPath,`Auto-merging ${S.newPath}`,0),w(S.newPath,`CONFLICT (add/add): Merge conflict in ${S.newPath}`,1),i.entries.push(yt(S.newPath,_,2)),i.entries.push(yt(S.newPath,V,3));let be=await bo(e,_.hash,V.hash,_.mode,s);i.worktreeBlobs.set(S.newPath,{hash:be,mode:_.mode})}else i.entries.push(ot(S.newPath,B.mode,B.hash,1)),i.entries.push(yt(S.newPath,_,2)),i.worktreeBlobs.set(S.newPath,{hash:_.hash,mode:_.mode}),_.hash!==B.hash&&w(S.newPath,`CONFLICT (modify/delete): ${S.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${S.newPath} left in tree.`,1)}}else if(N){h.add(N.newPath);let z=r.get(A),_=o.get(N.newPath),U=m.has(N.newPath);if(z)if(U)await Sf(e,i,N.newPath,A,B,z,_,r,o,!0,s);else if(z.hash===B.hash&&_.hash===B.hash)i.entries.push(yt(N.newPath,_));else if(z.hash===B.hash)i.entries.push(yt(N.newPath,_));else if(_.hash===B.hash)i.entries.push(ot(N.newPath,_.mode,z.hash));else{let V=Ni(t,N.newPath);V.stages=[{hash:B.hash,mode:B.mode},{hash:z.hash,mode:z.mode},{hash:_.hash,mode:_.mode}],V.pathnames=[A,A,N.newPath],V.filemask=7,V.merged={result:null,clean:!1}}else{let V=r.get(N.newPath);if(i.conflicts.push({path:N.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:A}),w(N.newPath,`CONFLICT (rename/delete): ${A} renamed to ${N.newPath} in ${g}, but deleted in ${p}.`),V){i.conflicts.push({path:N.newPath,reason:"add-add"}),w(N.newPath,`Auto-merging ${N.newPath}`,0),w(N.newPath,`CONFLICT (add/add): Merge conflict in ${N.newPath}`,1),i.entries.push(yt(N.newPath,V,2)),i.entries.push(yt(N.newPath,_,3));let be=await bo(e,V.hash,_.hash,V.mode,s);i.worktreeBlobs.set(N.newPath,{hash:be,mode:V.mode})}else i.entries.push(ot(N.newPath,B.mode,B.hash,1)),i.entries.push(yt(N.newPath,_,3)),i.worktreeBlobs.set(N.newPath,{hash:_.hash,mode:_.mode}),_.hash!==B.hash&&w(N.newPath,`CONFLICT (modify/delete): ${N.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${N.newPath} left in tree.`,1)}}}let y=new Set(f.renames.map(A=>A.newPath)),x=new Set(l.renames.map(A=>A.newPath)),b=Pf(n,r),k=Pf(n,o),E=Cf(b,o,n),R=Cf(k,r,n),C=Of(f.renames,E),P=Of(l.renames,R),v=If(C),D=If(P);for(let A of[...v.keys()])D.has(A)&&(v.delete(A),D.delete(A));let O=new Set(v.keys()),H=new Set(D.keys());if(D.size>0)for(let A of a){if(A.status!=="added"||y.has(A.path))continue;let S=$f(A.path,D,O);if(!S)continue;if(t.has(S)||n.has(S)||r.has(S)||o.has(S)){if(r.has(S)){w(S,`CONFLICT (implicit dir rename): Existing file/dir at ${S} in the way of implicit directory rename(s) putting the following path(s) there: ${A.path}.`,1);continue}let z=r.get(A.path),_=o.get(S)??n.get(S);i.entries.push(ot(S,z.mode,z.hash,2)),_&&i.entries.push(ot(S,_.mode,_.hash,3)),i.worktreeBlobs.set(S,{hash:z.hash,mode:z.mode}),i.conflicts.push({path:S,reason:"add-add"}),w(S,`CONFLICT (file location): ${A.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${S}.`,1);let U=t.get(A.path);U&&(U.merged={result:null,clean:!0}),h.add(A.path);continue}let N=r.get(A.path);i.entries.push(ot(S,N.mode,N.hash,2)),i.worktreeBlobs.set(S,{hash:N.hash,mode:N.mode}),i.conflicts.push({path:S,reason:"directory-rename"}),w(S,`CONFLICT (file location): ${A.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${S}.`,1);let B=t.get(A.path);B&&(B.merged={result:null,clean:!0}),h.add(A.path)}if(v.size>0)for(let A of c){if(A.status!=="added"||x.has(A.path))continue;let S=$f(A.path,v,H);if(!S)continue;if(t.has(S)||n.has(S)||r.has(S)||o.has(S)){if(o.has(S)){w(S,`CONFLICT (implicit dir rename): Existing file/dir at ${S} in the way of implicit directory rename(s) putting the following path(s) there: ${A.path}.`,1);continue}let z=o.get(A.path),_=r.get(S)??n.get(S);_&&i.entries.push(ot(S,_.mode,_.hash,2)),i.entries.push(ot(S,z.mode,z.hash,3)),i.worktreeBlobs.set(S,{hash:z.hash,mode:z.mode}),i.conflicts.push({path:S,reason:"add-add"}),w(S,`CONFLICT (file location): ${A.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${S}.`,1);let U=t.get(A.path);U&&(U.merged={result:null,clean:!0}),h.add(A.path);continue}let N=o.get(A.path);i.entries.push(ot(S,N.mode,N.hash,3)),i.worktreeBlobs.set(S,{hash:N.hash,mode:N.mode}),i.conflicts.push({path:S,reason:"directory-rename"}),w(S,`CONFLICT (file location): ${A.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${S}.`,1);let B=t.get(A.path);B&&(B.merged={result:null,clean:!0}),h.add(A.path)}let G=new Set(i.entries.map(A=>A.path));for(let A of G){let S=t.get(A);S&&(S.merged={result:null,clean:!0})}for(let A of h){if(G.has(A))continue;let S=t.get(A);if(!S||S.merged.clean)continue;S.filemask===7&&!S.pathConflict||(S.merged={result:null,clean:!0})}return i}function Pf(e,t){let n=new Set;for(let s of e.keys()){let i=Ot(s);for(;i;)n.add(i),i=Ot(i)}let r=new Set;for(let s of t.keys()){let i=Ot(s);for(;i;)r.add(i),i=Ot(i)}let o=new Set;for(let s of n)r.has(s)||o.add(s);return o}function Cf(e,t,n){if(e.size===0)return e;let r=new Set;for(let o of t.keys()){if(n.has(o))continue;let s=Ot(o)??"";e.has(s)&&r.add(s)}for(let o of[...r]){let s=Ot(o);for(;s;)e.has(s)&&!r.has(s)&&r.add(s),s=Ot(s)}return r}function Of(e,t){let n=new Map;for(let r of e){let o=Ot(r.oldPath),s=Ot(r.newPath),i=!0;for(;;){if(!i){let a=o.length+(o?1:0),c=s.length+(s?1:0),f=r.oldPath.slice(a,r.oldPath.indexOf("/",a)),l=r.newPath.slice(c,r.newPath.indexOf("/",c));if(f!==l)break}if(t.has(o)){let a=n.get(o);a||(a=new Map,n.set(o,a)),a.set(s,(a.get(s)??0)+1)}if(i=!1,!o||!s)break;o=Ot(o),s=Ot(s)}}return n}function If(e){let t=new Map;for(let[n,r]of e){let o=0,s=0,i=null;for(let[a,c]of r)c===o?s=o:c>o&&(o=c,i=a);o>0&&s!==o&&i!==null&&t.set(n,i)}return t}function $f(e,t,n){let r=Ot(e);for(;r;){let s=t.get(r);if(s!==void 0){if(n.has(s))return null;let i=e.slice(r.length+1);return s?`${s}/${i}`:i}r=Ot(r)}let o=t.get("");return o!==void 0&&!n.has(o)?`${o}/${e}`:null}function Ot(e){let t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}async function Sf(e,t,n,r,o,s,i,a,c,f=!1,l){let d=f?a.get(n):c.get(n),u=f?i:s;if(d.hash===u.hash){t.entries.push(ot(n,d.mode,d.hash)),t.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let h=await vf(e,o,s,i,l,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(d.hash===h.hash)t.entries.push(ot(n,d.mode,h.hash));else if(t.conflicts.push({path:n,reason:"add-add"}),t.msgBuf.push({sortKey:n,subOrder:0,text:`Auto-merging ${n}`}),t.msgBuf.push({sortKey:n,subOrder:1,text:`CONFLICT (add/add): Merge conflict in ${n}`}),f){t.entries.push(yt(n,d,2)),t.entries.push(ot(n,i.mode,h.hash,3));let p=await bo(e,d.hash,h.hash,d.mode,l);t.worktreeBlobs.set(n,{hash:p,mode:d.mode})}else{t.entries.push(ot(n,s.mode,h.hash,2)),t.entries.push(yt(n,d,3));let p=await bo(e,h.hash,d.hash,s.mode,l);t.worktreeBlobs.set(n,{hash:p,mode:s.mode})}}async function vf(e,t,n,r,o,s,i){if(n.hash===t.hash)return{hash:r.hash,conflict:!1};if(r.hash===t.hash)return{hash:n.hash,conflict:!1};if(n.hash===r.hash)return{hash:n.hash,conflict:!1};if(pn(t.mode)||pn(n.mode)||pn(r.mode))return{hash:n.hash,conflict:!0};let a=await oe(e,t.hash),c=await oe(e,n.hash),f=await oe(e,r.hash);if($e(c)||$e(f)||$e(a))return{hash:n.hash,conflict:!0};let l=Ct(a),d=Ct(c),u=Ct(f),m=o?.conflictStyle,h=as(d,l,u,{conflictStyle:m});if(!h.conflict)return{hash:await Ui(e,h.result),conflict:!1};let p=o?.a??"HEAD",g=o?.b??"theirs",w=s?.oursPath?`${p}:${s.oursPath}`:p,y=s?.theirsPath?`${g}:${s.theirsPath}`:g,x=lr(c,a,f,{a:w,b:y,markerSize:i??7,conflictStyle:m});return{hash:await Se(e,"blob",Wn.encode(x)),conflict:!0}}async function bo(e,t,n,r,o){let s=await oe(e,t),i=await oe(e,n),a=lr(s,"",i,{a:o?.a??"HEAD",b:o?.b??"theirs",conflictStyle:o?.conflictStyle});return Se(e,"blob",Wn.encode(a))}function yt(e,t,n=0){return ot(e,t.mode,t.hash,n)}function ot(e,t,n,r=0){return{path:e,mode:parseInt(t,8),hash:n,stage:r,stat:Ie()}}async function hh(e,t,n,r){let o=[...r.entries],s=[...r.conflicts],i=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(m,h,p=0){i.push({sortKey:m,subOrder:p,text:h})}for(let m of[...t.keys()].sort()){let h=t.get(m);if(h.merged.clean){h.merged.result?.hash&&o.push(je(m,h.merged.result.hash,h.merged.result.mode));continue}await ph(e,h,n,o,s,c,a)}i.sort((m,h)=>(m.sortKey<h.sortKey?-1:m.sortKey>h.sortKey?1:0)||m.subOrder-h.subOrder);let f=i.map(m=>m.text),l=[],d=new Set;for(let m of o)m.stage===0&&(l.push(m),d.add(m.path));for(let[m,h]of a)d.has(m)||l.push(je(m,h.hash,h.mode));l.sort((m,h)=>Oe(m.path,h.path));let u=await Ge(e,l);return{entries:o,conflicts:s,messages:f,resultTree:u}}async function ph(e,t,n,r,o,s,i){let a=t.path,[c,f,l]=t.stages,d=c?.hash??null,u=f?.hash??null,m=l?.hash??null;if(u===null&&m!==null&&d!==null){o.push({path:a,reason:"delete-modify",deletedBy:"ours"});let h=n?.a??"HEAD",p=n?.b??"theirs";s(a,`CONFLICT (modify/delete): ${a} deleted in ${h} and modified in ${p}. Version ${p} of ${a} left in tree.`),c&&r.push(je(a,d,c.mode,1)),r.push(je(a,m,l.mode,3)),i.set(a,{hash:m,mode:l.mode});return}if(m===null&&u!==null&&d!==null){o.push({path:a,reason:"delete-modify",deletedBy:"theirs"});let h=n?.b??"theirs",p=n?.a??"HEAD";s(a,`CONFLICT (modify/delete): ${a} deleted in ${h} and modified in ${p}. Version ${p} of ${a} left in tree.`),c&&r.push(je(a,d,c.mode,1)),r.push(je(a,u,f.mode,2)),i.set(a,{hash:u,mode:f.mode});return}if(d===null&&u!==null&&m!==null){if(u===m){r.push(je(a,u,f.mode));return}s(a,`Auto-merging ${a}`,0);let h=await oe(e,u),p=await oe(e,m);if($e(h)||$e(p)){o.push({path:a,reason:"add-add"}),s(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),s(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(je(a,u,f.mode,2)),r.push(je(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let g=Ct(""),w=Ct(h),y=Ct(p),x=as(w,g,y,{conflictStyle:n?.conflictStyle});if(!x.conflict){let E=await Ui(e,x.result);r.push(je(a,E,f.mode));return}o.push({path:a,reason:"add-add"}),s(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(je(a,u,f.mode,2)),r.push(je(a,m,l.mode,3));let b=lr(h,"",p,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),k=await Se(e,"blob",Wn.encode(b));i.set(a,{hash:k,mode:f.mode});return}if(d!==null&&u!==null&&m!==null){if(u===d){r.push(je(a,m,l.mode));return}if(m===d){r.push(je(a,u,f.mode));return}if(u===m){r.push(je(a,u,f.mode));return}if(s(a,`Auto-merging ${a}`,0),pn(c.mode)||pn(f.mode)||pn(l.mode)){o.push({path:a,reason:"content"}),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(je(a,d,c.mode,1)),r.push(je(a,u,f.mode,2)),r.push(je(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let h=await oe(e,d),p=await oe(e,u),g=await oe(e,m);if($e(p)||$e(g)||$e(h)){o.push({path:a,reason:"content"}),s(a,`warning: Cannot merge binary files: ${a} (${n?.a??"HEAD"} vs. ${n?.b??"theirs"})`,-1),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(je(a,d,c.mode,1)),r.push(je(a,u,f.mode,2)),r.push(je(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let w=Ct(h),y=Ct(p),x=Ct(g),b=as(y,w,x,{conflictStyle:n?.conflictStyle});if(b.conflict){let k=t.pathnames[1],E=t.pathnames[2],R=k!==a||E!==a,C={path:a,reason:"content"};R&&(k!==a&&(C.oursOrigPath=k),E!==a&&(C.theirsOrigPath=E)),o.push(C),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(je(a,d,c.mode,1)),r.push(je(a,u,f.mode,2)),r.push(je(a,m,l.mode,3));let P=R?`${n?.a??"HEAD"}:${k}`:n?.a??"HEAD",v=R?`${n?.b??"theirs"}:${E}`:n?.b??"theirs",D=lr(p,h,g,{a:P,b:v,conflictStyle:n?.conflictStyle}),O=await Se(e,"blob",Wn.encode(D));i.set(a,{hash:O,mode:f.mode})}else{let k=await Ui(e,b.result);r.push(je(a,k,f.mode))}return}}var gh=200;async function Hf(e,t,n,r,o){let s=await Promise.all(r.map(async l=>({hash:l,timestamp:(await j(e,l)).committer.timestamp})));s.sort((l,d)=>l.timestamp-d.timestamp);let i=s.map(l=>l.hash),a=i[0],c=a,f=(await j(e,a)).tree;for(let l=1;l<i.length;l++){let d=i[l],u=(await j(e,d)).tree,m=null;if(o>=gh)m=f;else{let g=await Nt(e,c,d);g.length===0?m=null:g.length===1?m=(await j(e,g[0])).tree:m=await Hf(e,c,d,g,o+1)}let h=await Ft(e,m,f,u);f=await wh(e,h,o);let p=tn({type:"commit",tree:f,parents:[c,d],author:xf,committer:xf,message:"merged common ancestors"});c=await Se(e,"commit",p)}return f}async function wh(e,t,n){let r=t.entries.filter(a=>a.stage===0),o=new Map;for(let a of t.entries)a.stage>0&&o.set(`${a.path}\0${a.stage}`,a);let s=(a,c)=>o.get(`${a}\0${c}`),i={a:"Temporary merge branch 1",b:"Temporary merge branch 2",markerSize:7+n*2};for(let a of t.conflicts){if(a.reason==="delete-modify"||a.reason==="rename-delete"){let l=s(a.path,1);if(l){r.push({...l,stage:0});continue}}if(a.reason==="rename-rename"){let l=a.oursPath??a.path,d=a.theirsPath??a.path,u=s(a.path,1),m=s(l,2),h=s(d,3);if(m&&h){let p=Cr.decode((await we(e,m.hash)).content),g=Cr.decode((await we(e,h.hash)).content),w=u?Cr.decode((await we(e,u.hash)).content):"",y=8+n*2,x=i.a??"Temporary merge branch 1",b=i.b??"Temporary merge branch 2",k=lr(p,w,g,{a:`${x}:${l}`,o:i.o,b:`${b}:${d}`,markerSize:y}),E=await Se(e,"blob",Wn.encode(k));r.push({path:l,mode:m.mode,hash:E,stage:0,stat:Ie()}),r.push({path:d,mode:h.mode,hash:E,stage:0,stat:Ie()});continue}else if(m){r.push({...m,stage:0});continue}}let c=s(a.path,2),f=s(a.path,3);if(c&&f&&(a.reason==="content"||a.reason==="add-add")){let l=Cr.decode((await we(e,c.hash)).content),d=Cr.decode((await we(e,f.hash)).content),u=a.reason==="content"?s(a.path,1):null,m=u?Cr.decode((await we(e,u.hash)).content):"",h=a.oursOrigPath||a.theirsOrigPath,p=i.a??"Temporary merge branch 1",g=i.b??"Temporary merge branch 2",w=h?`${p}:${a.oursOrigPath??a.path}`:p,y=h?`${g}:${a.theirsOrigPath??a.path}`:g,x=lr(l,m,d,{a:w,o:i.o,b:y,markerSize:i.markerSize}),b=await Se(e,"blob",Wn.encode(x));r.push({path:a.path,mode:c.mode,hash:b,stage:0,stat:Ie()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((a,c)=>Oe(a.path,c.path)),Ge(e,r)}async function Ui(e,t){let n=t.map(_i);if(n.length===0)return Se(e,"blob",Wn.encode(""));let s=(t[t.length-1]??"").endsWith("\0")?n.join(`
|
|
247
247
|
`):`${n.join(`
|
|
248
248
|
`)}
|
|
249
|
-
`;return
|
|
249
|
+
`;return Se(e,"blob",Wn.encode(s))}function je(e,t,n,r=0){let o=typeof n=="string"?parseInt(n,8):n;return{path:e,mode:o,hash:t,stage:r,stat:Ie()}}function Ni(e,t){let n=e.get(t);return n||(n={path:t,stages:[null,null,null],pathnames:[t,t,t],filemask:0,matchMask:0,merged:{result:null,clean:!1},pathConflict:!1},e.set(t,n)),n}function cs(e,t,n,r,o){let s=r==="untracked"?`error: The following untracked working tree files would be overwritten by ${t}:`:`error: Your local changes to the following files would be overwritten by ${t}:`;if(n==="merge"){if(o==="staged")return`${s}
|
|
250
250
|
${e.join(" ")}
|
|
251
251
|
Merge with strategy ort failed.
|
|
252
252
|
`;let c=e.map(l=>` ${l}`).join(`
|
|
@@ -271,13 +271,13 @@ ${i}
|
|
|
271
271
|
Please move or remove them before you ${n}.
|
|
272
272
|
`)}let s=r==="merge"?"Merge with strategy ort failed.":`fatal: ${r} failed`;return`${o.join("")}Aborting
|
|
273
273
|
${s}
|
|
274
|
-
`}async function kn(e,t,n,r){let o=await K(e),s=await ce(e,n);if(!r.skipStagedChangeCheck&&e.workTree){let h=new Map(
|
|
274
|
+
`}async function kn(e,t,n,r){let o=await K(e),s=await ce(e,n);if(!r.skipStagedChangeCheck&&e.workTree){let h=new Map(De(o).map(g=>[g.path,g])),p=[];for(let[g,w]of h){let y=s.get(g);(!y||y.hash!==w.hash)&&p.push(g)}for(let[g]of s)h.has(g)||p.push(g);if(p.length>0){let g=[...p].sort();await Fi(e,o,s);let w=r.operationName??"merge",y=r.callerCommand??"merge";return{ok:!1,stdout:"",stderr:cs(g,w,y,"local","staged"),exitCode:r.errorExitCode??2,failureKind:"staged"}}}if(e.workTree&&r.preflightOnewayCheck){let h=await tr(e,[{label:"target",treeHash:t.resultTree}],o,{mergeFn:qs,updateWorktree:!1,reset:!1,errorExitCode:r.errorExitCode??2,operationName:r.operationName??"merge"});if(!h.success){await Fi(e,o,s);let p=r.operationName??"merge",g=r.callerCommand??"merge",w=h.errors.filter(b=>b.error==="WOULD_OVERWRITE"||b.error==="NOT_UPTODATE_FILE").map(b=>b.path).sort(),y=h.errors.filter(b=>b.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"||b.error==="WOULD_LOSE_UNTRACKED_REMOVED").map(b=>b.path).sort(),x;return w.length>0&&y.length>0?x=Tf(w,y,p,g):y.length>0?x=cs(y,p,g,"untracked","worktree"):x=cs(w,p,g,"local","worktree"),{ok:!1,stdout:"",stderr:x,exitCode:r.errorExitCode??2,failureKind:"worktree"}}}if(e.workTree){let h=await tr(e,[{label:"current",treeHash:n},{label:"target",treeHash:t.resultTree}],o,{mergeFn:zs,updateWorktree:!0,reset:!1,errorExitCode:r.errorExitCode??2,operationName:r.operationName??"merge",allowStagedChanges:!!r.preflightOnewayCheck});if(!h.success){await Fi(e,o,s);let p=r.operationName??"merge",g=r.callerCommand??"merge",w=h.errors.filter(k=>k.error==="WOULD_OVERWRITE"||k.error==="NOT_UPTODATE_FILE").map(k=>k.path).sort(),y=h.errors.filter(k=>k.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"||k.error==="WOULD_LOSE_UNTRACKED_REMOVED").map(k=>k.path).sort(),x=[];w.length>0&&x.push(cs(w,p,g,"local","worktree")),y.length>0&&x.push(cs(y,p,g,"untracked","worktree"));let b;return x.length>1?b=Tf(w,y,p,g):b=x[0]??"",{ok:!1,stdout:"",stderr:b,exitCode:r.errorExitCode??2,failureKind:"worktree"}}await Me(e,h.worktreeOps)}let i=new Set,a=t.entries;if(r.preflightOnewayCheck){let h=[];for(let p of t.entries){if(p.stage===0){let g=s.get(p.path);if(g&&g.hash===p.hash){i.add(p.path);continue}}h.push(p)}a=h}let c=new Set(a.map(h=>h.path));for(let h of s.keys())i.has(h)||c.add(h);let f=o.entries.filter(h=>!c.has(h.path)),l=[...a,...f];l.sort((h,p)=>Oe(h.path,p.path)||h.stage-p.stage);let d={version:2,entries:l};await ae(e,d);let u=l.filter(h=>h.stage===0),m=await Ge(e,u);return{ok:!0,finalIndex:d,mergedTreeHash:m}}async function Fi(e,t,n){if(e.workTree)for(let r of t.entries){if(r.stage!==0||n.has(r.path))continue;let o=T(e.workTree,r.path);await e.fs.exists(o)||await ct(e,{path:r.path,hash:r.hash,mode:r.mode})}}ie();Fe();ue();ve();sn();function Af(e,t){e.command("cherry-pick",{description:"Apply the changes introduced by some existing commits",args:[q.string().name("commit").describe("The commit to cherry-pick").optional()],options:{abort:$().describe("Abort the current cherry-pick operation"),continue:$().describe("Continue the cherry-pick after conflict resolution"),skip:$().describe("Skip the current cherry-pick and continue with the rest"),"record-origin":$().alias("x").describe('Append "(cherry picked from commit ...)" to the commit message'),mainline:J.number().alias("m").describe("Select parent number for merge commit (1-based)"),noCommit:$().alias("n").describe("Apply changes without creating a commit")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(n.abort){let B=await t?.hooks?.preCherryPick?.({repo:s,mode:"abort",commit:null});if(ee(B))return{stdout:"",stderr:B.message??"",exitCode:1};let z=await yh(s,r.env);return z.exitCode===0&&await t?.hooks?.postCherryPick?.({repo:s,mode:"abort",commitHash:null,hadConflicts:!1}),z}if(n.continue){let B=await t?.hooks?.preCherryPick?.({repo:s,mode:"continue",commit:null});if(ee(B))return{stdout:"",stderr:B.message??"",exitCode:1};let z=await Eh(s,r.env);return z.exitCode===0&&await t?.hooks?.postCherryPick?.({repo:s,mode:"continue",commitHash:null,hadConflicts:!1}),z}if(n.skip)return bh(s,r.env);let i=n.commit;if(!i)return I("you must specify a commit to cherry-pick");let a=await t?.hooks?.preCherryPick?.({repo:s,mode:"pick",commit:i});if(ee(a))return{stdout:"",stderr:a.message??"",exitCode:1};let c=await He(s,i);if(M(c))return c;let f=c.hash,l=c.commit,d=await Ze(s);if(M(d))return d;let u=await K(s);if(n.noCommit){let B=u.entries.filter(z=>z.stage>0);if(B.length>0){let U=B.slice(0,10).map(be=>`${be.path}: unmerged (${be.hash})`).join(`
|
|
275
275
|
`),V=B.length>10?`
|
|
276
276
|
...`:"";return L(`${U}${V}
|
|
277
277
|
error: your index file is unmerged.
|
|
278
278
|
fatal: cherry-pick failed
|
|
279
279
|
`,128)}}else{let B=wn(u,"Cherry-picking",`fatal: cherry-pick failed
|
|
280
|
-
`);if(B)return B}let m=await j(s,d),p=!!n["record-origin"]?kh(l.message,f):l.message;if(s.workTree&&!n.noCommit){let B=await ce(s,m.tree);if(
|
|
280
|
+
`);if(B)return B}let m=await j(s,d),p=!!n["record-origin"]?kh(l.message,f):l.message;if(s.workTree&&!n.noCommit){let B=await ce(s,m.tree);if(Er(u,B))return L(`error: your local changes would be overwritten by cherry-pick.
|
|
281
281
|
hint: commit your changes or stash them to proceed.
|
|
282
282
|
fatal: cherry-pick failed
|
|
283
283
|
`,128)}if(l.parents.length>1){if(!n.mainline)return L(`error: commit ${f} is a merge but no -m option was given.
|
|
@@ -309,15 +309,15 @@ hint: You can instead skip this commit with "git cherry-pick --skip".
|
|
|
309
309
|
hint: To abort and get back to the state before "git cherry-pick",
|
|
310
310
|
hint: run "git cherry-pick --abort".
|
|
311
311
|
hint: Disable this message with "git config set advice.mergeConflict false"
|
|
312
|
-
`,exitCode:1})}let R=E.mergedTreeHash;if(n.noCommit)return{stdout:"",stderr:"",exitCode:0};let
|
|
313
|
-
`)[0]??"",O=v?.type==="symbolic"?v.target:"HEAD";await re(s,r.env,O,d,
|
|
312
|
+
`,exitCode:1})}let R=E.mergedTreeHash;if(n.noCommit)return{stdout:"",stderr:"",exitCode:0};let C=await Qe(s,r.env);if(M(C))return C;let P=await ht(s,R,[d],l.author,C,p);await Mt(s),await jt(s);let v=await Q(s),D=p.split(`
|
|
313
|
+
`)[0]??"",O=v?.type==="symbolic"?v.target:"HEAD";await re(s,r.env,O,d,P,`cherry-pick: ${D}`,v?.type==="symbolic");let H=v?.type==="symbolic"?Re(v.target):"detached HEAD",G=m.tree,A=await fn(s,G,R,l.author,C,!0),S=Ht(H,P,p),N=k.messages.length>0?`${k.messages.join(`
|
|
314
314
|
`)}
|
|
315
|
-
`:"";return await t?.hooks?.postCherryPick?.({repo:s,mode:"pick",commitHash:
|
|
315
|
+
`:"";return await t?.hooks?.postCherryPick?.({repo:s,mode:"pick",commitHash:P,hadConflicts:!1}),{stdout:`${N}${S}
|
|
316
316
|
${A}`,stderr:"",exitCode:0}}})}async function bh(e,t){if(!await F(e,"CHERRY_PICK_HEAD"))return L(`error: no cherry-pick in progress
|
|
317
317
|
fatal: cherry-pick failed
|
|
318
318
|
`,128);let r=await Z(e);if(!r)return I("unable to resolve HEAD");let o=await j(e,r),s=await K(e),i=await Vs(e,o.tree,s,r);if(!i.success){let a=i.errorOutput;return{...a,stderr:a.stderr+`error: failed to skip the commit
|
|
319
319
|
fatal: cherry-pick failed
|
|
320
|
-
`}}return await ae(e,{version:2,entries:i.newEntries}),await
|
|
320
|
+
`}}return await ae(e,{version:2,entries:i.newEntries}),await Me(e,i.worktreeOps),await re(e,t,"HEAD",r,r,`reset: moving to ${r}`),await Mt(e),{stdout:"",stderr:"",exitCode:0}}async function yh(e,t){return await F(e,"CHERRY_PICK_HEAD")?Dn(e,t,{operationRef:"CHERRY_PICK_HEAD",noOpError:L(`error: no cherry-pick or revert in progress
|
|
321
321
|
fatal: cherry-pick failed
|
|
322
322
|
`,128),operationName:"cherry-pick",clearState:Mt,origHeadAsTargetRev:!0}):await F(e,"REVERT_HEAD")?Dn(e,t,{operationRef:"REVERT_HEAD",noOpError:L(`error: no cherry-pick or revert in progress
|
|
323
323
|
fatal: cherry-pick failed
|
|
@@ -325,43 +325,43 @@ fatal: cherry-pick failed
|
|
|
325
325
|
fatal: cherry-pick failed
|
|
326
326
|
`,128)}async function Eh(e,t){let n=await F(e,"CHERRY_PICK_HEAD");if(!n)return L(`error: no cherry-pick or revert in progress
|
|
327
327
|
fatal: cherry-pick failed
|
|
328
|
-
`,128);let r=await K(e),o=wn(r,"Committing");if(o)return o;let s=await j(e,n),i=await
|
|
329
|
-
`,1);let a=await
|
|
328
|
+
`,128);let r=await K(e),o=wn(r,"Committing");if(o)return o;let s=await j(e,n),i=await Pe(e,"MERGE_MSG");if(!i)return L(`Aborting commit due to empty commit message.
|
|
329
|
+
`,1);let a=await Pe(e,"SQUASH_MSG");a&&(i=a+i),i=an(i);let c=De(r),f=await Ge(e,c),l=await Ze(e);if(M(l))return l;let u=(await j(e,l)).tree,m=await Qe(e,t);if(M(m))return m;let h=At(i),p=await ht(e,f,[l],s.author,m,h);await Mt(e),await jt(e),await pe(e,"SQUASH_MSG");let g=await Q(e),w=fe(h),y=g?.type==="symbolic"?g.target:"HEAD";await re(e,t,y,l,p,`commit (cherry-pick): ${w}`,g?.type==="symbolic");let x=g?.type==="symbolic"?Re(g.target):"detached HEAD",b=await fn(e,u,f,s.author,m,!0);return{stdout:`${Ht(x,p,i)}
|
|
330
330
|
${b}`,stderr:"",exitCode:0}}function kh(e,t){let n=`(cherry picked from commit ${t})`,r=e.replace(/\n+$/,""),o=r.lastIndexOf(`
|
|
331
331
|
`),s=o===-1?r:r.slice(o+1);return/^\(cherry picked from commit [0-9a-f]+\)$/.test(s)?`${r}
|
|
332
332
|
${n}
|
|
333
333
|
`:`${r}
|
|
334
334
|
|
|
335
335
|
${n}
|
|
336
|
-
`}se();Ne();Ws();
|
|
336
|
+
`}se();Ne();Ws();Ce();le();function Df(e,t){e.command("clean",{description:"Remove untracked files from the working tree",args:[q.string().name("pathspec").describe("Pathspec to limit which files are removed").optional().variadic()],options:{force:$().alias("f").describe("Required to actually remove files"),"dry-run":$().alias("n").describe("Don't actually remove anything, just show what would be done"),directories:$().alias("d").describe("Also remove untracked directories"),removeIgnored:$().alias("x").describe("Remove ignored files as well"),onlyIgnored:$().alias("X").describe("Remove only ignored files"),exclude:J.string().alias("e").describe("Additional exclude pattern")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=Xe(s);if(i)return i;let a=s.workTree,c=n["dry-run"],f=n.force,l=n.directories,d=n.removeIgnored,u=n.onlyIgnored,m=await t?.hooks?.preClean?.({repo:s,dryRun:c,force:f,removeDirs:l,removeIgnored:d,onlyIgnored:u});if(ee(m))return{stdout:"",stderr:m.message??"",exitCode:1};if(!f&&!c&&await ke(s,"clean.requireForce")!=="false")return I("clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean");let h=await K(s),p=new Set(h.entries.map(C=>C.path)),g=mt(s,r.cwd),w=n.pathspec,y=w.length>0?w.map(C=>Ue(C,g)):null,x=n.exclude?[n.exclude]:[],b=await Mf(s,a,"",{trackedPaths:p,removeDirs:l,removeIgnored:d,onlyIgnored:u,extraExcludes:x}),k;y?k=b.filter(C=>ye(y,C.path)):k=b,k.sort((C,P)=>C.path<P.path?-1:C.path>P.path?1:0);let E=[];if(c)for(let C of k){let P=C.isDir?`Would remove ${C.path}/`:`Would remove ${C.path}`;E.push(P)}else for(let C of k){let P=T(a,C.path);C.isDir?(await r.fs.rm(P,{recursive:!0}),E.push(`Removing ${C.path}/`)):(await r.fs.rm(P),E.push(`Removing ${C.path}`))}let R=E.length>0?`${E.join(`
|
|
337
337
|
`)}
|
|
338
|
-
`:"";return await t?.hooks?.postClean?.({repo:s,removed:k.map(
|
|
339
|
-
`),l=Qr(f,"","<cli>");i={...i,dirPatterns:[l,...i.dirPatterns]}}}let a=await e.fs.readdir(t);for(let c of a){if(n===""&&c===".git")continue;let f=T(t,c),l=n?`${n}/${c}`:c,d=await e.fs.stat(f);if(d.isDirectory){let u=i&&nn(i,l,!0)==="ignored",m=Rh(r.trackedPaths,l),h=()=>Mf(e,f,l,{...r,_ignore:i??void 0});if(r.onlyIgnored){if(u&&!m){r.removeDirs&&o.push({path:l,isDir:!0});continue}let p=await h();!m&&r.removeDirs?p.length>0&&o.push({path:l,isDir:!0}):o.push(...p)}else if(m){let p=await h();o.push(...p)}else if(!(u&&s)){if(r.removeDirs)if(r.removeIgnored)o.push({path:l,isDir:!0});else{let p=await h(),g=await e.fs.readdir(f);(p.length>0||g.length===0)&&o.push({path:l,isDir:!0})}}}else if(d.isFile){if(r.trackedPaths.has(l))continue;let u=i&&nn(i,l,!1)==="ignored";r.onlyIgnored?u&&o.push({path:l,isDir:!1}):u&&s||o.push({path:l,isDir:!1})}}return o}function Rh(e,t){let n=`${t}/`;for(let r of e)if(r.startsWith(n))return!0;return!1}se();Ne();
|
|
338
|
+
`:"";return await t?.hooks?.postClean?.({repo:s,removed:k.map(C=>C.path),dryRun:c}),{stdout:R,stderr:"",exitCode:0}}})}async function Mf(e,t,n,r){let o=[],s=!r.removeIgnored,i=null;if(s||r.onlyIgnored){i=r._ignore??await yr(e);let c=T(t,".gitignore");try{let f=await e.fs.readFile(c);i=Qn(i,f,n,c)}catch{}if(!r._ignore&&r.extraExcludes.length>0){let f=r.extraExcludes.join(`
|
|
339
|
+
`),l=Qr(f,"","<cli>");i={...i,dirPatterns:[l,...i.dirPatterns]}}}let a=await e.fs.readdir(t);for(let c of a){if(n===""&&c===".git")continue;let f=T(t,c),l=n?`${n}/${c}`:c,d=await e.fs.stat(f);if(d.isDirectory){let u=i&&nn(i,l,!0)==="ignored",m=Rh(r.trackedPaths,l),h=()=>Mf(e,f,l,{...r,_ignore:i??void 0});if(r.onlyIgnored){if(u&&!m){r.removeDirs&&o.push({path:l,isDir:!0});continue}let p=await h();!m&&r.removeDirs?p.length>0&&o.push({path:l,isDir:!0}):o.push(...p)}else if(m){let p=await h();o.push(...p)}else if(!(u&&s)){if(r.removeDirs)if(r.removeIgnored)o.push({path:l,isDir:!0});else{let p=await h(),g=await e.fs.readdir(f);(p.length>0||g.length===0)&&o.push({path:l,isDir:!0})}}}else if(d.isFile){if(r.trackedPaths.has(l))continue;let u=i&&nn(i,l,!1)==="ignored";r.onlyIgnored?u&&o.push({path:l,isDir:!1}):u&&s||o.push({path:l,isDir:!1})}}return o}function Rh(e,t){let n=`${t}/`;for(let r of e)if(r.startsWith(n))return!0;return!1}se();Ne();Pn();Ce();ie();le();Fe();ue();Sn();ie();le();var ls=2147483647;async function Or(e){let t=T(e.gitDir,"shallow");try{let n=await e.fs.readFile(t),r=new Set;for(let o of n.split(`
|
|
340
340
|
`)){let s=o.trim();s.length===40&&r.add(s)}return r}catch{return new Set}}async function xh(e,t){let n=T(e.gitDir,"shallow");if(t.size===0){try{await e.fs.rm(n,{force:!0})}catch{}return}let r=[...t].sort();await e.fs.writeFile(n,r.join(`
|
|
341
341
|
`)+`
|
|
342
|
-
`)}async function yo(e){return(await Pr(e)).size>0}async function Or(e,t,n){let r=n??await Pr(e);for(let o of t.shallow)r.add(o);for(let o of t.unshallow)r.delete(o);await xh(e,r)}async function jf(e,t,n,r){if(n>=ls)return{shallow:[],unshallow:[...r]};let o=new Map,s=[];for(let f of t)!o.has(f)&&await Kt(e,f)&&(o.set(f,1),s.push({hash:f,level:1}));let i=new Set,a=0;for(;a<s.length;){let{hash:f,level:l}=s[a++];if(l>=n){i.add(f);continue}let d;try{d=await j(e,f)}catch{continue}for(let u of d.parents)!o.has(u)&&await Kt(e,u)&&(o.set(u,l+1),s.push({hash:u,level:l+1}))}let c=[];for(let f of r){let l=o.get(f);l!==void 0&&l<n&&c.push(f)}return{shallow:[...i],unshallow:c}}Ne();$n();dt();ie();var ko=new Uint32Array([0,2874782929,1454598562,4260027763,104818581,2909197124,1351355959,4225088230,209637162,2804382715,1523426952,4053013081,172075199,2702711918,1559413021,4155209164,419274324,3013880453,1313798134,3843506983,516094401,3046853904,1215402083,3811058866,344150398,3218793903,1110456540,3916008461,314324715,3118826042,1141858121,4015451032,838548648,2594343033,1732793610,3423723995,935615293,2627596268,1635201695,3392046670,1032188802,2531018579,1798740512,3228511985,1002083351,2430804166,1829371317,3327150436,688300796,2187269677,2142620510,3572268943,792315241,2220913080,2039131339,3537049626,628649430,2384582919,1942684788,3633492133,591858243,2283716242,1978950625,3735934768,1677097296,3366964609,893718770,2652677155,1707679429,3465587220,863663975,2552480694,1871230586,3302032043,960225240,2455923465,1773654511,3270403390,1057273933,2489126044,2064377604,3495056341,767069862,2262907511,2100592785,3597481024,730327347,2162056674,2004166702,3693911295,566641036,2325738845,1900695483,3658742634,670639641,2359333576,1376601592,4183093545,79572058,2951190667,1412571757,4285241020,42027983,2849570590,1584630482,4113186307,146858864,2744735649,1481436487,4078262678,251626725,2779131956,1257298860,3785977725,474198542,3071936223,1288682553,3885369576,444388763,2972016970,1183716486,3990331479,272465188,3143944693,1085371155,3957901250,369236657,3176902240,1823819377,3354194592,973483987,2438961922,1787437540,3251868981,1010387014,2539715735,1623951707,3415358858,913891577,2636207144,1727327950,3450690079,809994092,2602447805,1950930981,3742461172,586920327,2309096790,1920450480,3643673441,616879634,2409456323,2016810767,3547309022,780500653,2245839484,2114547866,3578840139,683284792,2212736489,1565424345,4128755208,201134971,2695145386,1534139724,4029196701,230847726,2795225151,1362146803,4201185570,126082129,2899994752,1460654694,4233520823,29146052,2867138325,1169417357,4008333404,318803247,3092855294,1133282072,3906287561,356510394,3194379883,1238182823,3801390966,528368133,3022517972,1341279282,3836475619,423699856,2987954497,256065313,2753203184,1508923011,4071219794,159144116,2720394341,1607414038,4103505351,54390795,2825143514,1435408809,4275514744,84055966,2925208399,1404173884,4175973101,398369141,3169260964,1091422423,3931405318,293717728,3134747185,1194504002,3966442387,465595999,2962872974,1299384317,3861558060,503253450,3064380699,1263296616,3759527097,1052246921,2514597720,1745578539,3276988154,948397084,2480853197,1848905150,3312302447,851889315,2577365106,1685431553,3475771856,888777526,2678071271,1649066644,3373495877,642096605,2367432972,1895232639,3685695662,544930376,2334346905,1992922090,3717211963,708530935,2170742310,2089302869,3620835204,738473314,2271052211,2058837184,3522095121]),Ch=new Uint32Array([0,2125799437,1446245579,679924934,121527623,2039184714,1359849868,800622977,243055246,1892260483,1481592389,653946440,155379657,2012727236,1601245954,566506255,486110492,1649169681,1254785495,880779738,466036827,1701972054,1307892880,859962525,310759314,1815146399,1152793433,973282132,364614357,1796125400,1133012510,1027425811,972220984,1195887157,1874927347,292830974,1053603711,1081710450,1761559476,373973945,932073654,1228632251,1639818365,520651888,816844273,1308962300,1719925050,406247735,621518628,1539227433,1933077487,227363810,573948515,1551950446,1946564264,179508901,729228714,1438778791,2101662049,66187628,743012589,1392269536,2054851622,80718891,1944441968,223409277,634790075,1533214902,1960544567,175024442,585661948,1549622769,2107207422,53235443,732600885,1428142648,2057778105,68293556,747947890,1377953663,1864147308,296321377,959403431,1201305002,1747123243,379051046,1041303776,1084500205,1633688546,534068207,928247593,1239863076,1717454501,418080424,812495470,1322816099,1243037256,883039813,472173187,1653729934,1294557967,865878786,454727620,1706014665,1147897030,987669707,307785741,1827491840,1129699713,1038154124,359017802,1808993607,1458457428,677079897,14532511,2120785810,1372591635,795162142,132375256,2035729109,1486025178,640143831,245433617,1880368412,1605151901,555322512,161437782,1999272027,1284643889,841432124,446818554,1679083767,1269580150,890855803,497006013,1663735216,1122936511,1012631218,350048884,1785229945,1171323896,996531189,333647667,1834364734,1349216557,786319648,106470886,2028846571,1465201770,702551143,23511201,2144592044,1578619811,547550126,136587112,1989216101,1495895780,664579817,253393455,1907317282,1969288713,198563332,592642754,1575363279,1918806862,216763203,611147653,1524137864,2065452167,94989450,758102092,1402640449,2082607552,43463117,705815819,1420084486,1771668245,388801304,1068136414,1092573139,1856495186,269680223,949234329,1176570516,1743075739,424679830,836160848,1331948893,1624990940,510543057,921210903,1214099482,1064814657,1103292492,1766079626,401677447,944346374,1190966539,1853514189,282018240,822833871,1337873090,1731757572,428713481,909455240,1216352133,1611062083,515111758,596557149,1564187984,1975339414,185100699,615571482,1510326295,1921193169,204879068,770836435,1397172190,2076308248,91542293,718035604,1417247385,2097131103,38440530,109388409,2016412276,1354159794,772011711,29065022,2131648307,1468566517,691907576,150575351,1984739578,1590324284,545213489,264750512,1903355325,1509175675,658575734,444356453,1690924904,1280287662,855278499,490867234,1677142575,1265762025,902094564,335605227,1790299622,1110645024,1015429421,322875564,1837863073,1158497383,1001940074]),Eo=64,Ph=4,Bi=4096,Gf=65536,Oh=127;function Ih(e){let t=e.byteLength;if(t===0)return null;let n=(t-1)/16|0;if(n===0)return null;let r=n>>>2;r<16&&(r=16),r=$h(r);let o=r-1,s=new Uint32Array(r),i=[],a=-1>>>0;for(let u=n*16-16;u>=0;u-=16){let m=0;for(let h=1;h<=16;h++)m=(m<<8|e[u+h])^ko[m>>>23];if(m=m>>>0,m===a)i[i.length-1].ptr=u+16;else{a=m;let h=m&o;i.push({ptr:u+16,val:m}),s[h]++}}let c=new Map;for(let u of i){let m=u.val&o,h=c.get(m);h||(h=[],c.set(m,h)),h.push(u)}for(let[u,m]of c){if(m.length<=Eo)continue;let h=[],p=m.length/Eo;for(let g=0;g<Eo;g++)h.push(m[Math.floor(g*p)]);c.set(u,h),s[u]=Eo}let f=new Uint32Array(r+1),l=[],d=0;for(let u=0;u<r;u++){f[u]=d;let m=c.get(u);if(m){for(let h of m)l.push(h);d+=m.length}}return f[r]=d,{src:e,hashMask:o,buckets:f,entries:l}}function Sh(e,t,n){if(!e||t.byteLength===0)return null;let r=e.src.byteLength,o=t.byteLength,s=e.src,i=new Uint8Array(Math.max(o,1024)),a=0;function c(p){for(;a+p>i.length;){let g=new Uint8Array(i.length*2);g.set(i),i=g}}a=_f(i,a,r),a=_f(i,a,o),c(18),a++;let f=0,l=0,d=Math.min(16,o);for(let p=0;p<d;p++)i[a++]=t[p],f=(f<<8|t[p])^ko[f>>>23],l++;f=f>>>0;let u=d,m=0,h=0;for(;u<o;){if(h<Bi){f^=Ch[t[u-16]],f=((f<<8|t[u])^ko[f>>>23])>>>0;let p=f&e.hashMask,g=e.buckets[p],w=e.buckets[p+1];for(let y=g;y<w;y++){let x=e.entries[y];if(x.val!==f)continue;let b=x.ptr,k=s.byteLength-b,E=o-u;if(k>E&&(k=E),k<=h)break;let R=0;for(;R<k&&s[b+R]===t[u+R];)R++;if(R>h&&(h=R,m=b,h>=Bi))break}}if(h<Ph)c(2),l===0&&a++,i[a++]=t[u++],l++,l===Oh&&(i[a-l-1]=l,l=0),h=0;else{if(l>0){for(;m>0&&s[m-1]===t[u-1];)if(h++,m--,u--,a--,!(--l>0)){a--,l=-1;break}l>0&&(i[a-l-1]=l),l=0}let p=h>Gf?h-Gf:0;h-=p,c(8);let g=a++,w=128;if(m&255&&(i[a++]=m&255,w|=1),m&65280&&(i[a++]=m>>>8&255,w|=2),m&16711680&&(i[a++]=m>>>16&255,w|=4),m&4278190080&&(i[a++]=m>>>24&255,w|=8),h&255&&(i[a++]=h&255,w|=16),h&65280&&(i[a++]=h>>>8&255,w|=32),i[g]=w,u+=h,m+=h,h=p,m>4294967295&&(h=0),h<Bi){f=0;for(let y=-16;y<0;y++)f=(f<<8|t[u+y])^ko[f>>>23];f=f>>>0}}if(n&&a>n)return null}return l>0&&(i[a-l-1]=l),n&&a>n?null:i.subarray(0,a)}var Lf={blob:0,tree:1,commit:2,tag:3};function Ro(e,t){let n=t?.window??10,r=t?.depth??50,o=e.slice().sort((f,l)=>{let d=Lf[f.type]??99,u=Lf[l.type]??99;return d!==u?d-u:l.content.byteLength-f.content.byteLength}),s=new Map,i=[],a=[],c=[];for(let f=0;f<o.length;f++){let l=o[f],d={hash:l.hash,type:l.type,content:l.content,depth:0},u=null,m=null,h=Math.max(0,f-n);for(let p=f-1;p>=h;p--){let g=o[p];if(g.type!==l.type||(s.get(g.hash)?.depth??0)>=r||l.content.byteLength<g.content.byteLength>>>5)continue;let x=a[p-h]??null;if(!x)continue;let b=u?u.byteLength:l.content.byteLength/2|0;if(b<16)continue;let k=Sh(x,l.content,b);k&&(!u||k.byteLength<u.byteLength)&&(u=k,m=g.hash)}if(u&&m){d.delta=u,d.deltaBase=m;let p=s.get(m);d.depth=(p?.depth??0)+1}s.set(l.hash,d),i.push(d),a.length>=n&&(a.shift(),c.shift()),a.push(Ih(l.content)),c.push(l.hash)}return i}function $h(e){let t=e;return t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t++,t<16?16:t}function _f(e,t,n){let r=n;do{let o=r&127;r>>>=7,r>0&&(o|=128),e[t++]=o}while(r>0);return t}Br();ue();ie();un();Kr();Ns();async function Th(e,t,n,r,o){let s=o??r,i=new Set;for(let l of n)await ds(e,l,i,s);let a=[...t];if(o&&r)for(let l of o)try{let d=await j(e,l);for(let u of d.parents)i.has(u)||a.push(u)}catch{}let c=[],f=new Set;for(let l of a)await us(e,l,i,f,c,r);return{count:c.length,objects:vh(c)}}async function Ir(e,t,n,r,o){let{count:s,objects:i}=await Th(e,t,n,r,o);return{count:s,objects:Hh(e,i)}}async function*vh(e){for(let t of e)yield t}async function*Hh(e,t){for await(let n of t){let r=await we(e,n.hash);yield{hash:n.hash,type:n.type,content:r.content}}}async function Sr(e){let t=[];for await(let n of e.objects)t.push(n);return t}async function ds(e,t,n,r){if(n.has(t)||(n.add(t),!await Kt(e,t)))return;let o=await we(e,t);switch(o.type){case"commit":{let s=en(o.content);if(await ds(e,s.tree,n,r),!r?.has(t))for(let i of s.parents)await ds(e,i,n,r);break}case"tree":{let s=Hn(o.content);for(let i of s.entries)await ds(e,i.hash,n,r);break}case"tag":{let s=mn(o.content);await ds(e,s.object,n,r);break}case"blob":break}}async function us(e,t,n,r,o,s){if(r.has(t)||n.has(t))return;r.add(t);let i=await we(e,t);switch(o.push({hash:t,type:i.type}),i.type){case"commit":{let a=en(i.content);if(await us(e,a.tree,n,r,o,s),!s?.has(t))for(let c of a.parents)await us(e,c,n,r,o,s);break}case"tree":{let a=Hn(i.content);for(let c of a.entries)await us(e,c.hash,n,r,o,s);break}case"tag":{let a=mn(i.content);await us(e,a.object,n,r,o,s);break}case"blob":break}}var Ah=new TextEncoder,xo=new TextDecoder,Nf=65520,Dh=new Uint8Array([48,48,48,48]);function Rn(e){let t=typeof e=="string"?Ah.encode(e):e,n=4+t.byteLength;if(n>Nf)throw new Error(`pkt-line too long: ${n} bytes (max ${Nf})`);let r=n.toString(16).padStart(4,"0"),o=new Uint8Array(n);return o[0]=r.charCodeAt(0),o[1]=r.charCodeAt(1),o[2]=r.charCodeAt(2),o[3]=r.charCodeAt(3),o.set(t,4),o}function Wi(){return Dh.slice()}function Co(...e){let t=0;for(let o of e)t+=o.byteLength;let n=new Uint8Array(t),r=0;for(let o of e)n.set(o,r),r+=o.byteLength;return n}function $r(e){let t=[],n=0;for(;n<e.byteLength;){if(n+4>e.byteLength)throw new Error("Truncated pkt-line header");let r=xo.decode(e.subarray(n,n+4)),o=parseInt(r,16);if(Number.isNaN(o))throw new Error(`Invalid pkt-line length: ${r}`);if(o===0){t.push({type:"flush"}),n+=4;continue}if(o<4)throw new Error(`Invalid pkt-line length: ${o}`);if(n+o>e.byteLength)throw new Error(`Truncated pkt-line: need ${o} bytes at offset ${n}, have ${e.byteLength-n}`);t.push({type:"data",data:e.subarray(n+4,n+o)}),n+=o}return t}function Po(e){if(e.type==="flush")return"";let t=xo.decode(e.data);return t.endsWith(`
|
|
343
|
-
`)?t.slice(0,-1):t}var Mh=1,jh=2,Gh=3;function qi(e){let t=[],n=[],r=[],o=0;for(let a of e){if(a.type==="flush"||a.data.byteLength===0)continue;let c=a.data[0];if(c===void 0)continue;let f=a.data.subarray(1);switch(c){case Mh:t.push(f),o+=f.byteLength;break;case jh:n.push(xo.decode(f));break;case Gh:r.push(xo.decode(f));break;default:break}}let s=new Uint8Array(o),i=0;for(let a of t)s.set(a,i),i+=a.byteLength;return{packData:s,progress:n,errors:r}}dt();function zi(e){return e?e.type==="bearer"?{Authorization:`Bearer ${e.token}`}:{Authorization:`Basic ${btoa(`${e.username}:${e.password}`)}`}:{}}async function Ki(e,t,n,r=globalThis.fetch){let o=e.replace(/\/+$/,""),s=await r(`${o}/info/refs?service=${t}`,{headers:{...zi(n),"User-Agent":"just-git/1.0"}});if(!s.ok)throw new Error(`HTTP ${s.status} discovering refs at ${o}`);let i=s.headers.get("content-type")??"",a=`application/x-${t}-advertisement`,c=new Uint8Array(await s.arrayBuffer());if(!i.startsWith(a)){let l=new TextDecoder().decode(c.subarray(0,5));if(!/^[0-9a-f]{4}#/.test(l))throw new Error(`Server does not support smart HTTP (Content-Type: ${i})`)}let f
|
|
342
|
+
`)}async function yo(e){return(await Or(e)).size>0}async function Ir(e,t,n){let r=n??await Or(e);for(let o of t.shallow)r.add(o);for(let o of t.unshallow)r.delete(o);await xh(e,r)}async function jf(e,t,n,r){if(n>=ls)return{shallow:[],unshallow:[...r]};let o=new Map,s=[];for(let f of t)!o.has(f)&&await Kt(e,f)&&(o.set(f,1),s.push({hash:f,level:1}));let i=new Set,a=0;for(;a<s.length;){let{hash:f,level:l}=s[a++];if(l>=n){i.add(f);continue}let d;try{d=await j(e,f)}catch{continue}for(let u of d.parents)!o.has(u)&&await Kt(e,u)&&(o.set(u,l+1),s.push({hash:u,level:l+1}))}let c=[];for(let f of r){let l=o.get(f);l!==void 0&&l<n&&c.push(f)}return{shallow:[...i],unshallow:c}}Ne();Sn();dt();ie();var ko=new Uint32Array([0,2874782929,1454598562,4260027763,104818581,2909197124,1351355959,4225088230,209637162,2804382715,1523426952,4053013081,172075199,2702711918,1559413021,4155209164,419274324,3013880453,1313798134,3843506983,516094401,3046853904,1215402083,3811058866,344150398,3218793903,1110456540,3916008461,314324715,3118826042,1141858121,4015451032,838548648,2594343033,1732793610,3423723995,935615293,2627596268,1635201695,3392046670,1032188802,2531018579,1798740512,3228511985,1002083351,2430804166,1829371317,3327150436,688300796,2187269677,2142620510,3572268943,792315241,2220913080,2039131339,3537049626,628649430,2384582919,1942684788,3633492133,591858243,2283716242,1978950625,3735934768,1677097296,3366964609,893718770,2652677155,1707679429,3465587220,863663975,2552480694,1871230586,3302032043,960225240,2455923465,1773654511,3270403390,1057273933,2489126044,2064377604,3495056341,767069862,2262907511,2100592785,3597481024,730327347,2162056674,2004166702,3693911295,566641036,2325738845,1900695483,3658742634,670639641,2359333576,1376601592,4183093545,79572058,2951190667,1412571757,4285241020,42027983,2849570590,1584630482,4113186307,146858864,2744735649,1481436487,4078262678,251626725,2779131956,1257298860,3785977725,474198542,3071936223,1288682553,3885369576,444388763,2972016970,1183716486,3990331479,272465188,3143944693,1085371155,3957901250,369236657,3176902240,1823819377,3354194592,973483987,2438961922,1787437540,3251868981,1010387014,2539715735,1623951707,3415358858,913891577,2636207144,1727327950,3450690079,809994092,2602447805,1950930981,3742461172,586920327,2309096790,1920450480,3643673441,616879634,2409456323,2016810767,3547309022,780500653,2245839484,2114547866,3578840139,683284792,2212736489,1565424345,4128755208,201134971,2695145386,1534139724,4029196701,230847726,2795225151,1362146803,4201185570,126082129,2899994752,1460654694,4233520823,29146052,2867138325,1169417357,4008333404,318803247,3092855294,1133282072,3906287561,356510394,3194379883,1238182823,3801390966,528368133,3022517972,1341279282,3836475619,423699856,2987954497,256065313,2753203184,1508923011,4071219794,159144116,2720394341,1607414038,4103505351,54390795,2825143514,1435408809,4275514744,84055966,2925208399,1404173884,4175973101,398369141,3169260964,1091422423,3931405318,293717728,3134747185,1194504002,3966442387,465595999,2962872974,1299384317,3861558060,503253450,3064380699,1263296616,3759527097,1052246921,2514597720,1745578539,3276988154,948397084,2480853197,1848905150,3312302447,851889315,2577365106,1685431553,3475771856,888777526,2678071271,1649066644,3373495877,642096605,2367432972,1895232639,3685695662,544930376,2334346905,1992922090,3717211963,708530935,2170742310,2089302869,3620835204,738473314,2271052211,2058837184,3522095121]),Ph=new Uint32Array([0,2125799437,1446245579,679924934,121527623,2039184714,1359849868,800622977,243055246,1892260483,1481592389,653946440,155379657,2012727236,1601245954,566506255,486110492,1649169681,1254785495,880779738,466036827,1701972054,1307892880,859962525,310759314,1815146399,1152793433,973282132,364614357,1796125400,1133012510,1027425811,972220984,1195887157,1874927347,292830974,1053603711,1081710450,1761559476,373973945,932073654,1228632251,1639818365,520651888,816844273,1308962300,1719925050,406247735,621518628,1539227433,1933077487,227363810,573948515,1551950446,1946564264,179508901,729228714,1438778791,2101662049,66187628,743012589,1392269536,2054851622,80718891,1944441968,223409277,634790075,1533214902,1960544567,175024442,585661948,1549622769,2107207422,53235443,732600885,1428142648,2057778105,68293556,747947890,1377953663,1864147308,296321377,959403431,1201305002,1747123243,379051046,1041303776,1084500205,1633688546,534068207,928247593,1239863076,1717454501,418080424,812495470,1322816099,1243037256,883039813,472173187,1653729934,1294557967,865878786,454727620,1706014665,1147897030,987669707,307785741,1827491840,1129699713,1038154124,359017802,1808993607,1458457428,677079897,14532511,2120785810,1372591635,795162142,132375256,2035729109,1486025178,640143831,245433617,1880368412,1605151901,555322512,161437782,1999272027,1284643889,841432124,446818554,1679083767,1269580150,890855803,497006013,1663735216,1122936511,1012631218,350048884,1785229945,1171323896,996531189,333647667,1834364734,1349216557,786319648,106470886,2028846571,1465201770,702551143,23511201,2144592044,1578619811,547550126,136587112,1989216101,1495895780,664579817,253393455,1907317282,1969288713,198563332,592642754,1575363279,1918806862,216763203,611147653,1524137864,2065452167,94989450,758102092,1402640449,2082607552,43463117,705815819,1420084486,1771668245,388801304,1068136414,1092573139,1856495186,269680223,949234329,1176570516,1743075739,424679830,836160848,1331948893,1624990940,510543057,921210903,1214099482,1064814657,1103292492,1766079626,401677447,944346374,1190966539,1853514189,282018240,822833871,1337873090,1731757572,428713481,909455240,1216352133,1611062083,515111758,596557149,1564187984,1975339414,185100699,615571482,1510326295,1921193169,204879068,770836435,1397172190,2076308248,91542293,718035604,1417247385,2097131103,38440530,109388409,2016412276,1354159794,772011711,29065022,2131648307,1468566517,691907576,150575351,1984739578,1590324284,545213489,264750512,1903355325,1509175675,658575734,444356453,1690924904,1280287662,855278499,490867234,1677142575,1265762025,902094564,335605227,1790299622,1110645024,1015429421,322875564,1837863073,1158497383,1001940074]),Eo=64,Ch=4,Bi=4096,Gf=65536,Oh=127;function Ih(e){let t=e.byteLength;if(t===0)return null;let n=(t-1)/16|0;if(n===0)return null;let r=n>>>2;r<16&&(r=16),r=Sh(r);let o=r-1,s=new Uint32Array(r),i=[],a=-1>>>0;for(let u=n*16-16;u>=0;u-=16){let m=0;for(let h=1;h<=16;h++)m=(m<<8|e[u+h])^ko[m>>>23];if(m=m>>>0,m===a)i[i.length-1].ptr=u+16;else{a=m;let h=m&o;i.push({ptr:u+16,val:m}),s[h]++}}let c=new Map;for(let u of i){let m=u.val&o,h=c.get(m);h||(h=[],c.set(m,h)),h.push(u)}for(let[u,m]of c){if(m.length<=Eo)continue;let h=[],p=m.length/Eo;for(let g=0;g<Eo;g++)h.push(m[Math.floor(g*p)]);c.set(u,h),s[u]=Eo}let f=new Uint32Array(r+1),l=[],d=0;for(let u=0;u<r;u++){f[u]=d;let m=c.get(u);if(m){for(let h of m)l.push(h);d+=m.length}}return f[r]=d,{src:e,hashMask:o,buckets:f,entries:l}}function $h(e,t,n){if(!e||t.byteLength===0)return null;let r=e.src.byteLength,o=t.byteLength,s=e.src,i=new Uint8Array(Math.max(o,1024)),a=0;function c(p){for(;a+p>i.length;){let g=new Uint8Array(i.length*2);g.set(i),i=g}}a=_f(i,a,r),a=_f(i,a,o),c(18),a++;let f=0,l=0,d=Math.min(16,o);for(let p=0;p<d;p++)i[a++]=t[p],f=(f<<8|t[p])^ko[f>>>23],l++;f=f>>>0;let u=d,m=0,h=0;for(;u<o;){if(h<Bi){f^=Ph[t[u-16]],f=((f<<8|t[u])^ko[f>>>23])>>>0;let p=f&e.hashMask,g=e.buckets[p],w=e.buckets[p+1];for(let y=g;y<w;y++){let x=e.entries[y];if(x.val!==f)continue;let b=x.ptr,k=s.byteLength-b,E=o-u;if(k>E&&(k=E),k<=h)break;let R=0;for(;R<k&&s[b+R]===t[u+R];)R++;if(R>h&&(h=R,m=b,h>=Bi))break}}if(h<Ch)c(2),l===0&&a++,i[a++]=t[u++],l++,l===Oh&&(i[a-l-1]=l,l=0),h=0;else{if(l>0){for(;m>0&&s[m-1]===t[u-1];)if(h++,m--,u--,a--,!(--l>0)){a--,l=-1;break}l>0&&(i[a-l-1]=l),l=0}let p=h>Gf?h-Gf:0;h-=p,c(8);let g=a++,w=128;if(m&255&&(i[a++]=m&255,w|=1),m&65280&&(i[a++]=m>>>8&255,w|=2),m&16711680&&(i[a++]=m>>>16&255,w|=4),m&4278190080&&(i[a++]=m>>>24&255,w|=8),h&255&&(i[a++]=h&255,w|=16),h&65280&&(i[a++]=h>>>8&255,w|=32),i[g]=w,u+=h,m+=h,h=p,m>4294967295&&(h=0),h<Bi){f=0;for(let y=-16;y<0;y++)f=(f<<8|t[u+y])^ko[f>>>23];f=f>>>0}}if(n&&a>n)return null}return l>0&&(i[a-l-1]=l),n&&a>n?null:i.subarray(0,a)}var Lf={blob:0,tree:1,commit:2,tag:3};function Ro(e,t){let n=t?.window??10,r=t?.depth??50,o=e.slice().sort((f,l)=>{let d=Lf[f.type]??99,u=Lf[l.type]??99;return d!==u?d-u:l.content.byteLength-f.content.byteLength}),s=new Map,i=[],a=[],c=[];for(let f=0;f<o.length;f++){let l=o[f],d={hash:l.hash,type:l.type,content:l.content,depth:0},u=null,m=null,h=Math.max(0,f-n);for(let p=f-1;p>=h;p--){let g=o[p];if(g.type!==l.type||(s.get(g.hash)?.depth??0)>=r||l.content.byteLength<g.content.byteLength>>>5)continue;let x=a[p-h]??null;if(!x)continue;let b=u?u.byteLength:l.content.byteLength/2|0;if(b<16)continue;let k=$h(x,l.content,b);k&&(!u||k.byteLength<u.byteLength)&&(u=k,m=g.hash)}if(u&&m){d.delta=u,d.deltaBase=m;let p=s.get(m);d.depth=(p?.depth??0)+1}s.set(l.hash,d),i.push(d),a.length>=n&&(a.shift(),c.shift()),a.push(Ih(l.content)),c.push(l.hash)}return i}function Sh(e){let t=e;return t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t++,t<16?16:t}function _f(e,t,n){let r=n;do{let o=r&127;r>>>=7,r>0&&(o|=128),e[t++]=o}while(r>0);return t}Br();ue();ie();un();Kr();Ns();async function Th(e,t,n,r,o){let s=o??r,i=new Set;for(let l of n)await ds(e,l,i,s);let a=[...t];if(o&&r)for(let l of o)try{let d=await j(e,l);for(let u of d.parents)i.has(u)||a.push(u)}catch{}let c=[],f=new Set;for(let l of a)await us(e,l,i,f,c,r);return{count:c.length,objects:vh(c)}}async function $r(e,t,n,r,o){let{count:s,objects:i}=await Th(e,t,n,r,o);return{count:s,objects:Hh(e,i)}}async function*vh(e){for(let t of e)yield t}async function*Hh(e,t){for await(let n of t){let r=await we(e,n.hash);yield{hash:n.hash,type:n.type,content:r.content}}}async function Sr(e){let t=[];for await(let n of e.objects)t.push(n);return t}async function ds(e,t,n,r){if(n.has(t)||(n.add(t),!await Kt(e,t)))return;let o=await we(e,t);switch(o.type){case"commit":{let s=en(o.content);if(await ds(e,s.tree,n,r),!r?.has(t))for(let i of s.parents)await ds(e,i,n,r);break}case"tree":{let s=Hn(o.content);for(let i of s.entries)await ds(e,i.hash,n,r);break}case"tag":{let s=mn(o.content);await ds(e,s.object,n,r);break}case"blob":break}}async function us(e,t,n,r,o,s){if(r.has(t)||n.has(t))return;r.add(t);let i=await we(e,t);switch(o.push({hash:t,type:i.type}),i.type){case"commit":{let a=en(i.content);if(await us(e,a.tree,n,r,o,s),!s?.has(t))for(let c of a.parents)await us(e,c,n,r,o,s);break}case"tree":{let a=Hn(i.content);for(let c of a.entries)await us(e,c.hash,n,r,o,s);break}case"tag":{let a=mn(i.content);await us(e,a.object,n,r,o,s);break}case"blob":break}}var Ah=new TextEncoder,xo=new TextDecoder,Nf=65520,Dh=new Uint8Array([48,48,48,48]);function Rn(e){let t=typeof e=="string"?Ah.encode(e):e,n=4+t.byteLength;if(n>Nf)throw new Error(`pkt-line too long: ${n} bytes (max ${Nf})`);let r=n.toString(16).padStart(4,"0"),o=new Uint8Array(n);return o[0]=r.charCodeAt(0),o[1]=r.charCodeAt(1),o[2]=r.charCodeAt(2),o[3]=r.charCodeAt(3),o.set(t,4),o}function Wi(){return Dh.slice()}function Po(...e){let t=0;for(let o of e)t+=o.byteLength;let n=new Uint8Array(t),r=0;for(let o of e)n.set(o,r),r+=o.byteLength;return n}function Tr(e){let t=[],n=0;for(;n<e.byteLength;){if(n+4>e.byteLength)throw new Error("Truncated pkt-line header");let r=xo.decode(e.subarray(n,n+4)),o=parseInt(r,16);if(Number.isNaN(o))throw new Error(`Invalid pkt-line length: ${r}`);if(o===0){t.push({type:"flush"}),n+=4;continue}if(o<4)throw new Error(`Invalid pkt-line length: ${o}`);if(n+o>e.byteLength)throw new Error(`Truncated pkt-line: need ${o} bytes at offset ${n}, have ${e.byteLength-n}`);t.push({type:"data",data:e.subarray(n+4,n+o)}),n+=o}return t}function Co(e){if(e.type==="flush")return"";let t=xo.decode(e.data);return t.endsWith(`
|
|
343
|
+
`)?t.slice(0,-1):t}var Mh=1,jh=2,Gh=3;function qi(e){let t=[],n=[],r=[],o=0;for(let a of e){if(a.type==="flush"||a.data.byteLength===0)continue;let c=a.data[0];if(c===void 0)continue;let f=a.data.subarray(1);switch(c){case Mh:t.push(f),o+=f.byteLength;break;case jh:n.push(xo.decode(f));break;case Gh:r.push(xo.decode(f));break;default:break}}let s=new Uint8Array(o),i=0;for(let a of t)s.set(a,i),i+=a.byteLength;return{packData:s,progress:n,errors:r}}dt();function zi(e){return e?e.type==="bearer"?{Authorization:`Bearer ${e.token}`}:{Authorization:`Basic ${btoa(`${e.username}:${e.password}`)}`}:{}}async function Ki(e,t,n,r=globalThis.fetch){let o=e.replace(/\/+$/,""),s=await r(`${o}/info/refs?service=${t}`,{headers:{...zi(n),"User-Agent":"just-git/1.0"}});if(!s.ok)throw new Error(`HTTP ${s.status} discovering refs at ${o}`);let i=s.headers.get("content-type")??"",a=`application/x-${t}-advertisement`,c=new Uint8Array(await s.arrayBuffer());if(!i.startsWith(a)){let l=new TextDecoder().decode(c.subarray(0,5));if(!/^[0-9a-f]{4}#/.test(l))throw new Error(`Server does not support smart HTTP (Content-Type: ${i})`)}let f=Tr(c);return Lh(f,t)}function Lh(e,t){let n=0,r=e[n];r?.type==="data"&&Co(r)===`# service=${t}`&&n++,e[n]?.type==="flush"&&n++;let o=[],s=[],i=new Map;for(;n<e.length;n++){let a=e[n];if(!a||a.type==="flush")break;let c=a.data,f=c.indexOf(0),l;if(f!==-1){l=new TextDecoder().decode(c.subarray(0,f)),s=new TextDecoder().decode(c.subarray(f+1)).replace(/\n$/,"").split(" ").filter(Boolean);for(let p of s)if(p.startsWith("symref=")){let g=p.slice(7),w=g.indexOf(":");w!==-1&&i.set(g.slice(0,w),g.slice(w+1))}}else l=new TextDecoder().decode(c).replace(/\n$/,"");let d=l.indexOf(" ");if(d===-1)continue;let u=l.slice(0,d),m=l.slice(d+1);if(!(u===te&&m==="capabilities^{}")){if(m.endsWith("^{}")){let h=m.slice(0,-3),p=o.find(g=>g.name===h);p&&(p.peeledHash=u);continue}o.push({name:m,hash:u})}}return{refs:o,capabilities:s,symrefs:i}}var _h=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","include-tag","shallow"];async function Ff(e,t,n,r,o,s=globalThis.fetch,i){if(t.length===0)throw new Error("fetchPack requires at least one want");let a=Bf(r,_h),c=[];c.push(Rn(`want ${t[0]} ${a.join(" ")}
|
|
344
344
|
`));for(let m=1;m<t.length;m++)c.push(Rn(`want ${t[m]}
|
|
345
345
|
`));if(i?.existingShallows)for(let m of i.existingShallows)c.push(Rn(`shallow ${m}
|
|
346
346
|
`));i?.depth!==void 0&&c.push(Rn(`deepen ${i.depth}
|
|
347
347
|
`)),c.push(Wi());for(let m of n)c.push(Rn(`have ${m}
|
|
348
348
|
`));c.push(Rn(`done
|
|
349
|
-
`));let f=
|
|
349
|
+
`));let f=Po(...c),l=e.replace(/\/+$/,""),d=await s(`${l}/git-upload-pack`,{method:"POST",headers:{"Content-Type":"application/x-git-upload-pack-request",...zi(o),"User-Agent":"just-git/1.0"},body:f});if(!d.ok)throw new Error(`HTTP ${d.status} fetching pack from ${l}`);let u=new Uint8Array(await d.arrayBuffer());return Nh(u,a.includes("side-band-64k"))}function Nh(e,t){let n=Tr(e),r=[],o=[],s=[],i=0;for(let d=0;d<n.length;d++){let u=n[d];if(!u||u.type==="flush"){i=d+1;continue}if(u.type!=="data")continue;let m=Co(u);if(m.startsWith("shallow "))o.push(m.slice(8)),i=d+1;else if(m.startsWith("unshallow "))s.push(m.slice(10)),i=d+1;else if(m.startsWith("ACK ")||m==="NAK")r.push(m),i=d+1;else{i=d;break}}let a=n.slice(i);if(t){let{packData:d,progress:u,errors:m}=qi(a);if(m.length>0)throw new Error(`Remote error: ${m.join("")}`);return{packData:d,acks:r,progress:u,shallowLines:o,unshallowLines:s}}let c=0;for(let d of a)d.type==="data"&&(c+=d.data.byteLength);let f=new Uint8Array(c),l=0;for(let d of a)d.type==="data"&&(f.set(d.data,l),l+=d.data.byteLength);return{packData:f,acks:r,progress:[],shallowLines:o,unshallowLines:s}}var Fh=["report-status","side-band-64k","ofs-delta","delete-refs"];async function Uf(e,t,n,r,o,s=globalThis.fetch){if(t.length===0)throw new Error("pushPack requires at least one command");let i=Bf(r,Fh),a=[],[c,...f]=t;if(!c)throw new Error("pushPack requires at least one command");a.push(Rn(`${c.oldHash} ${c.newHash} ${c.refName}\0${i.join(" ")}
|
|
350
350
|
`));for(let h of f)a.push(Rn(`${h.oldHash} ${h.newHash} ${h.refName}
|
|
351
|
-
`));a.push(Wi());let l;if(n&&n.byteLength>0){let h=
|
|
351
|
+
`));a.push(Wi());let l;if(n&&n.byteLength>0){let h=Po(...a);l=new Uint8Array(h.byteLength+n.byteLength),l.set(h,0),l.set(n,h.byteLength)}else l=Po(...a);let d=e.replace(/\/+$/,""),u=await s(`${d}/git-receive-pack`,{method:"POST",headers:{"Content-Type":"application/x-git-receive-pack-request",...zi(o),"User-Agent":"just-git/1.0"},body:l});if(!u.ok)throw new Error(`HTTP ${u.status} pushing to ${d}`);let m=new Uint8Array(await u.arrayBuffer());return i.includes("report-status")?Uh(m,i.includes("side-band-64k")):{unpackOk:!0,refResults:[],progress:[]}}function Uh(e,t){let n,r=[];if(t){let a=Tr(e),{packData:c,progress:f,errors:l}=qi(a);if(l.length>0)throw new Error(`Remote error: ${l.join("")}`);r=f,n=Tr(c)}else n=Tr(e);let o=!1,s,i=[];for(let a of n){if(a.type==="flush")break;let c=Co(a);if(c.startsWith("unpack "))o=c==="unpack ok",o||(s=c.slice(7));else if(c.startsWith("ok "))i.push({name:c.slice(3),ok:!0});else if(c.startsWith("ng ")){let f=c.slice(3),l=f.indexOf(" ");l!==-1?i.push({name:f.slice(0,l),ok:!1,error:f.slice(l+1)}):i.push({name:f,ok:!1})}}return{unpackOk:o,unpackError:s,refResults:i,progress:r}}function Bf(e,t){let n=new Set(e.map(o=>o.split("=",1)[0]??o)),r=[];for(let o of t)n.has(o)&&r.push(o);return r.push("agent=just-git/1.0"),r}var ms=class{constructor(t,n){this.local=t;this.remote=n}headTarget;async advertiseRefs(){let t=await ge(this.remote),n=[];for(let s of t)n.push({name:s.name,hash:s.hash});let r=await F(this.remote,"HEAD");r&&n.push({name:"HEAD",hash:r});let o=await Q(this.remote);return o?.type==="symbolic"&&(this.headTarget=o.target),n}async fetch(t,n,r){let o=await this.advertiseRefs();if(t.length===0)return{remoteRefs:o,objectCount:0};let s,i,a;if(r?.depth!==void 0){let l=r.existingShallows??new Set,d=await jf(this.remote,t,r.depth,l);i=d,s=new Set(d.shallow),l.size>0&&(a=l)}let c=await Vi(this.remote,t,n,s,a);if(!c)return{remoteRefs:o,objectCount:0,shallowUpdates:i};let f=await js(this.local,c);return{remoteRefs:o,objectCount:f,shallowUpdates:i}}async push(t){let n=[],r=[];for(let s of t)s.newHash!==te&&n.push(s.newHash),s.oldHash&&r.push(s.oldHash);if(n.length>0){let s=await Vi(this.local,n,r);s&&await js(this.remote,s)}let o=[];for(let s of t)try{let i=s.newHash===te,a=s.oldHash??null;if(!i&&!s.ok&&s.oldHash&&!await En(this.remote,s.oldHash,s.newHash)){o.push({...s,ok:!1,error:`non-fast-forward update rejected for ${s.name}`});continue}let c=i?null:{type:"direct",hash:s.newHash};if(!await this.remote.refStore.compareAndSwapRef(s.name,a,c)){o.push({...s,ok:!1,error:`failed to lock ref '${s.name}'`});continue}this.remote.hooks&&(i&&s.oldHash?this.remote.hooks.onRefDelete?.({repo:this.remote,ref:s.name,oldHash:s.oldHash}):i||this.remote.hooks.onRefUpdate?.({repo:this.remote,ref:s.name,oldHash:s.oldHash,newHash:s.newHash})),o.push({...s,ok:!0})}catch(i){o.push({...s,ok:!1,error:i instanceof Error?i.message:String(i)})}return{updates:o}}},hs=class{constructor(t,n,r,o){this.local=t;this.url=n;this.auth=r;this.fetchFn=o}headTarget;cachedFetchCaps=null;cachedPushCaps=null;cachedFetchRefs=null;async advertiseRefs(){let t=await Ki(this.url,"git-upload-pack",this.auth,this.fetchFn);this.cachedFetchCaps=t.capabilities,this.cachedFetchRefs=t.refs;let n=t.symrefs.get("HEAD");return n&&(this.headTarget=n),t.refs}async ensureFetchDiscovery(){return(!this.cachedFetchCaps||!this.cachedFetchRefs)&&await this.advertiseRefs(),{caps:this.cachedFetchCaps,refs:this.cachedFetchRefs}}async ensurePushDiscovery(){if(!this.cachedPushCaps){let t=await Ki(this.url,"git-receive-pack",this.auth,this.fetchFn);this.cachedPushCaps=t.capabilities}return this.cachedPushCaps}async fetch(t,n,r){let{caps:o,refs:s}=await this.ensureFetchDiscovery();if(t.length===0)return{remoteRefs:s,objectCount:0};let i=await Ff(this.url,t,n,o,this.auth,this.fetchFn,r);if(i.packData.byteLength===0)return{remoteRefs:s,objectCount:0};let a=await js(this.local,i.packData),c=i.shallowLines.length>0||i.unshallowLines.length>0?{shallow:i.shallowLines,unshallow:i.unshallowLines}:void 0;return{remoteRefs:s,objectCount:a,shallowUpdates:c}}async push(t){for(let l of t)if(l.oldHash&&l.oldHash!==te&&l.newHash!==te&&!l.ok&&!await En(this.local,l.oldHash,l.newHash))return{updates:t.map(u=>u===l?{...u,ok:!1,error:"non-fast-forward"}:{...u,ok:!1,error:"atomic push failed"})};let n=await this.ensurePushDiscovery(),r=t.map(l=>({oldHash:l.oldHash??te,newHash:l.newHash,refName:l.name})),o=[],s=[],i=!1;for(let l of t)l.newHash!==te&&(o.push(l.newHash),i=!0),l.oldHash&&l.oldHash!==te&&s.push(l.oldHash);let a=null;i&&(a=await Vi(this.local,o,s)??null);let c=await Uf(this.url,r,a,n,this.auth,this.fetchFn);return{updates:t.map(l=>{let d=c.refResults.find(h=>h.name===l.name),u=d?.ok??c.unpackOk,m=d?.error??(!u&&c.unpackError?`unpack failed: ${c.unpackError}`:void 0);return{...l,ok:u,error:m}})}}};async function Vi(e,t,n,r,o){let s=await $r(e,t,n,r,o);if(s.count===0)return;let i=await Sr(s),c=Ro(i).map(l=>({hash:l.hash,type:l.type,content:l.content,delta:l.delta,deltaBaseHash:l.deltaBase})),{data:f}=await Ds(c);return f}async function Bh(e,t){let r=(await he(e))[`remote "${t}"`];return r?.url?{name:t,url:r.url,fetchRefspec:r.fetch??"+refs/heads/*:refs/remotes/origin/*"}:null}function Yi(e){return e.startsWith("http://")||e.startsWith("https://")}function Wf(e){return e.startsWith("ssh://")||e.startsWith("git@")||e.startsWith("git+ssh://")}function qf(e,t){if(t===void 0)return null;if(t===!1)return"network access is disabled";if(!t.allowed)return null;if(t.allowed.length===0)return"network access is disabled";let n;try{n=new URL(e).hostname}catch{return`network policy: access to '${e}' is not allowed`}for(let r of t.allowed)if(Yi(r)){if(e===r||e.startsWith(r))return null}else if(n===r)return null;return`network policy: access to '${e}' is not allowed`}function Wh(e){let t=e.get("GIT_HTTP_BEARER_TOKEN");if(t)return{type:"bearer",token:t};let n=e.get("GIT_HTTP_USER"),r=e.get("GIT_HTTP_PASSWORD");if(n&&r)return{type:"basic",username:n,password:r}}async function zf(e,t,n){if(e.credentialProvider){let r=await e.credentialProvider(t);if(r)return r}return Wh(n)}async function Kf(e,t,n,r){if(Yi(t)){let o=qf(t,e.networkPolicy);if(o)throw new Error(o);let s=await zf(e,t,n);return new hs(e,t,s,e.fetchFn)}if(!r&&e.resolveRemote&&(r=await e.resolveRemote(t)??void 0),!r)throw Wf(t)?new Error(`SSH transport is not supported. Use an HTTPS URL instead of '${t}'.`):new Error(`'${t}' does not appear to be a git repository`);return new ms(e,r)}async function vr(e,t,n){let r=await Bh(e,t);if(!r)return null;if(Yi(r.url)){let s=qf(r.url,e.networkPolicy);if(s)throw new Error(s);let i=n?await zf(e,r.url,n):void 0;return{transport:new hs(e,r.url,i,e.fetchFn),config:r}}let o=(e.resolveRemote?await e.resolveRemote(r.url):null)??await Xn(e.fs,r.url);if(!o){if(Wf(r.url))throw new Error(`SSH transport is not supported. Use an HTTPS URL instead of '${r.url}'.`);return null}return{transport:new ms(e,o),config:r}}ve();tt();function Vf(e,t){e.command("clone",{description:"Clone a repository into a new directory",args:[q.string().name("repository").describe("Repository to clone"),q.string().name("directory").describe("Target directory").optional()],options:{bare:$().describe("Create a bare clone"),branch:J.string().alias("b").describe("Checkout this branch instead of HEAD"),depth:J.number().describe("Create a shallow clone with history truncated to N commits")},handler:async(n,r)=>{let o=n.repository;if(!o)return I("You must specify a repository to clone.");let s=o.startsWith("http://")||o.startsWith("https://"),i=s?o:It(r.cwd,o),a=n.branch,c=n.directory;if(!c){let O=s?o.split("/").pop()??o:Mr(i);O.endsWith(".git")&&(O=O.slice(0,-4)),c=O}let f=It(r.cwd,c),l=await t?.hooks?.preClone?.({repository:o,targetPath:f,bare:n.bare,branch:a??null});if(ee(l))return L(l.message??"");if(await r.fs.exists(f))try{if((await r.fs.readdir(f)).length>0)return I(`destination path '${c}' already exists and is not an empty directory.`)}catch{return I(`destination path '${c}' already exists and is not an empty directory.`)}let d=null;if(!s&&(t?.resolveRemote&&(d=await t.resolveRemote(i)),d||(d=await Xn(r.fs,i)),!d))return I(`repository '${o}' does not exist`);await r.fs.mkdir(f,{recursive:!0});let{ctx:u}=await Gs(r.fs,f,{bare:n.bare}),m=t?{...u,hooks:t.hooks,credentialProvider:t.credentialProvider,identityOverride:t.identityOverride,fetchFn:t.fetchFn,networkPolicy:t.networkPolicy,resolveRemote:t.resolveRemote}:u,h=await he(m);h['remote "origin"']={url:i,fetch:"+refs/heads/*:refs/remotes/origin/*"},await Ye(m,h);let p;try{p=await Kf(m,i,r.env,d??void 0)}catch(O){let H=O instanceof Error?O.message:"";return H.startsWith("network")?I(H):I(`repository '${o}' does not exist`)}let g=await p.advertiseRefs();if(g.length===0)return await t?.hooks?.postClone?.({repo:u,repository:o,targetPath:f,bare:n.bare,branch:a??null}),{stdout:"",stderr:`Cloning into '${c}'...
|
|
352
352
|
warning: You appear to have cloned an empty repository.
|
|
353
|
-
`,exitCode:0};let w=[],y=new Set;for(let O of g)O.name!=="HEAD"&&(y.has(O.hash)||(y.add(O.hash),w.push(O.hash)));let x=n.depth,b=x!==void 0&&x>0?{depth:x}:void 0;if(w.length>0){let O=await p.fetch(w,[],b);O.shallowUpdates&&await
|
|
354
|
-
`,exitCode:0};if(E&&await ze(m,"refs/remotes/origin/HEAD",`refs/remotes/origin/${E}`),E&&R){await X(m,`refs/heads/${E}`,R),await ze(m,"HEAD",`refs/heads/${E}`);let O={oldHash:te,newHash:R,name:
|
|
355
|
-
`,exitCode:0};return await t?.hooks?.postClone?.({repo:m,repository:o,targetPath:f,bare:n.bare,branch:E}),D}})}se();
|
|
353
|
+
`,exitCode:0};let w=[],y=new Set;for(let O of g)O.name!=="HEAD"&&(y.has(O.hash)||(y.add(O.hash),w.push(O.hash)));let x=n.depth,b=x!==void 0&&x>0?{depth:x}:void 0;if(w.length>0){let O=await p.fetch(w,[],b);O.shallowUpdates&&await Ir(m,O.shallowUpdates)}let k=g.find(O=>O.name==="HEAD"),E=null,R=null,C=await Jt(m,r.env),P=`clone: from ${i}`,v=p.headTarget;v?.startsWith("refs/heads/")&&g.some(O=>O.name===v)&&(E=v.slice(11),R=g.find(O=>O.name===v)?.hash??null);for(let O of g)if(O.name!=="HEAD"){if(O.name.startsWith("refs/heads/")){let H=O.name.slice(11),G=`refs/remotes/origin/${H}`;await X(m,G,O.hash),await Ke(m,G,{oldHash:te,newHash:O.hash,name:C.name,email:C.email,timestamp:C.timestamp,tz:C.tz,message:P}),!E&&k&&O.hash===k.hash&&(E=H,R=O.hash)}O.name.startsWith("refs/tags/")&&await X(m,O.name,O.hash)}if(a){let O=g.find(H=>H.name===`refs/heads/${a}`);if(!O)return I(`Remote branch '${a}' not found in upstream origin`);E=a,R=O.hash}if(!E){let O=g.find(H=>H.name.startsWith("refs/heads/"));O&&(E=O.name.slice(11),R=O.hash)}if(n.bare)return E&&await ze(m,"HEAD",`refs/heads/${E}`),await t?.hooks?.postClone?.({repo:m,repository:o,targetPath:f,bare:n.bare,branch:E}),{stdout:"",stderr:`Cloning into bare repository '${c}'...
|
|
354
|
+
`,exitCode:0};if(E&&await ze(m,"refs/remotes/origin/HEAD",`refs/remotes/origin/${E}`),E&&R){await X(m,`refs/heads/${E}`,R),await ze(m,"HEAD",`refs/heads/${E}`);let O={oldHash:te,newHash:R,name:C.name,email:C.email,timestamp:C.timestamp,tz:C.tz,message:P};await Ke(m,`refs/heads/${E}`,O),await Ke(m,"HEAD",O);let H=await he(m);H[`branch "${E}"`]={remote:"origin",merge:`refs/heads/${E}`},await Ye(m,H);let G=await j(m,R);await Tc(m,G.tree);let A=await Ve(m,G.tree),S=vs(A.map(N=>({path:N.path,mode:parseInt(N.mode,8),hash:N.hash,stage:0,stat:Ie()})));await ae(m,S)}let D={stdout:"",stderr:`Cloning into '${c}'...
|
|
355
|
+
`,exitCode:0};return await t?.hooks?.postClone?.({repo:m,repository:o,targetPath:f,bare:n.bare,branch:E}),D}})}se();Ce();ie();un();le();Fe();ue();ve();tt();function qh(e){let t=[],n=[],r=0;for(;r<e.length;){let o=e[r];if(o==="--"){for(;r<e.length;r++)n.push(e[r]);break}if(o==="-m"||o==="--message"){r+1<e.length?(t.push(e[r+1]),r+=2):(n.push(o),r++);continue}if(o.startsWith("--message=")){t.push(o.slice(10)),r++;continue}if(o.startsWith("-")&&!o.startsWith("--")&&o.length>1){let s=o.slice(1),i=s.indexOf("m");if(i!==-1){let a=s.slice(0,i),c=s.slice(i+1);if(a.length>0&&n.push(`-${a}`),c.length>0)t.push(c);else if(r+1<e.length){t.push(e[r+1]),r+=2;continue}r++;continue}}n.push(o),r++}return t.length>0&&n.push("-m",t.join(`
|
|
356
356
|
|
|
357
|
-
`)),n}function Yf(e,t){e.command("commit",{description:"Record changes to the repository",transformArgs:qh,options:{message:J.string().alias("m").describe("Commit message"),file:J.string().alias("F").describe("Read commit message from file ('-' for stdin)"),allowEmpty
|
|
357
|
+
`)),n}function Yf(e,t){e.command("commit",{description:"Record changes to the repository",transformArgs:qh,options:{message:J.string().alias("m").describe("Commit message"),file:J.string().alias("F").describe("Read commit message from file ('-' for stdin)"),allowEmpty:$().describe("Allow creating an empty commit"),amend:$().describe("Amend the previous commit"),noEdit:$().describe("Use the previous commit message without editing"),all:$().alias("a").describe("Auto-stage modified and deleted tracked files")},handler:async(n,r)=>{if(n.message!==void 0&&n.file!==void 0)return I("options '-m' and '-F' cannot be used together");let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=await K(s);if(n.all){let me=Xe(s);if(me)return me;let xe=await Tt(s,i);for(let qe of xe)qe.status==="modified"?i=(await rn(s,i,qe.path)).index:qe.status==="deleted"&&(i=at(i,qe.path));let Ut=new Set(De(i).map(qe=>qe.path)),xn=new Set(i.entries.filter(qe=>qe.stage>0&&!Ut.has(qe.path)).map(qe=>qe.path));for(let qe of xn){let mr=T(s.workTree,qe);await r.fs.exists(mr)?i=(await rn(s,i,qe)).index:i=at(i,qe)}}let a=await F(s,"MERGE_HEAD"),c=await F(s,"CHERRY_PICK_HEAD"),f=await F(s,"REVERT_HEAD"),d=await Gt(s)?await F(s,"REBASE_HEAD"):null,u=n.amend,m=await Z(s);if(u){if(!m)return I("You have nothing yet to amend.");if(a)return I("You are in the middle of a merge -- cannot amend.");if(c)return I("You are in the middle of a cherry-pick -- cannot amend.")}if(St(i)){let me=new Set,xe=[];for(let Ut of i.entries)Ut.stage>0&&!me.has(Ut.path)&&(me.add(Ut.path),xe.push(`U ${Ut.path}`));return xe.sort(),{stdout:xe.length>0?`${xe.join(`
|
|
358
358
|
`)}
|
|
359
359
|
`:"",stderr:`error: Committing is not possible because you have unmerged files.
|
|
360
360
|
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
|
|
361
361
|
hint: as appropriate to mark resolution and make a commit.
|
|
362
362
|
fatal: Exiting because of an unresolved conflict.
|
|
363
363
|
`,exitCode:128}}let h=u&&m?await j(s,m):null,p=n.message;if(!p&&n.file!==void 0){if(n.file==="-")p=r.stdin;else{let me=n.file.startsWith("/")?n.file:T(r.cwd,n.file);if(!await r.fs.exists(me))return I(`could not read log file '${n.file}': No such file or directory`);let xe=await r.fs.readFile(me);p=typeof xe=="string"?xe:new TextDecoder().decode(xe)}if(p=an(p),!p)return{stdout:`Aborting commit due to empty commit message.
|
|
364
|
-
`,stderr:"",exitCode:1}}if(!p&&u&&h&&(p=h.message),!p&&(a||c||f||d)){let me=await
|
|
364
|
+
`,stderr:"",exitCode:1}}if(!p&&u&&h&&(p=h.message),!p&&(a||c||f||d)){let me=await Pe(s,"SQUASH_MSG");if(me)p=an(me);else{let xe=await Pe(s,"MERGE_MSG");xe!==null&&(p=an(xe))}}if(!p)return L("error: must provide a commit message with -m or -F");let g=De(i),w=await Ge(s,g),y=await t?.hooks?.preCommit?.({repo:s,index:i,treeHash:w});if(ee(y))return L(y.message??"");let x=n.allowEmpty,b=null;if(u&&h){let me=h.parents[0];me?b=(await j(s,me)).tree:b=await ut("tree",new Uint8Array(0))}else m&&(b=(await j(s,m)).tree);let k=u&&h&&h.parents.length>1;if(!x&&!a&&!k){if(!m&&!u&&g.length===0)return{stdout:await rt(s,{fromCommit:!0,index:i}),stderr:"",exitCode:1};if(b!==null&&b===w){if(u){let me=h?.parents[0]??null;return{stdout:`${await rt(s,{fromCommit:!0,compareHash:me,noWarn:!0,index:i})}No changes
|
|
365
365
|
`,stderr:`You asked to amend the most recent commit, but doing so would make
|
|
366
366
|
it empty. You can repeat your command with --allow-empty, or you can
|
|
367
367
|
remove the commit entirely with "git reset HEAD^".
|
|
@@ -371,9 +371,9 @@ If you wish to commit it anyway, use:
|
|
|
371
371
|
git commit --allow-empty
|
|
372
372
|
|
|
373
373
|
Otherwise, please use 'git cherry-pick --skip'
|
|
374
|
-
`,exitCode:1}:{stdout:await rt(s,{fromCommit:!0,index:i}),stderr:"",exitCode:1}}}let E=await on(s,r.env);if(M(E))return E;let R=await Qe(s,r.env);if(M(R))return R;u&&h&&(E.name=h.author.name,E.email=h.author.email,E.timestamp=h.author.timestamp,E.timezone=h.author.timezone),c&&(E=(await j(s,c)).author);let
|
|
375
|
-
${Le}`,stderr:"",exitCode:0}}})}se();Ne();le();function qn(e){let t=e.split(".");return t.length===2||t.length===3}function zh(e){let t=[];for(let[n,r]of Object.entries(e)){let o=n.match(/^(\S+)\s+"(.+)"$/);for(let[s,i]of Object.entries(r)){let a=o?`${o[1]}.${o[2]}.${s}`:`${n}.${s}`;for(let c of i)t.push(`${a}=${c}`)}}return t}function el(e,t){e.command("config",{description:"Get and set repository options",args:[q.string().name("positionals").variadic().optional()],options:{list
|
|
376
|
-
`,stderr:"",exitCode:0}}async function Zf(e,t){let n=await
|
|
374
|
+
`,exitCode:1}:{stdout:await rt(s,{fromCommit:!0,index:i}),stderr:"",exitCode:1}}}let E=await on(s,r.env);if(M(E))return E;let R=await Qe(s,r.env);if(M(R))return R;u&&h&&(E.name=h.author.name,E.email=h.author.email,E.timestamp=h.author.timestamp,E.timezone=h.author.timezone),c&&(E=(await j(s,c)).author);let C=At(p),P={repo:s,message:C},v=await t?.hooks?.commitMsg?.(P);if(ee(v))return L(v.message??"");C=P.message;let D;u&&h?D=[...h.parents]:(D=m?[m]:[],a&&D.push(a));let O=tn({type:"commit",tree:w,parents:D,author:E,committer:R,message:C}),H=await Se(s,"commit",O);await ae(s,i);let G=await Q(s);G&&G.type==="symbolic"?await X(s,G.target,H):await X(s,"HEAD",H);let A=fe(C),S;u?S="commit (amend)":a?S="commit (merge)":c?S="commit (cherry-pick)":m?S="commit":S="commit (initial)";let N=`${S}: ${A}`,B=G?.type==="symbolic"?G.target:"HEAD";await re(s,r.env,B,m,H,N,G?.type==="symbolic"),a&&await ts(s),c&&await Mt(s),f&&await jt(s),d&&await pe(s,"MERGE_MSG"),await pe(s,"SQUASH_MSG"),await t?.hooks?.postCommit?.({repo:s,hash:H,message:C,branch:G?.type==="symbolic"?Re(G.target):null,parents:D,author:E});let z=G?.type==="symbolic"?G.target:null,_=z?Re(z):"detached HEAD",U;if(u&&h){let me=h.parents[0];U=me?(await j(s,me)).tree:null}else U=m?(await j(s,m)).tree:null;let V=E.timestamp!==R.timestamp||E.timezone!==R.timezone,be=D.length>1,Le=await fn(s,U,w,E,R,V,be);return{stdout:`${Ht(_,H,p,D.length===0&&!u)}
|
|
375
|
+
${Le}`,stderr:"",exitCode:0}}})}se();Ne();le();function qn(e){let t=e.split(".");return t.length===2||t.length===3}function zh(e){let t=[];for(let[n,r]of Object.entries(e)){let o=n.match(/^(\S+)\s+"(.+)"$/);for(let[s,i]of Object.entries(r)){let a=o?`${o[1]}.${o[2]}.${s}`:`${n}.${s}`;for(let c of i)t.push(`${a}=${c}`)}}return t}function el(e,t){e.command("config",{description:"Get and set repository options",args:[q.string().name("positionals").variadic().optional()],options:{list:$().alias("l").describe("List all config entries"),unset:$().describe("Remove a config key"),"get-all":$().describe("Get all values for a multi-valued key"),add:$().describe("Add a new line without altering existing values")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=n.positionals,a=i[0];if(n.list)return Qf(s);if(n["get-all"]){let f=a;return f?qn(f)?Zf(s,f):L(`error: invalid key: ${f}`,2):L("error: missing key",2)}if(n.add){let f=a,l=i[1];return!f||l===void 0?L("error: missing key and/or value",2):qn(f)?(await Ta(s,f,l),{stdout:"",stderr:"",exitCode:0}):L(`error: invalid key: ${f}`,2)}if(n.unset){let f=a;return f?qn(f)?Jf(s,f):L(`error: invalid key: ${f}`,2):L("error: missing key",2)}if(a==="list")return Qf(s);if(a==="get"){let f=i[1];return f?qn(f)?Xf(s,f):L(`error: invalid key: ${f}`,2):L("error: missing key",2)}if(a==="get-all"){let f=i[1];return f?qn(f)?Zf(s,f):L(`error: invalid key: ${f}`,2):L("error: missing key",2)}if(a==="set"){let f=i[1],l=i[2];return!f||l===void 0?L("error: missing key and/or value",2):qn(f)?(await Vo(s,f,l),{stdout:"",stderr:"",exitCode:0}):L(`error: invalid key: ${f}`,2)}if(a==="unset"){let f=i[1];return f?qn(f)?Jf(s,f):L(`error: invalid key: ${f}`,2):L("error: missing key",2)}if(!a)return L("usage: git config [get|set|unset|list] [<key>] [<value>]",2);if(!qn(a))return L(`error: invalid key: ${a}`,2);let c=i[1];return c!==void 0?(await Vo(s,a,c),{stdout:"",stderr:"",exitCode:0}):Xf(s,a)}})}async function Xf(e,t){let n=await ke(e,t);return n===void 0?L(""):{stdout:`${n}
|
|
376
|
+
`,stderr:"",exitCode:0}}async function Zf(e,t){let n=await Sa(e,t);return n.length===0?L(""):{stdout:`${n.join(`
|
|
377
377
|
`)}
|
|
378
378
|
`,stderr:"",exitCode:0}}async function Jf(e,t){return await va(e,t)?{stdout:"",stderr:"",exitCode:0}:L("",5)}async function Qf(e){let t=T(e.gitDir,"config"),n="";await e.fs.exists(t)&&(n=await e.fs.readFile(t));let r=Wo(n),o=zh(r);return{stdout:o.length>0?`${o.join(`
|
|
379
379
|
`)}
|
|
@@ -381,43 +381,45 @@ ${Le}`,stderr:"",exitCode:0}}})}se();Ne();le();function qn(e){let t=e.split(".")
|
|
|
381
381
|
`)}
|
|
382
382
|
`;let m=e.parentContents.map(y=>y.length>0?Lt(y):[]),h=e.resultContent.length>0?Lt(e.resultContent):[],p=m.map(y=>st(y,h)),g=Kh(m,h,p),w=Yh(g,m.length,h);if(w.length===0)return"";for(let y of w)i.push(y);return`${i.join(`
|
|
383
383
|
`)}
|
|
384
|
-
`}function Kh(e,t,n){let r=e.length,o=n.map(i=>{let a=[],c=new Map,f=0;for(let l of i)if(l.type==="keep")a[l.newLineNo-1]="keep",f=l.newLineNo;else if(l.type==="insert")a[l.newLineNo-1]="insert",f=l.newLineNo;else if(l.type==="delete"){let d=c.get(f)??[];d.push({text:l.line,parentLineNo:l.oldLineNo}),c.set(f,d)}return{resultStatus:a,deletions:c}}),s=[];for(let i=0;i<=t.length;i++){let a=[];for(let f=0;f<r;f++){let l=o[f];a.push(l?.deletions.get(i)??[])}let c=Vh(a,r);for(let f of c)s.push(f);if(i<t.length){let f=[],l=Array(r).fill(0);for(let d=0;d<r;d++){let m=o[d]?.resultStatus[i];if(f.push(m==="insert"?"+":" "),m==="keep"){let h=n[d];if(h){for(let p of h)if(p.type==="keep"&&p.newLineNo===i+1){l[d]=p.oldLineNo;break}}}}s.push({columns:f,text:t[i]??"",resultLineNo:i+1,parentLineNos:l})}}return s}function Vh(e,t){if(!e.some(o=>o.length>0))return[];if(t===2){let o=e[0]??[],s=e[1]??[];if(o.length===0)return s.map(l=>({columns:[" ","-"],text:l.text,resultLineNo:0,parentLineNos:[0,l.parentLineNo]}));if(s.length===0)return o.map(l=>({columns:["-"," "],text:l.text,resultLineNo:0,parentLineNos:[l.parentLineNo,0]}));let i=o.map(l=>l.text),a=s.map(l=>l.text),c=st(i,a),f=[];for(let l of c)if(l.type==="keep"){let d=o.find(m=>m.text===l.line&&m.parentLineNo===l.oldLineNo),u=s.find(m=>m.text===l.line&&m.parentLineNo===l.newLineNo);f.push({columns:["-","-"],text:l.line,resultLineNo:0,parentLineNos:[d?.parentLineNo??0,u?.parentLineNo??0]})}else if(l.type==="delete"){let d=o.find(u=>u.parentLineNo===l.oldLineNo);f.push({columns:["-"," "],text:l.line,resultLineNo:0,parentLineNos:[d?.parentLineNo??0,0]})}else if(l.type==="insert"){let d=s.find(u=>u.parentLineNo===l.newLineNo);f.push({columns:[" ","-"],text:l.line,resultLineNo:0,parentLineNos:[0,d?.parentLineNo??0]})}return f}let r=[];for(let o=0;o<t;o++){let s=e[o]??[];for(let i of s){let a=Array(t).fill(" ");a[o]="-";let c=Array(t).fill(0);c[o]=i.parentLineNo,r.push({columns:a,text:i.text,resultLineNo:0,parentLineNos:c})}}return r}function Yh(e,t,n){let o=[];for(let l=0;l<e.length;l++)e[l]?.columns.some(u=>u!==" ")&&o.push(l);if(o.length===0)return[];let s=[],i=o[0]??0,a=Math.max(0,i-3),c=Math.min(e.length-1,i+3);for(let l=1;l<o.length;l++){let d=o[l]??0,u=Math.max(0,d-3),m=Math.min(e.length-1,d+3);u<=c+1||(s.push({start:a,end:c}),a=u),c=m}s.push({start:a,end:c});let f=[];for(let l of s){let d=e.slice(l.start,l.end+1),u=[];for(let b=0;b<t;b++){let k=d.filter(E=>(E.parentLineNos[b]??0)>0||E.columns[b]==="-");if(k.length===0)u.push({start:1,count:0});else{let R=k.find(
|
|
385
|
-
`);let c=i[0],f=await j(e,c),l=await We(e,f.tree,s.commit.tree),d=await al(e,l,r);return sl(d)||a&&(d.stderr=a),d}async function al(e,t,n){let{remaining:r,renames:o}=await nt(e,t),s=ol(r,o);return s.sort((i,a)=>Oe(i.path,a.path)),n?{items:s.filter(i=>ye(n,i.path))}:{items:s}}async function ep(e,t,n){let r=Xe(e);if(r)return r;let o=await He(e,t);if(M(o))return o;let s=e.workTree,i=await ce(e,o.commit.tree),a=[];for(let[
|
|
384
|
+
`}function Kh(e,t,n){let r=e.length,o=n.map(i=>{let a=[],c=new Map,f=0;for(let l of i)if(l.type==="keep")a[l.newLineNo-1]="keep",f=l.newLineNo;else if(l.type==="insert")a[l.newLineNo-1]="insert",f=l.newLineNo;else if(l.type==="delete"){let d=c.get(f)??[];d.push({text:l.line,parentLineNo:l.oldLineNo}),c.set(f,d)}return{resultStatus:a,deletions:c}}),s=[];for(let i=0;i<=t.length;i++){let a=[];for(let f=0;f<r;f++){let l=o[f];a.push(l?.deletions.get(i)??[])}let c=Vh(a,r);for(let f of c)s.push(f);if(i<t.length){let f=[],l=Array(r).fill(0);for(let d=0;d<r;d++){let m=o[d]?.resultStatus[i];if(f.push(m==="insert"?"+":" "),m==="keep"){let h=n[d];if(h){for(let p of h)if(p.type==="keep"&&p.newLineNo===i+1){l[d]=p.oldLineNo;break}}}}s.push({columns:f,text:t[i]??"",resultLineNo:i+1,parentLineNos:l})}}return s}function Vh(e,t){if(!e.some(o=>o.length>0))return[];if(t===2){let o=e[0]??[],s=e[1]??[];if(o.length===0)return s.map(l=>({columns:[" ","-"],text:l.text,resultLineNo:0,parentLineNos:[0,l.parentLineNo]}));if(s.length===0)return o.map(l=>({columns:["-"," "],text:l.text,resultLineNo:0,parentLineNos:[l.parentLineNo,0]}));let i=o.map(l=>l.text),a=s.map(l=>l.text),c=st(i,a),f=[];for(let l of c)if(l.type==="keep"){let d=o.find(m=>m.text===l.line&&m.parentLineNo===l.oldLineNo),u=s.find(m=>m.text===l.line&&m.parentLineNo===l.newLineNo);f.push({columns:["-","-"],text:l.line,resultLineNo:0,parentLineNos:[d?.parentLineNo??0,u?.parentLineNo??0]})}else if(l.type==="delete"){let d=o.find(u=>u.parentLineNo===l.oldLineNo);f.push({columns:["-"," "],text:l.line,resultLineNo:0,parentLineNos:[d?.parentLineNo??0,0]})}else if(l.type==="insert"){let d=s.find(u=>u.parentLineNo===l.newLineNo);f.push({columns:[" ","-"],text:l.line,resultLineNo:0,parentLineNos:[0,d?.parentLineNo??0]})}return f}let r=[];for(let o=0;o<t;o++){let s=e[o]??[];for(let i of s){let a=Array(t).fill(" ");a[o]="-";let c=Array(t).fill(0);c[o]=i.parentLineNo,r.push({columns:a,text:i.text,resultLineNo:0,parentLineNos:c})}}return r}function Yh(e,t,n){let o=[];for(let l=0;l<e.length;l++)e[l]?.columns.some(u=>u!==" ")&&o.push(l);if(o.length===0)return[];let s=[],i=o[0]??0,a=Math.max(0,i-3),c=Math.min(e.length-1,i+3);for(let l=1;l<o.length;l++){let d=o[l]??0,u=Math.max(0,d-3),m=Math.min(e.length-1,d+3);u<=c+1||(s.push({start:a,end:c}),a=u),c=m}s.push({start:a,end:c});let f=[];for(let l of s){let d=e.slice(l.start,l.end+1),u=[];for(let b=0;b<t;b++){let k=d.filter(E=>(E.parentLineNos[b]??0)>0||E.columns[b]==="-");if(k.length===0)u.push({start:1,count:0});else{let R=k.find(C=>(C.parentLineNos[b]??0)>0)?.parentLineNos[b]??1;u.push({start:R,count:k.length})}}let m=d.filter(b=>b.resultLineNo>0),h=m[0],p=h?h.resultLineNo:1,g=m.length,w="";for(let b=p-2;b>=0;b--){let k=n[b];if(k&&/^[a-zA-Z$_]/.test(k)){w=` ${k.trimEnd().slice(0,79)}`;break}}let y=u.map(b=>`-${b.start},${b.count}`),x=`${"@".repeat(t+1)} ${y.join(" ")} +${p},${g} ${"@".repeat(t+1)}${w}`;f.push(x);for(let b of d)f.push(`${b.columns.join("")}${b.text}`)}return f}se();Ce();ie();le();function Io(e){let t=e.indexOf("...");if(t>=0)return{type:"three-dot",left:e.slice(0,t)||"HEAD",right:e.slice(t+3)||"HEAD"};let n=e.indexOf("..");return n>=0?{type:"two-dot",left:e.slice(0,n)||"HEAD",right:e.slice(n+2)||"HEAD"}:null}Zn();ue();ve();tt();var Xi=new TextDecoder;function sl(e){return"exitCode"in e}function dr(e){return e.toString(8).padStart(6,"0")}function ol(e,t){let n=[];for(let r of e)n.push({path:r.path,status:r.status==="added"?"A":r.status==="deleted"?"D":"M",oldHash:r.oldHash,newHash:r.newHash,oldMode:r.oldMode,newMode:r.newMode});for(let r of t)n.push({path:r.newPath,status:"R",oldHash:r.oldHash,newHash:r.newHash,oldMode:r.oldMode,newMode:r.newMode,oldPath:r.oldPath,similarity:r.similarity});return n}function il(e,t){e.command("diff",{description:"Show changes between commits, commit and working tree, etc.",args:[q.string().name("commits").variadic().optional()],options:{cached:$().describe("Show staged changes (index vs HEAD)"),staged:$().describe("Synonym for --cached"),stat:$().describe("Show diffstat summary"),nameOnly:$().describe("Show only names of changed files"),nameStatus:$().describe("Show names and status of changed files"),shortstat:$().describe("Show only the shortstat summary line"),numstat:$().describe("Machine-readable insertions/deletions per file")},handler:async(n,r,o)=>{let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s,a=n.cached||n.staged,c=n.commits,f=mt(i,r.cwd),l=o.passthrough.length>0?o.passthrough.map(p=>Ue(p,f)):null,d=n.stat?"stat":n.nameOnly?"name-only":n.nameStatus?"name-status":n.shortstat?"shortstat":n.numstat?"numstat":"unified",u,m=c.length===1?Io(c[0]):null;if(m){if(a)return I("too many arguments");m.type==="three-dot"?u=await Qh(i,m.left,m.right,l):u=await rl(i,m.left,m.right,l)}else if(c.length===2)u=await rl(i,c[0],c[1],l);else{if(c.length>2)return I("too many arguments");a?u=await Jh(i,c.length===1?c[0]:null,l):c.length===1?u=await ep(i,c[0],l):u=await Xh(i,l)}if(sl(u))return u;let h=await tp(i,u.items,d);return u.stderr&&(h.stderr=u.stderr),h}})}async function Xh(e,t){let n=Xe(e);if(n)return n;let r=await K(e),o=new Set,s=new Map,i=new Map,a=new Map;for(let l of r.entries)l.stage===0?s.set(l.path,l):(o.add(l.path),l.stage===2?i.set(l.path,l):l.stage===3&&a.set(l.path,l));let c=await Tt(e,r);c.sort((l,d)=>Oe(l.path,d.path));let f=[];for(let l of c){if(l.status==="untracked"||t&&!ye(t,l.path)||o.has(l.path))continue;let d=s.get(l.path);if(!d)continue;let u=dr(d.mode),m;if(l.status==="modified"&&e.workTree){let h=T(e.workTree,l.path),p=await e.fs.readFileBuffer(h);m=await ut("blob",p)}f.push({path:l.path,status:l.status==="deleted"?"D":"M",oldHash:d.hash,newHash:m,oldMode:u,newMode:u,newFromWorkTree:l.status==="modified"})}for(let l of o){if(t&&!ye(t,l))continue;let d=i.get(l),u=a.get(l);await Zh(f,e,l,d,u)}return f.sort((l,d)=>{let u=Oe(l.path,d.path);return u!==0?u:l.status==="U"&&d.status!=="U"?-1:l.status!=="U"&&d.status==="U"?1:0}),{items:f}}async function Zh(e,t,n,r,o){let s=t.workTree;if(s&&r&&o){let i=dr(r.mode),a=dr(o.mode),{exists:c,hash:f}=await tl(t.fs,s,n);e.push({path:n,status:"U",newHash:f,newMode:i,newFromWorkTree:c,combinedParentHashes:[r.hash,o.hash],combinedParentModes:[i,a]}),nl(e,n,r.hash,i,c,f);return}if(e.push({path:n,status:"U"}),s&&r){let i=dr(r.mode),{exists:a,hash:c}=await tl(t.fs,s,n);nl(e,n,r.hash,i,a,c)}}async function tl(e,t,n){let r=T(t,n);if(!await e.exists(r))return{exists:!1};let o=await Zr(e,r);return{exists:!0,hash:await ut("blob",o)}}function nl(e,t,n,r,o,s){o&&s&&s!==n?e.push({path:t,status:"M",oldHash:n,newHash:s,oldMode:r,newMode:r,newFromWorkTree:!0}):o||e.push({path:t,status:"D",oldHash:n,oldMode:r})}async function Jh(e,t,n){let r=null;if(t){let u=await He(e,t);if(M(u))return u;r=u.commit.tree}else{let u=await Z(e);u&&(r=(await j(e,u)).tree)}let o=await ce(e,r),s=await K(e),i=new Set;for(let u of s.entries)u.stage>0&&i.add(u.path);let a=new Map(De(s).map(u=>[u.path,u])),c=[];for(let[u,m]of a){if(i.has(u))continue;let h=o.get(u);h?h.hash!==m.hash&&c.push({path:u,status:"modified",oldHash:h.hash,newHash:m.hash,oldMode:h.mode,newMode:dr(m.mode)}):c.push({path:u,status:"added",newHash:m.hash,newMode:dr(m.mode)})}for(let[u,m]of o)i.has(u)||a.has(u)||c.push({path:u,status:"deleted",oldHash:m.hash,oldMode:m.mode});let{remaining:f,renames:l}=await nt(e,c),d=ol(f,l);for(let u of i)d.push({path:u,status:"U"});return d.sort((u,m)=>Oe(u.path,m.path)),n?{items:d.filter(u=>ye(n,u.path))}:{items:d}}async function rl(e,t,n,r){let o=await He(e,t);if(M(o))return o;let s=await He(e,n);if(M(s))return s;let i=await We(e,o.commit.tree,s.commit.tree);return al(e,i,r)}async function Qh(e,t,n,r){let o=await He(e,t);if(M(o))return o;let s=await He(e,n);if(M(s))return s;let i=await Nt(e,o.hash,s.hash);if(i.length===0)return I(`${t}...${n}: no merge base`);let a;i.length>1&&(a=`warning: ${t}...${n}: multiple merge bases, using ${i[0]}
|
|
385
|
+
`);let c=i[0],f=await j(e,c),l=await We(e,f.tree,s.commit.tree),d=await al(e,l,r);return sl(d)||a&&(d.stderr=a),d}async function al(e,t,n){let{remaining:r,renames:o}=await nt(e,t),s=ol(r,o);return s.sort((i,a)=>Oe(i.path,a.path)),n?{items:s.filter(i=>ye(n,i.path))}:{items:s}}async function ep(e,t,n){let r=Xe(e);if(r)return r;let o=await He(e,t);if(M(o))return o;let s=e.workTree,i=await ce(e,o.commit.tree),a=await K(e),c=new Map(De(a).map(l=>[l.path,l])),f=[];for(let[l,d]of i){if(n&&!ye(n,l))continue;let u=T(s,l);if(!await e.fs.exists(u)){f.push({path:l,status:"D",oldHash:d.hash,oldMode:d.mode});continue}let m=await e.fs.readFileBuffer(u),h=await ut("blob",m);h!==d.hash&&f.push({path:l,status:"M",oldHash:d.hash,newHash:h,oldMode:d.mode,newMode:d.mode,newFromWorkTree:!0})}for(let[l,d]of c){if(i.has(l)||n&&!ye(n,l))continue;let u=T(s,l);if(!await e.fs.exists(u))continue;let m=await e.fs.readFileBuffer(u),h=await ut("blob",m);f.push({path:l,status:"A",newHash:h,newMode:dr(d.mode),newFromWorkTree:!0})}return f.sort((l,d)=>Oe(l.path,d.path)),{items:f}}async function tp(e,t,n){let r;switch(n){case"stat":r=await ap(e,t);break;case"shortstat":r=await cp(e,t);break;case"numstat":r=await ip(e,t);break;case"name-only":r=sp(t);break;case"name-status":r=op(t);break;default:r=await np(e,t);break}return{stdout:r,stderr:"",exitCode:0}}async function np(e,t){let n="",r=new Set,o=await rp(e,t);for(let s of t)if(s.status==="U")if(s.combinedParentHashes){let i=await Promise.all(s.combinedParentHashes.map(async f=>f?await oe(e,f):"")),a=await Zi(e,s);if(i.some(f=>$e(f))||$e(a)){let f=s.combinedParentHashes.map(l=>l?Y(l):"0000000");n+=`diff --cc ${s.path}
|
|
386
386
|
index ${f.join(",")}..0000000
|
|
387
387
|
Binary files differ
|
|
388
388
|
`,r.add(s.path)}else{let f=Oo({path:s.path,parentHashes:s.combinedParentHashes,parentModes:s.combinedParentModes??[],parentContents:i,resultHash:null,resultMode:s.newMode??null,resultContent:a});f?(n+=f,r.add(s.path)):n+=`* Unmerged path ${s.path}
|
|
389
389
|
`}}else n+=`* Unmerged path ${s.path}
|
|
390
|
-
`;for(let s of t){if(s.status==="U"||r.has(s.path))continue;let i=s.oldHash?await oe(e,s.oldHash):"",a=await Zi(e,s);s.status==="R"&&s.oldPath?n+=
|
|
390
|
+
`;for(let s of t){if(s.status==="U"||r.has(s.path))continue;let i=s.oldHash?await oe(e,s.oldHash):"",a=await Zi(e,s);s.status==="R"&&s.oldPath?n+=Pt({path:s.oldPath,oldContent:i,newContent:a,oldMode:s.oldMode,newMode:s.newMode,oldHash:$o(s.oldHash,o),newHash:$o(s.newHash,o),renameTo:s.path,similarity:s.similarity}):n+=Pt({path:s.path,oldContent:i,newContent:a,oldMode:s.oldMode,newMode:s.newMode,oldHash:$o(s.oldHash,o),newHash:$o(s.newHash,o),isNew:s.status==="A",isDeleted:s.status==="D"})}return n}async function rp(e,t){let n=new Set;for(let a of t)a.oldHash&&a.oldHash.length===40&&n.add(a.oldHash),a.newHash&&a.newHash.length===40&&n.add(a.newHash);let r=new Map,o=async a=>{let c=r.get(a);if(c)return c;let f=T(e.gitDir,"objects",a),l=await e.fs.exists(f)?await e.fs.readdir(f):[];return r.set(a,l),l},s=async(a,c)=>{let f=a.slice(0,2),l=a.slice(2,c),d=await o(f),u=0;for(let m of d)if(m.startsWith(l)&&(u++,u>1))return!1;return u===1},i=new Map;for(let a of n){let c=7;for(;c<40&&!await s(a,c);)c++;i.set(a,a.slice(0,c))}return i}function $o(e,t){if(e)return e.length!==40?e:t.get(e)??Y(e)}function sp(e){let t="";for(let n of e)t+=`${n.path}
|
|
391
391
|
`;return t}function op(e){let t="";for(let n of e)if(n.status==="R"){let r=String(n.similarity??100).padStart(3,"0");t+=`R${r} ${n.oldPath} ${n.path}
|
|
392
392
|
`}else t+=`${n.status} ${n.path}
|
|
393
393
|
`;return t}async function ip(e,t){let n="";for(let r of t){if(r.status==="U"){n+=`0 0 ${r.path}
|
|
394
|
-
`;continue}let o=r.oldHash?await oe(e,r.oldHash):"",s=await Zi(e,r),i
|
|
394
|
+
`;continue}let o=r.oldHash?await oe(e,r.oldHash):"",s=await Zi(e,r),i=$e(o)||$e(s),a,c;if(i)a="-",c="-";else{let{ins:f,del:l}=cl(o,s);a=String(f),c=String(l)}if(r.status==="R"&&r.oldPath){let f=cn(r.oldPath,r.path);n+=`${a} ${c} ${f}
|
|
395
395
|
`}else n+=`${a} ${c} ${r.path}
|
|
396
396
|
`}return n}async function ap(e,t){let n=await fl(e,t);return cr(n)}async function cp(e,t){let n=await fl(e,t);if(n.length===0)return"";let r=0,o=0,s=0;for(let a of n)a.isUnmerged||(s++,r+=a.insertions,o+=a.deletions);let i=Fn(s,r,o);return i?`${i}
|
|
397
397
|
`:n.some(a=>a.isUnmerged)?` 0 files changed
|
|
398
|
-
`:""}async function Zi(e,t){if(!t.newHash)return"";if(t.newFromWorkTree&&e.workTree){let n=T(e.workTree,t.path),r=await Zr(e.fs,n);return Xi.decode(r)}return oe(e,t.newHash)}async function fp(e,t){if(!t.newHash)return new Uint8Array(0);if(t.newFromWorkTree&&e.workTree){let n=T(e.workTree,t.path);return Zr(e.fs,n)}return kt(e,t.newHash)}function cl(e,t){let n=
|
|
399
|
-
`);for(let H of x){let G=await F(e,H.localRef);await X(e,H.localRef,H.remote.hash),await Ke(e,H.localRef,{oldHash:G??te,newHash:H.remote.hash,name:
|
|
400
|
-
`)}}else{let B=H.remote.name.startsWith("refs/tags/")?" * [new tag]":" * [new branch]";v.push(`${B} ${A} -> ${
|
|
401
|
-
`)}}if(!o)for(let H of m){if(!H.name.startsWith("refs/tags/")||y.has(H.hash))continue;let G=await F(e,H.name),A=H.peeledHash??H.hash;!G&&b.has(A)&&(await X(e,H.name,H.hash),await Ke(e,H.name,{oldHash:te,newHash:H.hash,name:
|
|
402
|
-
`))}if(r){let H=`refs/remotes/${t}`,G=await ge(e,H),A=new Set(m.filter(
|
|
403
|
-
`))}}let D=m.find(H=>H.name==="HEAD");if(D){let H=T(e.gitDir,"FETCH_HEAD"),G=m.find(
|
|
404
|
-
`)}let O={stdout:"",stderr:v.join(""),exitCode:0};return await i?.hooks?.postFetch?.({repo:e,remote:t,url:l.url,refsUpdated:x.length}),O}function To(e){return e.startsWith("refs/heads/")?e.slice(11):e.startsWith("refs/tags/")?e.slice(10):e.startsWith("refs/remotes/")?e.slice(13):e}se();
|
|
405
|
-
`)}function hl(e,t){e.command("repack",{description:"Pack unpacked objects in a repository",options:{all
|
|
398
|
+
`:""}async function Zi(e,t){if(!t.newHash)return"";if(t.newFromWorkTree&&e.workTree){let n=T(e.workTree,t.path),r=await Zr(e.fs,n);return Xi.decode(r)}return oe(e,t.newHash)}async function fp(e,t){if(!t.newHash)return new Uint8Array(0);if(t.newFromWorkTree&&e.workTree){let n=T(e.workTree,t.path);return Zr(e.fs,n)}return kt(e,t.newHash)}function cl(e,t){let n=bt(e),r=bt(t),o=st(n,r),s=0,i=0;for(let a of o)a.type==="insert"?s++:a.type==="delete"&&i++;return{ins:s,del:i}}async function fl(e,t){let n=[];for(let r of t){if(r.status==="U"){n.push({path:r.path,sortKey:r.path,insertions:0,deletions:0,isUnmerged:!0});continue}let o=r.status==="R"&&r.oldPath?cn(r.oldPath,r.path):r.path,s=r.oldHash?await kt(e,r.oldHash):new Uint8Array(0),i=await fp(e,r);if(On(s)||On(i))n.push({path:o,sortKey:r.path,insertions:0,deletions:0,isBinary:!0,oldSize:s.byteLength,newSize:i.byteLength});else{let a=Xi.decode(s),c=Xi.decode(i),{ins:f,del:l}=cl(a,c);n.push({path:o,sortKey:r.path,insertions:f,deletions:l})}}return n}se();Ne();Pn();le();Fe();ue();function ur(e){let t=e,n=!1;t.startsWith("+")&&(n=!0,t=t.slice(1));let r=t.indexOf(":");return r===-1?{force:n,src:t,dst:t}:{force:n,src:t.slice(0,r),dst:t.slice(r+1)}}function lp(e,t){let n=e.indexOf("*");if(n===-1)return e===t;let r=e.slice(0,n),o=e.slice(n+1);return t.startsWith(r)&&t.endsWith(o)&&t.length>=r.length+o.length}function So(e,t){if(!lp(e.src,t))return null;let n=e.src.indexOf("*"),r=e.dst.indexOf("*");if(n===-1)return e.dst;let o=e.src.slice(0,n),s=e.src.slice(n+1),i=s.length>0?t.length-s.length:t.length,a=t.slice(o.length,i);return r===-1?e.dst:e.dst.slice(0,r)+a+e.dst.slice(r+1)}function dl(e,t){e.command("fetch",{description:"Download objects and refs from another repository",args:[q.string().name("remote").describe("Remote to fetch from").optional(),q.string().name("refspec").describe("Refspec(s) to fetch").optional().variadic()],options:{all:$().describe("Fetch from all remotes"),prune:$().alias("p").describe("Remove stale remote-tracking refs"),tags:$().describe("Also fetch tags"),depth:J.number().describe("Limit fetching to the specified number of commits"),unshallow:$().describe("Convert a shallow repository to a complete one")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(n.depth!==void 0&&n.unshallow)return I("--depth and --unshallow cannot be used together");if(n.unshallow&&!await yo(s))return I("--unshallow on a complete repository does not make sense");let i=n.depth;if(n.unshallow&&(i=ls),n.all){if(n.remote)return I("fetch --all does not take a remote argument");let c=await he(s),f=[];for(let u of Object.keys(c)){let m=u.match(/^remote "(.+)"$/);m?.[1]&&f.push(m[1])}if(f.length===0)return{stdout:"",stderr:"",exitCode:0};let l=[],d=0;for(let u of f){let m=await ll(s,u,void 0,n.prune,n.tags,r.env,t,i);m.stderr&&l.push(m.stderr),m.exitCode!==0&&(d=m.exitCode)}return{stdout:"",stderr:l.join(""),exitCode:d}}let a=n.remote||"origin";return ll(s,a,n.refspec,n.prune,n.tags,r.env,t,i)}})}async function ll(e,t,n,r,o,s,i,a){let c;try{c=await vr(e,t,s)}catch(H){let G=H instanceof Error?H.message:"";if(G.startsWith("network"))return I(G);throw H}if(!c)return I(`'${t}' does not appear to be a git repository`);let{transport:f,config:l}=c,d;n&&n.length>0?d=n.map(ur):d=[ur(l.fetchRefspec)];let u=await i?.hooks?.preFetch?.({repo:e,remote:t,url:l.url,refspecs:d.map(H=>`${H.src}:${H.dst}`),prune:r,tags:o});if(ee(u))return{stdout:"",stderr:u.message??"",exitCode:1};let m=await f.advertiseRefs();if(m.length===0)return{stdout:"",stderr:"",exitCode:0};let p=(await ge(e)).map(H=>H.hash),g=await F(e,"HEAD");g&&p.push(g);let w=[],y=new Set,x=[];for(let H of m)if(H.name!=="HEAD")for(let G of d){let A=So(G,H.name);if(A!==null){x.push({remote:H,localRef:A,force:G.force}),y.has(H.hash)||(y.add(H.hash),w.push(H.hash));break}}if(o)for(let H of m)H.name.startsWith("refs/tags/")&&(x.push({remote:H,localRef:H.name,force:!1}),y.has(H.hash)||(y.add(H.hash),w.push(H.hash)));let b=new Set(p),k=w.filter(H=>!b.has(H)),E,R=a!==void 0?await Or(e):void 0;a!==void 0&&(E={depth:a,existingShallows:R});let C=k.length>0?k:E?w:[];if(C.length>0){let H=await f.fetch(C,p,E);H.shallowUpdates&&await Ir(e,H.shallowUpdates,R)}let P=await Jt(e,s),v=[];v.push(`From ${l.url}
|
|
399
|
+
`);for(let H of x){let G=await F(e,H.localRef);await X(e,H.localRef,H.remote.hash),await Ke(e,H.localRef,{oldHash:G??te,newHash:H.remote.hash,name:P.name,email:P.email,timestamp:P.timestamp,tz:P.tz,message:G?"fetch":"fetch: storing head"});let A=To(H.remote.name),S=To(H.localRef);if(G){if(G!==H.remote.hash){let N=Y(G),B=Y(H.remote.hash);v.push(` ${N}..${B} ${A} -> ${S}
|
|
400
|
+
`)}}else{let B=H.remote.name.startsWith("refs/tags/")?" * [new tag]":" * [new branch]";v.push(`${B} ${A} -> ${S}
|
|
401
|
+
`)}}if(!o)for(let H of m){if(!H.name.startsWith("refs/tags/")||y.has(H.hash))continue;let G=await F(e,H.name),A=H.peeledHash??H.hash;!G&&b.has(A)&&(await X(e,H.name,H.hash),await Ke(e,H.name,{oldHash:te,newHash:H.hash,name:P.name,email:P.email,timestamp:P.timestamp,tz:P.tz,message:"fetch: storing head"}),v.push(` * [new tag] ${To(H.name)} -> ${To(H.name)}
|
|
402
|
+
`))}if(r){let H=`refs/remotes/${t}`,G=await ge(e,H),A=new Set(m.filter(S=>S.name.startsWith("refs/heads/")).map(S=>S.name.slice(11)));for(let S of G){let N=S.name.slice(H.length+1);A.has(N)||(await de(e,S.name),v.push(` - [deleted] (none) -> ${t}/${N}
|
|
403
|
+
`))}}let D=m.find(H=>H.name==="HEAD");if(D){let H=T(e.gitDir,"FETCH_HEAD"),G=m.find(S=>S.name.startsWith("refs/heads/")&&S.hash===D.hash),A=G?`branch '${G.name.slice(11)}' of`:"of";await e.fs.writeFile(H,`${D.hash} ${A} ${l.url}
|
|
404
|
+
`)}let O={stdout:"",stderr:v.join(""),exitCode:0};return await i?.hooks?.postFetch?.({repo:e,remote:t,url:l.url,refsUpdated:x.length}),O}function To(e){return e.startsWith("refs/heads/")?e.slice(11):e.startsWith("refs/tags/")?e.slice(10):e.startsWith("refs/remotes/")?e.slice(13):e}se();Ce();ie();le();Fe();ue();se();Ce();ie();le();Fe();ue();async function ul(e){let t=new Set,n=await Z(e);n&&t.add(n);let r=await ge(e,"refs");for(let a of r)t.add(a.hash);let o=T(e.gitDir,"logs");await e.fs.exists(o)&&await ml(e,o,o,t);let s=await K(e);for(let a of s.entries)t.add(a.hash);for(let a of["MERGE_HEAD","CHERRY_PICK_HEAD","ORIG_HEAD"]){let c=await F(e,a);c&&t.add(c)}let i=[];for(let a of t)await Kt(e,a)&&i.push(a);return i}async function ml(e,t,n,r){let o=await e.fs.readdir(t);for(let s of o){let i=T(t,s),a=await e.fs.stat(i);if(a.isDirectory)await ml(e,i,n,r);else if(a.isFile){let c=i.slice(n.length+1),f=await Je(e,c);for(let l of f)l.newHash!==te&&r.add(l.newHash)}}}Ms();Br();le();async function dp(e,t){let n=new Set,r=T(e.gitDir,"objects","pack");try{let s=await e.fs.readdir(r);for(let i of s){if(!i.endsWith(".idx"))continue;let a=await e.fs.readFileBuffer(T(r,i)),c=new zt(a);for(let f of c.allHashes())n.add(f)}}catch{}return n.size===0?Sr(await $r(e,t,[])):(await Sr(await $r(e,t,[]))).filter(s=>!n.has(s.hash))}async function Ji(e){let{gitCtx:t,fs:n,tips:r,cleanup:o}=e,s=e.window??10,i=e.depth??50;if(r.length===0)return null;let a=e.all?await Sr(await $r(t,r,[])):await dp(t,r);if(a.length===0)return null;let c=a.length,f=Ro(a,{window:s,depth:i}),l=f.filter(E=>E.delta).length,d=f.map(E=>({hash:E.hash,type:E.type,content:E.content,delta:E.delta,deltaBaseHash:E.deltaBase})),{data:u,entries:m}=await Ds(d),h=await fc(u,m),p=u.subarray(u.byteLength-20),g="";for(let E=0;E<20;E++){let R=p[E];g+=(R>>4).toString(16)+(R&15).toString(16)}let w=T(t.gitDir,"objects","pack");await n.mkdir(w,{recursive:!0});let y=`pack-${g}`,x=T(w,`${y}.pack`),b=T(w,`${y}.idx`);await n.writeFile(x,u),await n.writeFile(b,h);let k=new Set(f.map(E=>E.hash));if(t.objectStore.invalidatePacks?.(),o){let E=await n.readdir(w);for(let P of E){if(!P.endsWith(".idx"))continue;let v=P.slice(0,-4);if(v===y)continue;let D=T(w,`${v}.idx`),O=!0;try{let H=await n.readFileBuffer(D),G=new zt(H);for(let A of G.allHashes())if(!k.has(A)){O=!1;break}}catch{O=!1}if(O){try{await n.rm(T(w,`${v}.pack`))}catch{}try{await n.rm(D)}catch{}}}let R=T(t.gitDir,"objects"),C;try{C=await n.readdir(R)}catch{C=[]}for(let P of C){if(P==="pack"||P==="info"||P.length!==2)continue;let v=T(R,P),D;try{D=await n.readdir(v)}catch{continue}for(let O of D){let H=`${P}${O}`;k.has(H)&&await n.rm(T(v,O))}try{(await n.readdir(v)).length===0&&await n.rm(v,{recursive:!0})}catch{}}}return{totalCount:c,deltaCount:l,packHash:g}}function Qi(e,t,n=!1){let r=e-t,o=[`Enumerating objects: ${e}, done.`];return n&&o.push(`Counting objects: 100% (${e}/${e}), done.`),o.push("Delta compression using 1 thread.",`Compressing objects: 100% (${r}/${e}), done.`,`Writing objects: 100% (${e}/${e}), done.`,`Total ${e} (delta ${t}), reused 0 (delta 0), pack-reused 0`),o.join(`
|
|
405
|
+
`)}function hl(e,t){e.command("repack",{description:"Pack unpacked objects in a repository",options:{all:$().alias("a").describe("Pack all objects, including already-packed"),delete:$().alias("d").describe("After packing, remove redundant packs and loose objects")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=await ul(s),a=await Ji({gitCtx:s,fs:r.fs,tips:i,cleanup:n.delete,all:n.all});return a?{stdout:"",stderr:`${Qi(a.totalCount,a.deltaCount)}
|
|
406
406
|
`,exitCode:0}:{stdout:`Nothing new to pack.
|
|
407
|
-
`,stderr:"",exitCode:0}}})}function pl(e,t){e.command("gc",{description:"Cleanup unnecessary files and optimize the local repository",options:{aggressive
|
|
408
|
-
`,exitCode:0}}return{stdout:"",stderr:"",exitCode:0}}})}var up=2160*60*60;async function mp(e){let t=new Set,n=await Z(e);n&&t.add(n);let r=await ge(e,"refs");for(let f of r)t.add(f.hash);let s=Math.floor(Date.now()/1e3)-up,i=T(e.gitDir,"logs");await e.fs.exists(i)&&await gl(e,i,i,s,t);let a=await K(e);for(let f of a.entries)t.add(f.hash);for(let f of["MERGE_HEAD","CHERRY_PICK_HEAD","ORIG_HEAD"]){let l=await F(e,f);l&&t.add(l)}let c=[];for(let f of t)await Kt(e,f)&&c.push(f);return c}async function gl(e,t,n,r,o){let s=await e.fs.readdir(t);for(let i of s){let a=T(t,i),c=await e.fs.stat(a);if(c.isDirectory){await gl(e,a,n,r,o);try{(await e.fs.readdir(a)).length===0&&await e.fs.rm(a,{recursive:!0})}catch{}}else if(c.isFile){let f=a.slice(n.length+1),l=await Je(e,f);if(f==="refs/stash"){for(let u of l)u.newHash!==te&&o.add(u.newHash);continue}let d=l.filter(u=>u.timestamp>=r);await Tn(e,f,d);for(let u of d)u.newHash!==te&&o.add(u.newHash)}}}async function hp(e,t){let n=T(e,"objects"),r;try{r=await t.readdir(n)}catch{return}for(let o of r)if(!(o==="pack"||o==="info"||o.length!==2))try{await t.rm(T(n,o),{recursive:!0})}catch{}}le()
|
|
407
|
+
`,stderr:"",exitCode:0}}})}function pl(e,t){e.command("gc",{description:"Cleanup unnecessary files and optimize the local repository",options:{aggressive:$().describe("More aggressively optimize the repository")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;await wc(s),await pt(s);let i=await mp(s);if(i.length>0){let a=n.aggressive?250:10,c=n.aggressive?250:50,f=await Ji({gitCtx:s,fs:r.fs,tips:i,window:a,depth:c,cleanup:!0,all:!0});if(await hp(s.gitDir,r.fs),f)return{stdout:"",stderr:`${Qi(f.totalCount,f.deltaCount,!0)}
|
|
408
|
+
`,exitCode:0}}return{stdout:"",stderr:"",exitCode:0}}})}var up=2160*60*60;async function mp(e){let t=new Set,n=await Z(e);n&&t.add(n);let r=await ge(e,"refs");for(let f of r)t.add(f.hash);let s=Math.floor(Date.now()/1e3)-up,i=T(e.gitDir,"logs");await e.fs.exists(i)&&await gl(e,i,i,s,t);let a=await K(e);for(let f of a.entries)t.add(f.hash);for(let f of["MERGE_HEAD","CHERRY_PICK_HEAD","ORIG_HEAD"]){let l=await F(e,f);l&&t.add(l)}let c=[];for(let f of t)await Kt(e,f)&&c.push(f);return c}async function gl(e,t,n,r,o){let s=await e.fs.readdir(t);for(let i of s){let a=T(t,i),c=await e.fs.stat(a);if(c.isDirectory){await gl(e,a,n,r,o);try{(await e.fs.readdir(a)).length===0&&await e.fs.rm(a,{recursive:!0})}catch{}}else if(c.isFile){let f=a.slice(n.length+1),l=await Je(e,f);if(f==="refs/stash"){for(let u of l)u.newHash!==te&&o.add(u.newHash);continue}let d=l.filter(u=>u.timestamp>=r);await Tn(e,f,d);for(let u of d)u.newHash!==te&&o.add(u.newHash)}}}async function hp(e,t){let n=T(e,"objects"),r;try{r=await t.readdir(n)}catch{return}for(let o of r)if(!(o==="pack"||o==="info"||o.length!==2))try{await t.rm(T(n,o),{recursive:!0})}catch{}}le();Sn();function wl(e){e.command("init",{description:"Initialize a new repository",args:[q.string().name("directory").describe("The directory to initialize").optional()],options:{bare:$().describe("Create a bare repository"),initialBranch:J.string().alias("b").describe("Name for the initial branch")},examples:["git init","git init --bare","git init my-project"],handler:async(t,n)=>{let r=t.initialBranch,o=t.directory?It(n.cwd,t.directory):n.cwd;t.directory&&await n.fs.mkdir(o,{recursive:!0});let{ctx:s,reinit:i}=await Gs(n.fs,o,{bare:t.bare,...r?{initialBranch:r}:{}}),a="";i&&r&&(a=`warning: re-init: ignored --initial-branch=${r}
|
|
409
409
|
`);let c=t.bare?"bare ":"";return{stdout:`${i?"Reinitialized existing":"Initialized empty"} ${c}Git repository in ${s.gitDir}/
|
|
410
|
-
`,stderr:a,exitCode:0}}})}se();rr();var vo=class{hash=null;parents=[];nParents=0;state=0;prevState=0;commitIdx=0;prevCommitIdx=0;mergeLayout=0;edgesAdded=0;prevEdgesAdded=0;w=0;expRow=0;cols=[];nCols=0;newCols=[];nNewCols=0;map=[];oldMap=[];mapSize=0;get width(){return this.w}update(t,n){this.hash=t,this.parents=n,this.nParents=n.length,this.prevCommitIdx=this.commitIdx,this.updateColumns(),this.expRow=0,this.state!==0?this.state=1:this.needsPreCommit()?this.state=2:this.state=3}nextLine(){let t,n=!1;switch(this.state){case 0:t=this.outPadding();break;case 1:t=this.outSkip();break;case 2:t=this.outPreCommit();break;case 3:t=this.outCommit(),n=!0;break;case 4:t=this.outPostMerge();break;case 5:t=this.outCollapsing();break}return{prefix:bl(t,this.w),isCommitLine:n}}isFinished(){return this.state===0}paddingPrefix(){if(this.state!==3)return this.nextLine().prefix;let t="";for(let n=0;n<this.nCols;n++)t+="| ";return this.prevState=0,bl(t,this.w)}updateColumns(){let t=this.newCols,n=this.nNewCols;this.newCols=this.cols,this.nNewCols=0,this.cols=t,this.nCols=n;let r=this.nCols+this.nParents;this.map.length<2*r&&(this.map=new Array(2*r),this.oldMap=new Array(2*r)),this.mapSize=2*r,this.map.fill(-1,0,this.mapSize),this.w=0,this.prevEdgesAdded=this.edgesAdded,this.edgesAdded=0;let o=!1;for(let s=0;s<=this.nCols;s++){let i;if(s===this.nCols){if(o)break;i=this.hash}else i=this.cols[s];if(i===this.hash){o=!0,this.commitIdx=s,this.mergeLayout=-1;for(let a of this.parents)this.insertNewCol(a,s);this.nParents===0&&(this.w+=2)}else this.insertNewCol(i,-1)}for(;this.mapSize>1&&this.map[this.mapSize-1]<0;)this.mapSize--}findNewCol(t){for(let n=0;n<this.nNewCols;n++)if(this.newCols[n]===t)return n;return-1}insertNewCol(t,n){let r=this.findNewCol(t);r<0&&(r=this.nNewCols++,this.newCols[r]=t);let o;if(this.nParents>1&&n>-1&&this.mergeLayout===-1){let s=n-r,i=s>1?2*s-3:1;this.mergeLayout=s>0?0:1,this.edgesAdded=this.nParents+this.mergeLayout-2,o=this.w+(this.mergeLayout-1)*i,this.w+=2*this.mergeLayout}else this.edgesAdded>0&&this.w>=2&&r===this.map[this.w-2]?(o=this.w-2,this.edgesAdded=-1):(o=this.w,this.w+=2);this.map[o]=r}setState(t){this.prevState=this.state,this.state=t}numDashedParents(){return this.nParents+this.mergeLayout-3}numExpansionRows(){return this.numDashedParents()*2}needsPreCommit(){return this.nParents>=3&&this.commitIdx<this.nCols-1&&this.expRow<this.numExpansionRows()}isMappingCorrect(){for(let t=0;t<this.mapSize;t++){let n=this.map[t];if(!(n<0)&&n!==t>>1)return!1}return!0}outPadding(){let t="";for(let n=0;n<this.nNewCols;n++)t+="| ";return t}outSkip(){return this.needsPreCommit()?this.setState(2):this.setState(3),"..."}outPreCommit(){let t="",n=!1;for(let r=0;r<this.nCols;r++)this.cols[r]===this.hash?(n=!0,t+="|",t+=" ".repeat(this.expRow)):n&&this.expRow===0?this.prevState===4&&this.prevCommitIdx<r?t+="\\":t+="|":n?t+="\\":t+="|",t+=" ";return this.expRow++,this.needsPreCommit()||this.setState(3),t}outCommit(){let t="",n=!1;for(let r=0;r<=this.nCols;r++){let o;if(r===this.nCols){if(n)break;o=this.hash}else o=this.cols[r];o===this.hash?(n=!0,t+="*",this.nParents>2&&(t+=this.drawOctopus())):n&&this.edgesAdded>1?t+="\\":n&&this.edgesAdded===1?this.prevState===4&&this.prevEdgesAdded>0&&this.prevCommitIdx<r?t+="\\":t+="|":this.prevState===5&&this.oldMap[2*r+1]===r&&this.map[2*r]<r?t+="/":t+="|",t+=" "}return this.nParents>1?this.setState(4):this.isMappingCorrect()?this.setState(0):this.setState(5),t}drawOctopus(){let t=this.numDashedParents(),n="";for(let r=0;r<t;r++)n+="-",n+=r===t-1?".":"-";return n}outPostMerge(){let t=["/","|","\\"],n="",r=!1,o=-1;for(let s=0;s<=this.nCols;s++){let i;if(s===this.nCols){if(r)break;i=this.hash}else i=this.cols[s];if(i===this.hash){r=!0;let a=this.mergeLayout;for(let c=0;c<this.nParents;c++)n+=t[a],a===2?(this.edgesAdded>0||c<this.nParents-1)&&(n+=" "):a++;this.edgesAdded===0&&(n+=" ")}else r?(this.edgesAdded>0?n+="\\":n+="|",n+=" "):(n+="|",(this.mergeLayout!==0||s!==this.commitIdx-1)&&(o>=0?n+="_":n+=" "));i===this.parents[0]&&(o=s)}return this.isMappingCorrect()?this.setState(0):this.setState(5),n}outCollapsing(){let t=this.map;this.map=this.oldMap,this.oldMap=t,this.map.fill(-1,0,this.mapSize);let n=-1,r=-1;for(let i=0;i<this.mapSize;i++){let a=this.oldMap[i];if(!(a<0)){if(a*2===i)this.map[i]=a;else if(this.map[i-1]<0){if(this.map[i-1]=a,n===-1){n=i,r=a;for(let c=a*2+3;c<i-2;c+=2)this.map[c]=a}}else if(this.map[i-1]!==a){if(this.map[i-2]=a,n===-1){r=a,n=i-1;for(let c=a*2+3;c<i-2;c+=2)this.map[c]=a}}}}for(let i=0;i<this.mapSize;i++)this.oldMap[i]=this.map[i];this.mapSize>0&&this.map[this.mapSize-1]<0&&this.mapSize--;let o="",s=!1;for(let i=0;i<this.mapSize;i++){let a=this.map[i];a<0?o+=" ":a*2===i?o+="|":a===r&&i!==n-1?(i!==a*2+3&&(this.map[i]=-1),s=!0,o+="_"):(s&&i<n&&(this.map[i]=-1),o+="/")}return this.isMappingCorrect()&&this.setState(0),o}};function bl(e,t){return e.length>=t?e:e+" ".repeat(t-e.length)}se();function ps(e,t){let{hash:n,commit:r}=t,o="",s=0;for(;s<e.length;){if(e[s]==="%"){let i=e[s+1];if(i===void 0){o+="%",s++;continue}if((i==="a"||i==="c")&&s+2<e.length){let a=e[s+2],c=i==="a"?r.author:r.committer;switch(a){case"n":o+=c.name,s+=3;continue;case"e":case"E":o+=c.email,s+=3;continue;case"t":o+=c.timestamp.toString(),s+=3;continue;case"I":o+=
|
|
410
|
+
`,stderr:a,exitCode:0}}})}se();rr();var vo=class{hash=null;parents=[];nParents=0;state=0;prevState=0;commitIdx=0;prevCommitIdx=0;mergeLayout=0;edgesAdded=0;prevEdgesAdded=0;w=0;expRow=0;cols=[];nCols=0;newCols=[];nNewCols=0;map=[];oldMap=[];mapSize=0;get width(){return this.w}update(t,n){this.hash=t,this.parents=n,this.nParents=n.length,this.prevCommitIdx=this.commitIdx,this.updateColumns(),this.expRow=0,this.state!==0?this.state=1:this.needsPreCommit()?this.state=2:this.state=3}nextLine(){let t,n=!1;switch(this.state){case 0:t=this.outPadding();break;case 1:t=this.outSkip();break;case 2:t=this.outPreCommit();break;case 3:t=this.outCommit(),n=!0;break;case 4:t=this.outPostMerge();break;case 5:t=this.outCollapsing();break}return{prefix:bl(t,this.w),isCommitLine:n}}isFinished(){return this.state===0}paddingPrefix(){if(this.state!==3)return this.nextLine().prefix;let t="";for(let n=0;n<this.nCols;n++)t+="| ";return this.prevState=0,bl(t,this.w)}updateColumns(){let t=this.newCols,n=this.nNewCols;this.newCols=this.cols,this.nNewCols=0,this.cols=t,this.nCols=n;let r=this.nCols+this.nParents;this.map.length<2*r&&(this.map=new Array(2*r),this.oldMap=new Array(2*r)),this.mapSize=2*r,this.map.fill(-1,0,this.mapSize),this.w=0,this.prevEdgesAdded=this.edgesAdded,this.edgesAdded=0;let o=!1;for(let s=0;s<=this.nCols;s++){let i;if(s===this.nCols){if(o)break;i=this.hash}else i=this.cols[s];if(i===this.hash){o=!0,this.commitIdx=s,this.mergeLayout=-1;for(let a of this.parents)this.insertNewCol(a,s);this.nParents===0&&(this.w+=2)}else this.insertNewCol(i,-1)}for(;this.mapSize>1&&this.map[this.mapSize-1]<0;)this.mapSize--}findNewCol(t){for(let n=0;n<this.nNewCols;n++)if(this.newCols[n]===t)return n;return-1}insertNewCol(t,n){let r=this.findNewCol(t);r<0&&(r=this.nNewCols++,this.newCols[r]=t);let o;if(this.nParents>1&&n>-1&&this.mergeLayout===-1){let s=n-r,i=s>1?2*s-3:1;this.mergeLayout=s>0?0:1,this.edgesAdded=this.nParents+this.mergeLayout-2,o=this.w+(this.mergeLayout-1)*i,this.w+=2*this.mergeLayout}else this.edgesAdded>0&&this.w>=2&&r===this.map[this.w-2]?(o=this.w-2,this.edgesAdded=-1):(o=this.w,this.w+=2);this.map[o]=r}setState(t){this.prevState=this.state,this.state=t}numDashedParents(){return this.nParents+this.mergeLayout-3}numExpansionRows(){return this.numDashedParents()*2}needsPreCommit(){return this.nParents>=3&&this.commitIdx<this.nCols-1&&this.expRow<this.numExpansionRows()}isMappingCorrect(){for(let t=0;t<this.mapSize;t++){let n=this.map[t];if(!(n<0)&&n!==t>>1)return!1}return!0}outPadding(){let t="";for(let n=0;n<this.nNewCols;n++)t+="| ";return t}outSkip(){return this.needsPreCommit()?this.setState(2):this.setState(3),"..."}outPreCommit(){let t="",n=!1;for(let r=0;r<this.nCols;r++)this.cols[r]===this.hash?(n=!0,t+="|",t+=" ".repeat(this.expRow)):n&&this.expRow===0?this.prevState===4&&this.prevCommitIdx<r?t+="\\":t+="|":n?t+="\\":t+="|",t+=" ";return this.expRow++,this.needsPreCommit()||this.setState(3),t}outCommit(){let t="",n=!1;for(let r=0;r<=this.nCols;r++){let o;if(r===this.nCols){if(n)break;o=this.hash}else o=this.cols[r];o===this.hash?(n=!0,t+="*",this.nParents>2&&(t+=this.drawOctopus())):n&&this.edgesAdded>1?t+="\\":n&&this.edgesAdded===1?this.prevState===4&&this.prevEdgesAdded>0&&this.prevCommitIdx<r?t+="\\":t+="|":this.prevState===5&&this.oldMap[2*r+1]===r&&this.map[2*r]<r?t+="/":t+="|",t+=" "}return this.nParents>1?this.setState(4):this.isMappingCorrect()?this.setState(0):this.setState(5),t}drawOctopus(){let t=this.numDashedParents(),n="";for(let r=0;r<t;r++)n+="-",n+=r===t-1?".":"-";return n}outPostMerge(){let t=["/","|","\\"],n="",r=!1,o=-1;for(let s=0;s<=this.nCols;s++){let i;if(s===this.nCols){if(r)break;i=this.hash}else i=this.cols[s];if(i===this.hash){r=!0;let a=this.mergeLayout;for(let c=0;c<this.nParents;c++)n+=t[a],a===2?(this.edgesAdded>0||c<this.nParents-1)&&(n+=" "):a++;this.edgesAdded===0&&(n+=" ")}else r?(this.edgesAdded>0?n+="\\":n+="|",n+=" "):(n+="|",(this.mergeLayout!==0||s!==this.commitIdx-1)&&(o>=0?n+="_":n+=" "));i===this.parents[0]&&(o=s)}return this.isMappingCorrect()?this.setState(0):this.setState(5),n}outCollapsing(){let t=this.map;this.map=this.oldMap,this.oldMap=t,this.map.fill(-1,0,this.mapSize);let n=-1,r=-1;for(let i=0;i<this.mapSize;i++){let a=this.oldMap[i];if(!(a<0)){if(a*2===i)this.map[i]=a;else if(this.map[i-1]<0){if(this.map[i-1]=a,n===-1){n=i,r=a;for(let c=a*2+3;c<i-2;c+=2)this.map[c]=a}}else if(this.map[i-1]!==a){if(this.map[i-2]=a,n===-1){r=a,n=i-1;for(let c=a*2+3;c<i-2;c+=2)this.map[c]=a}}}}for(let i=0;i<this.mapSize;i++)this.oldMap[i]=this.map[i];this.mapSize>0&&this.map[this.mapSize-1]<0&&this.mapSize--;let o="",s=!1;for(let i=0;i<this.mapSize;i++){let a=this.map[i];a<0?o+=" ":a*2===i?o+="|":a===r&&i!==n-1?(i!==a*2+3&&(this.map[i]=-1),s=!0,o+="_"):(s&&i<n&&(this.map[i]=-1),o+="/")}return this.isMappingCorrect()&&this.setState(0),o}};function bl(e,t){return e.length>=t?e:e+" ".repeat(t-e.length)}se();function ps(e,t){let{hash:n,commit:r}=t,o="",s=0;for(;s<e.length;){if(e[s]==="%"){let i=e[s+1];if(i===void 0){o+="%",s++;continue}if((i==="a"||i==="c")&&s+2<e.length){let a=e[s+2],c=i==="a"?r.author:r.committer;switch(a){case"n":o+=c.name,s+=3;continue;case"e":case"E":o+=c.email,s+=3;continue;case"t":o+=c.timestamp.toString(),s+=3;continue;case"I":o+=Rp(c.timestamp,c.timezone),s+=3;continue;case"i":o+=xp(c.timestamp,c.timezone),s+=3;continue;case"d":o+=_t(c.timestamp,c.timezone),s+=3;continue;case"D":o+=Cp(c.timestamp,c.timezone),s+=3;continue;case"r":o+=Pp(c.timestamp),s+=3;continue}}switch(i){case"H":o+=n,s+=2;continue;case"h":o+=Y(n),s+=2;continue;case"T":o+=r.tree,s+=2;continue;case"t":o+=Y(r.tree),s+=2;continue;case"P":o+=r.parents.join(" "),s+=2;continue;case"p":o+=r.parents.map(Y).join(" "),s+=2;continue;case"s":o+=ea(r.message),s+=2;continue;case"b":o+=pp(r.message),s+=2;continue;case"B":o+=r.message.replace(/\n$/,""),s+=2;continue;case"d":if(t.decorations){let a=t.decorations(n);o+=a?` ${a}`:""}s+=2;continue;case"D":t.decorationsRaw&&(o+=t.decorationsRaw(n)),s+=2;continue;case"n":o+=`
|
|
411
411
|
`,s+=2;continue;case"%":o+="%",s+=2;continue;default:o+=`%${i}`,s+=2;continue}}o+=e[s],s++}return o}var ea=fe;function pp(e){let t=e.indexOf(`
|
|
412
412
|
|
|
413
|
-
`);return t===-1?"":e.slice(t+2).replace(/\n$/,"")}function Ho(e){return e.startsWith("format:")?{formatStr:e.slice(7),preset:null}:e.startsWith("tformat:")?{formatStr:e.slice(8),preset:null}:["oneline","short","medium","full","fuller"].includes(e)?{formatStr:null,preset:e}:{formatStr:e,preset:null}}function gs(e,t,n,r=!1){let{hash:o,commit:s}=t,i=t.decorations?t.decorations(o):"";switch(e){case"oneline":{let a=r?Y(o):o,c=ea(s.message);return i?`${a} ${i} ${c}`:`${a} ${c}`}case"short":{let a=[];return n||a.push(""),a.push(i?`commit ${o} ${i}`:`commit ${o}`),s.parents.length>=2&&a.push(`Merge: ${s.parents.map(Y).join(" ")}`),a.push(`Author: ${s.author.name} <${s.author.email}>`),a.push(""),a.push(` ${ea(s.message)}`),a.join(`
|
|
413
|
+
`);return t===-1?"":e.slice(t+2).replace(/\n$/,"")}function Ho(e){return e.startsWith("format:")?{formatStr:e.slice(7),preset:null}:e.startsWith("tformat:")?{formatStr:e.slice(8),preset:null}:["oneline","short","medium","full","fuller","raw"].includes(e)?{formatStr:null,preset:e}:{formatStr:e,preset:null}}function gs(e,t,n,r=!1){let{hash:o,commit:s}=t,i=t.decorations?t.decorations(o):"";switch(e){case"oneline":{let a=r?Y(o):o,c=ea(s.message);return i?`${a} ${i} ${c}`:`${a} ${c}`}case"short":{let a=[];return n||a.push(""),a.push(i?`commit ${o} ${i}`:`commit ${o}`),s.parents.length>=2&&a.push(`Merge: ${s.parents.map(Y).join(" ")}`),a.push(`Author: ${s.author.name} <${s.author.email}>`),a.push(""),a.push(` ${ea(s.message)}`),a.join(`
|
|
414
414
|
`)}case"full":{let a=[];n||a.push(""),a.push(i?`commit ${o} ${i}`:`commit ${o}`),s.parents.length>=2&&a.push(`Merge: ${s.parents.map(Y).join(" ")}`),a.push(`Author: ${s.author.name} <${s.author.email}>`),a.push(`Commit: ${s.committer.name} <${s.committer.email}>`),a.push("");let c=s.message.replace(/\n$/,"");for(let f of c.split(`
|
|
415
415
|
`))a.push(` ${f}`);return a.join(`
|
|
416
416
|
`)}case"fuller":{let a=[];n||a.push(""),a.push(i?`commit ${o} ${i}`:`commit ${o}`),s.parents.length>=2&&a.push(`Merge: ${s.parents.map(Y).join(" ")}`),a.push(`Author: ${s.author.name} <${s.author.email}>`),a.push(`AuthorDate: ${_t(s.author.timestamp,s.author.timezone)}`),a.push(`Commit: ${s.committer.name} <${s.committer.email}>`),a.push(`CommitDate: ${_t(s.committer.timestamp,s.committer.timezone)}`),a.push("");let c=s.message.replace(/\n$/,"");for(let f of c.split(`
|
|
417
417
|
`))a.push(` ${f}`);return a.join(`
|
|
418
|
-
`)}
|
|
418
|
+
`)}case"raw":return gp(t,n);default:return wp(t,n)}}function gp(e,t){let{hash:n,commit:r}=e,o=[];t||o.push(""),o.push(`commit ${n}`),o.push(`tree ${r.tree}`);for(let i of r.parents)o.push(`parent ${i}`);o.push(`author ${r.author.name} <${r.author.email}> ${r.author.timestamp} ${r.author.timezone}`),o.push(`committer ${r.committer.name} <${r.committer.email}> ${r.committer.timestamp} ${r.committer.timezone}`),o.push("");let s=r.message.replace(/\n$/,"");for(let i of s.split(`
|
|
419
|
+
`))o.push(` ${i}`);return o.join(`
|
|
420
|
+
`)}function wp(e,t){let{hash:n,commit:r}=e,o=e.decorations?e.decorations(n):"",s=[];t||s.push(""),s.push(o?`commit ${n} ${o}`:`commit ${n}`),r.parents.length>=2&&s.push(`Merge: ${r.parents.map(Y).join(" ")}`),s.push(`Author: ${r.author.name} <${r.author.email}>`),s.push(`Date: ${_t(r.author.timestamp,r.author.timezone)}`),s.push("");let i=r.message.replace(/\n$/,"");for(let a of i.split(`
|
|
419
421
|
`))s.push(` ${a}`);return s.join(`
|
|
420
|
-
`)}var
|
|
422
|
+
`)}var bp=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],yp=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ep(e){let t=e.startsWith("-")?-1:1,n=e.replace(/^[+-]/,""),r=parseInt(n.slice(0,2),10)||0,o=parseInt(n.slice(2,4),10)||0;return t*(r*60+o)}function ta(e,t){let n=Ep(t);return new Date((e+n*60)*1e3)}function kp(e){return`${e.slice(0,3)}:${e.slice(3)}`}function Rp(e,t){let n=ta(e,t),r=n.getUTCFullYear(),o=String(n.getUTCMonth()+1).padStart(2,"0"),s=String(n.getUTCDate()).padStart(2,"0"),i=String(n.getUTCHours()).padStart(2,"0"),a=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0");return`${r}-${o}-${s}T${i}:${a}:${c}${kp(t)}`}function xp(e,t){let n=ta(e,t),r=n.getUTCFullYear(),o=String(n.getUTCMonth()+1).padStart(2,"0"),s=String(n.getUTCDate()).padStart(2,"0"),i=String(n.getUTCHours()).padStart(2,"0"),a=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0");return`${r}-${o}-${s} ${i}:${a}:${c} ${t}`}function Pp(e){let n=Math.floor(Date.now()/1e3)-e;if(n<0&&(n=0),n<90)return n===1?"1 second ago":`${n} seconds ago`;if(n=Math.round(n/60),n<90)return n===1?"1 minute ago":`${n} minutes ago`;if(n=Math.round(n/60),n<36)return n===1?"1 hour ago":`${n} hours ago`;if(n=Math.round(n/24),n<14)return n===1?"1 day ago":`${n} days ago`;if(n<70){let s=Math.round(n/7);return s===1?"1 week ago":`${s} weeks ago`}if(n<365){let s=Math.round(n/30);return s===1?"1 month ago":`${s} months ago`}let r=Math.floor(n/365),o=Math.round((n-r*365)/30);if(o>0){let s=r===1?"1 year":`${r} years`,i=o===1?"1 month":`${o} months`;return`${s}, ${i} ago`}return r===1?"1 year ago":`${r} years ago`}function Cp(e,t){let n=ta(e,t),r=bp[n.getUTCDay()]?.slice(0,3),o=yp[n.getUTCMonth()],s=n.getUTCDate(),i=String(n.getUTCHours()).padStart(2,"0"),a=String(n.getUTCMinutes()).padStart(2,"0"),c=String(n.getUTCSeconds()).padStart(2,"0"),f=n.getUTCFullYear();return`${r}, ${s} ${o} ${f} ${i}:${a}:${c} ${t}`}ie();ue();hn();ve();function kl(e,t){e.command("log",{description:"Show commit logs",transformArgs:n=>n.map(r=>/^-(\d+)$/.test(r)?`-n${r.slice(1)}`:r),args:[q.string().name("revisions").variadic().optional()],options:{maxCount:J.number().alias("n").describe("Limit the number of commits to output"),oneline:$().describe("Condense each commit to a single line"),all:$().describe("Walk all refs, not just HEAD"),author:J.string().describe("Filter by author (regex or substring)"),grep:J.string().describe("Filter by commit message (regex or substring)"),since:J.string().describe("Show commits after date"),after:J.string().describe("Synonym for --since"),until:J.string().describe("Show commits before date"),before:J.string().describe("Synonym for --until"),decorate:$().describe("Show ref names next to commit hashes"),reverse:$().describe("Output commits in reverse order"),format:J.string().describe("Pretty-print format string"),pretty:J.string().describe("Pretty-print format or preset name"),patch:$().alias("p").describe("Show diff in patch format"),stat:$().describe("Show diffstat summary"),nameStatus:$().describe("Show names and status of changed files"),nameOnly:$().describe("Show only names of changed files"),shortstat:$().describe("Show only the shortstat summary line"),numstat:$().describe("Machine-readable insertions/deletions per file"),graph:$().describe("Draw text-based graph of the commit history"),firstParent:$().describe("Follow only the first parent of merge commits")},handler:async(n,r,o)=>{let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s,a,c,f=n.revisions,l=f&&f.length===1?Io(f[0]):null;if(l){let U=async me=>{let xe=await Be(i,me);if(!xe)return Vt(me);try{return await _e(i,xe)}catch{return Vt(me)}},V=await U(l.left);if(typeof V=="object"&&"exitCode"in V)return V;let be=await U(l.right);if(typeof be=="object"&&"exitCode"in be)return be;let Le=V,it=be;if(l.type==="two-dot")a=[it],c=[Le];else{a=[Le,it];let me=await Nt(i,Le,it);c=me.length>0?me:void 0}if(n.all){let me=await ge(i);for(let Ut of me)try{let xn=await _e(i,Ut.hash);a.includes(xn)||a.push(xn)}catch{}let xe=await Z(i);xe&&!a.includes(xe)&&a.push(xe)}}else if(n.all){let U=await ge(i),V=new Set;for(let Le of U)try{V.add(await _e(i,Le.hash))}catch{}let be=await Z(i);be&&V.add(be),a=[...V]}else if(f&&f.length>0){let U=[];for(let V of f){let be=await Be(i,V);if(!be)return Vt(V);try{U.push(await _e(i,be))}catch{return Vt(V)}}a=U}else{let U=await Ze(i);if(M(U))return U;a=[U]}if(a.length===0)return I("your current branch does not have any commits yet");let d=o.passthrough.length>0?o.passthrough.map(U=>Ue(U,"")):null,u=n.author?yl(n.author):null,m=n.grep?yl(n.grep):null,h=n.since??n.after,p=n.until??n.before,g=h?Gi(h):null,w=p?Gi(p):null,y=n.format??n.pretty,x=null,b=null,k=!1;if(n.oneline)b="oneline",k=!0;else if(y!==void 0){let U=Ho(y);x=U.formatStr,b=U.preset}let E=n.patch?"patch":n.stat?"stat":n.nameStatus?"name-status":n.nameOnly?"name-only":n.shortstat?"shortstat":n.numstat?"numstat":null,R=n.graph;if(R&&n.reverse)return I("options '--graph' and '--reverse' cannot be used together");let P=n.decorate||x!=null&&(x.includes("%d")||x.includes("%D"))?await $p(i):null,v=P?U=>El(P,U):void 0,D=P?U=>{let V=El(P,U);return V.startsWith("(")&&V.endsWith(")")?V.slice(1,-1):V}:void 0,O=n.maxCount,H=n.reverse,G=n.firstParent,A=d?Ip(i,a,d,c?await Op(i,c):void 0,G):Dt(i,a,{exclude:c,topoOrder:R,firstParent:G}),S=[];for await(let U of A){if(O!==void 0&&S.length>=O)break;let{commit:V}=U;if(!(w!==null&&V.committer.timestamp>w)&&!(g!==null&&V.committer.timestamp<=g)){if(u){let be=`${V.author.name} <${V.author.email}>`;if(!u(be))continue}m&&!m(V.message)||S.push(U)}}let N=H?S.reverse():S;if(R)return Sp(N,i,x,b,k,E,v,D);if(x!==null){let U=[];for(let V of N){let be={hash:V.hash,commit:V.commit,decorations:v,decorationsRaw:D},Le=ps(x,be),it=await na(i,V.commit,E);it&&(Le+=`
|
|
421
423
|
|
|
422
424
|
${it.replace(/\n$/,"")}`),U.push(Le)}return{stdout:U.length>0?`${U.join(`
|
|
423
425
|
`)}
|
|
@@ -426,17 +428,17 @@ ${it.replace(/\n$/,"")}`),U.push(Le)}return{stdout:U.length>0?`${U.join(`
|
|
|
426
428
|
|
|
427
429
|
`}${it.replace(/\n$/,"")}`),_.push(Le)}return{stdout:_.length>0?`${_.join(`
|
|
428
430
|
`)}
|
|
429
|
-
`:"",stderr:"",exitCode:0}}})}async function
|
|
431
|
+
`:"",stderr:"",exitCode:0}}})}async function Op(e,t){let n=new Set;for await(let r of Dt(e,t))n.add(r.hash);return n}function yl(e){try{let t=new RegExp(e);return n=>t.test(n)}catch{return t=>t.includes(e)}}async function*Ip(e,t,n,r,o){let s=new Set(r),i=new Mn,a=async c=>{if(!s.has(c))try{let f=await j(e,c);i.push({hash:c,commit:f})}catch{}};for(let c of t)await a(c);for(;i.size>0;){let c=i.pop();if(s.has(c.hash))continue;s.add(c.hash);let{commit:f}=c,l=o?f.parents.slice(0,1):f.parents;if(l.length===0){(await We(e,null,f.tree)).some(m=>ye(n,m.path))&&(yield c);continue}if(l.length===1){let u=l[0];if(u){try{let m=await j(e,u);(await We(e,m.tree,f.tree)).some(p=>ye(n,p.path))&&(yield c)}catch{yield c}await a(u)}continue}let d=[];for(let u of l)try{let m=await j(e,u);(await We(e,m.tree,f.tree)).some(p=>ye(n,p.path))||d.push(u)}catch{}if(d.length>0&&d[0])await a(d[0]);else{yield c;for(let u of l)await a(u)}}}async function $p(e){let t=await Q(e),n=t?.type==="symbolic"?Re(t.target):null,r=await Z(e),o=new Map,s=(f,l,d)=>{let u=o.get(f);u||(u=[],o.set(f,u)),u.push({label:l,fullRef:d})},i=await ge(e,"refs/heads");for(let f of i)s(f.hash,Re(f.name),f.name);let a=await ge(e,"refs/remotes");for(let f of a)s(f.hash,f.name.replace("refs/remotes/",""),f.name);let c=await ge(e,"refs/tags");for(let f of c){let l=f.hash;try{l=await _e(e,f.hash)}catch{}s(l,`tag: ${f.name.replace("refs/tags/","")}`,f.name)}return{headTarget:n,headHash:r,byHash:o}}function El(e,t){let n=e.byHash.get(t),r=!e.headTarget&&e.headHash!==null&&e.headHash===t;if((!n||n.length===0)&&!r)return"";let o=[],s=e.headTarget&&n?n.find(a=>a.label===e.headTarget):null;s?o.push(`HEAD -> ${s.label}`):r&&o.push("HEAD");let i=n?n.filter(a=>a!==s):[];i.sort((a,c)=>a.fullRef>c.fullRef?-1:a.fullRef<c.fullRef?1:0);for(let a of i)o.push(a.label);return o.length>0?`(${o.join(", ")})`:""}async function Sp(e,t,n,r,o,s,i,a){let c=new vo,f=r??"medium",l=f==="oneline",d=[];for(let u=0;u<e.length;u++){let m=e[u],h={hash:m.hash,commit:m.commit,decorations:i,decorationsRaw:a},p;n!==null?p=ps(n,h):p=gs(f,h,!0,o),c.update(m.hash,m.commit.parents),u>0&&!l&&n===null&&d.push(c.paddingPrefix());let g=p.split(`
|
|
430
432
|
`),w=0;for(;;){let{prefix:b,isCommitLine:k}=c.nextLine();if(k){d.push(b+(g[w++]??""));break}d.push(b)}for(;w<g.length;){let{prefix:b}=c.nextLine();d.push(b+g[w++])}for(;!c.isFinished();){let{prefix:b}=c.nextLine();d.push(b)}let y=80-c.width,x=await na(t,m.commit,s,y);if(x){let b=x.replace(/\n$/,"").split(`
|
|
431
433
|
`);if(l||n!==null)for(let k of b)d.push(c.paddingPrefix()+k);else{d.push(c.paddingPrefix());for(let k of b)d.push(c.paddingPrefix()+k)}}}return{stdout:d.length>0?`${d.join(`
|
|
432
434
|
`)}
|
|
433
|
-
`:"",stderr:"",exitCode:0}}async function na(e,t,n,r){if(!n||t.parents.length>=2)return"";let o=t.parents.length===1?(await j(e,t.parents[0])).tree:null,s=await We(e,o,t.tree),{remaining:i,renames:a}=await nt(e,s);switch(n){case"name-only":return
|
|
434
|
-
`).join("")}function
|
|
435
|
-
`).join("")}async function
|
|
436
|
-
`:""}async function
|
|
437
|
-
`;else{let c=
|
|
438
|
-
`}}return o}async function
|
|
439
|
-
`,k=o.passthrough.length>0?o.passthrough.map(
|
|
435
|
+
`:"",stderr:"",exitCode:0}}async function na(e,t,n,r){if(!n||t.parents.length>=2)return"";let o=t.parents.length===1?(await j(e,t.parents[0])).tree:null,s=await We(e,o,t.tree),{remaining:i,renames:a}=await nt(e,s);switch(n){case"name-only":return Tp(i,a);case"name-status":return vp(i,a);case"stat":return Hp(e,i,a,r);case"shortstat":return Ap(e,i,a);case"numstat":return Dp(e,i,a);case"patch":return Mp(e,i,a)}}function Tp(e,t){let n=[];for(let r of e)n.push({key:r.path,line:r.path});for(let r of t)n.push({key:r.newPath,line:r.newPath});return n.sort((r,o)=>r.key<o.key?-1:r.key>o.key?1:0),n.map(r=>`${r.line}
|
|
436
|
+
`).join("")}function vp(e,t){let n=[];for(let r of e){let o=r.status==="added"?"A":r.status==="deleted"?"D":"M";n.push({key:r.path,line:`${o} ${r.path}`})}for(let r of t){let o=String(r.similarity??100).padStart(3,"0");n.push({key:r.newPath,line:`R${o} ${r.oldPath} ${r.newPath}`})}return n.sort((r,o)=>r.key<o.key?-1:r.key>o.key?1:0),n.map(r=>`${r.line}
|
|
437
|
+
`).join("")}async function Hp(e,t,n,r){let{fileStats:o}=await Un(e,t,n);return o.sort((s,i)=>s.sortKey<i.sortKey?-1:s.sortKey>i.sortKey?1:0),cr(o,r)}async function Ap(e,t,n){let{fileStats:r}=await Un(e,t,n),o=0,s=0;for(let a of r)o+=a.insertions,s+=a.deletions;let i=Fn(r.length,o,s);return i?`${i}
|
|
438
|
+
`:""}async function Dp(e,t,n){let r=[];for(let s of t)r.push({key:s.path,oldHash:s.oldHash,newHash:s.newHash,display:s.path});for(let s of n)r.push({key:s.newPath,oldHash:s.oldHash,newHash:s.newHash,display:cn(s.oldPath,s.newPath)});r.sort((s,i)=>s.key<i.key?-1:s.key>i.key?1:0);let o="";for(let s of r){let i=s.oldHash?await oe(e,s.oldHash):"",a=s.newHash?await oe(e,s.newHash):"";if($e(i)||$e(a))o+=`- - ${s.display}
|
|
439
|
+
`;else{let c=bt(i),f=bt(a),l=st(c,f),d=0,u=0;for(let m of l)m.type==="insert"?d++:m.type==="delete"&&u++;o+=`${d} ${u} ${s.display}
|
|
440
|
+
`}}return o}async function Mp(e,t,n){let r=[];for(let s of t)r.push({type:"diff",entry:s});for(let s of n)r.push({type:"rename",entry:s});r.sort((s,i)=>{let a=s.type==="diff"?s.entry.path:s.entry.newPath,c=i.type==="diff"?i.entry.path:i.entry.newPath;return a<c?-1:a>c?1:0});let o="";for(let s of r)if(s.type==="rename"){let i=s.entry,a=i.oldHash?await oe(e,i.oldHash):"",c=i.newHash?await oe(e,i.newHash):"";o+=Pt({path:i.oldPath,oldContent:a,newContent:c,oldMode:i.oldMode,newMode:i.newMode,oldHash:i.oldHash,newHash:i.newHash,renameTo:i.newPath,similarity:i.similarity})}else{let i=s.entry,a=i.oldHash?await oe(e,i.oldHash):"",c=i.newHash?await oe(e,i.newHash):"";o+=Pt({path:i.path,oldContent:a,newContent:c,oldMode:i.oldMode,newMode:i.newMode,oldHash:i.oldHash,newHash:i.newHash,isNew:i.status==="added",isDeleted:i.status==="deleted"})}return o}se();Ce();le();Zn();tt();function xl(e,t){e.command("ls-files",{description:"Show information about files in the index and the working tree",options:{cached:$().alias("c").describe("Show cached files (default)"),modified:$().alias("m").describe("Show modified files"),deleted:$().alias("d").describe("Show deleted files"),others:$().alias("o").describe("Show other (untracked) files"),unmerged:$().alias("u").describe("Show unmerged files"),stage:$().alias("s").describe("Show staged contents' mode, hash, and stage number"),"exclude-standard":$().describe("Add standard git exclusions (.gitignore, info/exclude, core.excludesFile)"),"nul-terminate":$().alias("z").describe("Use \\0 as line terminator instead of \\n"),"show-tags":$().alias("t").describe("Show status tags")},handler:async(n,r,o)=>{let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s,a=Xe(i);if(a)return a;let c=i.workTree,f=n.cached,l=n.modified,d=n.deleted,u=n.others,m=n.unmerged,h=n.stage,p=n["exclude-standard"],g=n["nul-terminate"],w=n["show-tags"];f||l||d||u||m||(f=!0);let x=await K(i),b=g?"\0":`
|
|
441
|
+
`,k=o.passthrough.length>0?o.passthrough.map(C=>{let P=r.cwd!==c?jp(c,r.cwd):"";return Ue(C,P)}):null,E=[];if(f)for(let C of x.entries){if(k&&!ye(k,C.path))continue;let P=w?C.stage>0?"M":"H":null;E.push(Rl(C,h,P))}if(m&&!f)for(let C of x.entries)C.stage!==0&&(k&&!ye(k,C.path)||E.push(Rl(C,!0,w?"M":null)));if(l||d){let C=await Gp(i,c,x);for(let{path:P,status:v}of C){if(v==="modified"&&!l||v==="deleted"&&!d||k&&!ye(k,P))continue;let D=w?v==="deleted"?"R":"C":null;E.push(D?`${D} ${P}`:P)}}if(u){let C=await Lp(i,c,x,p);for(let P of C)k&&!ye(k,P)||E.push(w?`? ${P}`:P)}return{stdout:E.length>0?E.join(b)+b:"",stderr:"",exitCode:0}}})}function Rl(e,t,n){if(t){let r=e.mode.toString(8).padStart(6,"0");return`${n?`${n} `:""}${r} ${e.hash} ${e.stage} ${e.path}`}return n?`${n} ${e.path}`:e.path}function jp(e,t){return t===e?"":t.startsWith(`${e}/`)?t.slice(e.length+1):""}async function Gp(e,t,n){let r=[];for(let o of n.entries){if(o.stage!==0)continue;let s=T(t,o.path);if(!await e.fs.exists(s)){r.push({path:o.path,status:"deleted"});continue}let a=await lt(e.fs,s);if(!a.isFile&&!a.isSymbolicLink)continue;await vn(e.fs,s)!==o.hash&&r.push({path:o.path,status:"modified"})}return r}async function Lp(e,t,n,r){let o=new Set(n.entries.map(i=>i.path));return(await et(e,t,"",{skipIgnore:!r})).filter(i=>!o.has(i))}se();rr();Ne();Ce();ie();Fe();ue();hn();ve();function Pl(e,t){e.command("merge",{description:"Join two or more development histories together",args:[q.string().name("branch").describe("Branch to merge into the current branch").optional()],options:{abort:$().describe("Abort the current in-progress merge"),continue:$().describe("Continue the merge after conflict resolution"),noFf:$().describe("Create a merge commit even when fast-forward is possible"),ffOnly:$().describe("Refuse to merge unless fast-forward is possible"),squash:$().describe("Apply merge result to worktree/index without creating a merge commit"),edit:$().describe("Edit the merge message (no-op, accepted for compatibility)"),message:J.string().alias("m").describe("Merge commit message")},transformArgs:n=>n.filter(r=>r!=="--ff"),handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(n.abort)return Bp(s,r.env);if(n.continue)return Up(s,r.env,t);let i=n.branch;if(!i)return I("you must specify a branch to merge");let a=await Ze(s);if(M(a))return a;let c=await K(s),f=wn(c,"Merging");if(f)return f;if(await F(s,"MERGE_HEAD"))return I(`You have not concluded your merge (MERGE_HEAD exists).
|
|
440
442
|
Please, commit your changes before you merge.`);if(await F(s,"CHERRY_PICK_HEAD"))return I(`You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
|
|
441
443
|
Please, commit your changes before you merge.`);let u=await Be(s,i);if(!u)return L(`merge: ${i} - not something we can merge
|
|
442
444
|
`);let m=await _e(s,u),h=await Nt(s,a,m),p=h[0]??null;if(h.length===0)return I("refusing to merge unrelated histories");if(p===m)return await pe(s,"MERGE_MSG"),{stdout:`Already up to date.${n.squash?" (nothing to squash)":""}
|
|
@@ -452,42 +454,42 @@ hint: Disable this message with "git config set advice.diverging false"
|
|
|
452
454
|
fatal: Not possible to fast-forward, aborting.
|
|
453
455
|
`,128);if(await F(s,"REVERT_HEAD")&&await jt(s),y&&!n.squash){let k=await Q(s),E=await wo(s,a,m);if(E.exitCode===0&&n.message&&(E.stdout=E.stdout.replace(/^Fast-forward$/m,"Fast-forward (no commit created; -m option ignored)")),E.exitCode===0){await pe(s,"MERGE_MSG");let R=k?.type==="symbolic"?k.target:"HEAD";await re(s,r.env,R,a,m,`merge ${i}: Fast-forward${n.message?" (no commit created; -m option ignored)":""}`,k?.type==="symbolic"),await t?.hooks?.postMerge?.({repo:s,headHash:a,theirsHash:m,strategy:"fast-forward",commitHash:null})}return E}let x=n.message,b=x?x.endsWith(`
|
|
454
456
|
`)?x:`${x}
|
|
455
|
-
`:void 0;return n.squash?
|
|
457
|
+
`:void 0;return n.squash?Fp(s,a,m,i,r.env,t,b):_p(s,a,m,i,r.env,g,t,b)}})}async function _p(e,t,n,r,o,s=!1,i,a){let c=await j(e,t),f=await Q(e),l=f?.type==="symbolic"?Re(f.target):"HEAD",d=await ke(e,"merge.conflictstyle")??"merge",u={a:"HEAD",b:r,conflictStyle:d},m=await fs(e,t,n,u),h=await kn(e,m,c.tree,{labels:u,errorExitCode:2,operationName:"merge"});if(!h.ok)return await pe(e,"MERGE_MSG"),h.failureKind==="staged"&&f?.type==="symbolic"&&await re(e,o,"HEAD",t,t,`merge ${r}: updating HEAD`),h;if(m.conflicts.length>0){await X(e,"MERGE_HEAD",n),await X(e,"ORIG_HEAD",t);let v=a??await fr(e,r,l),D={repo:e,message:v,treeHash:h.mergedTreeHash,headHash:t,theirsHash:n},O=await i?.hooks?.mergeMsg?.(D);if(ee(O))return{stdout:"",stderr:O.message??"",exitCode:1};v=D.message;let H=Bt({version:2,entries:m.entries}).sort();return v+=`
|
|
456
458
|
# Conflicts:
|
|
457
459
|
${H.map(A=>`# ${A}`).join(`
|
|
458
460
|
`)}
|
|
459
461
|
`,await Te(e,"MERGE_MSG",v),await Te(e,"MERGE_MODE",s?"no-ff":""),{stdout:`${[...m.messages,"Automatic merge failed; fix conflicts and then commit the result."].join(`
|
|
460
462
|
`)}
|
|
461
|
-
`,stderr:"",exitCode:1}}await pe(e,"MERGE_MSG");let p=h.mergedTreeHash,g=await on(e,o);if(M(g))return g;let w=await Qe(e,o);if(M(w))return w;let y=a??await fr(e,r,l),x={repo:e,message:y,treeHash:p,headHash:t,theirsHash:n},b=await i?.hooks?.mergeMsg?.(x);if(ee(b))return{stdout:"",stderr:b.message??"",exitCode:1};y=x.message;let k=await i?.hooks?.preMergeCommit?.({repo:e,mergeMessage:y,treeHash:p,headHash:t,theirsHash:n});if(ee(k))return{stdout:"",stderr:k.message??"",exitCode:1};let E=await
|
|
463
|
+
`,stderr:"",exitCode:1}}await pe(e,"MERGE_MSG");let p=h.mergedTreeHash,g=await on(e,o);if(M(g))return g;let w=await Qe(e,o);if(M(w))return w;let y=a??await fr(e,r,l),x={repo:e,message:y,treeHash:p,headHash:t,theirsHash:n},b=await i?.hooks?.mergeMsg?.(x);if(ee(b))return{stdout:"",stderr:b.message??"",exitCode:1};y=x.message;let k=await i?.hooks?.preMergeCommit?.({repo:e,mergeMessage:y,treeHash:p,headHash:t,theirsHash:n});if(ee(k))return{stdout:"",stderr:k.message??"",exitCode:1};let E=await ht(e,p,[t,n],g,w,y),R=f?.type==="symbolic"?f.target:"HEAD";await re(e,o,R,t,E,`merge ${r}: Merge made by the 'ort' strategy.`,f?.type==="symbolic"),await i?.hooks?.postMerge?.({repo:e,headHash:t,theirsHash:n,strategy:"three-way",commitHash:E});let C=await Bn(e,c.tree,p);return{stdout:`${m.messages.length>0?`${m.messages.join(`
|
|
462
464
|
`)}
|
|
463
465
|
`:""}Merge made by the 'ort' strategy.
|
|
464
|
-
${
|
|
466
|
+
${C}`,stderr:"",exitCode:0}}async function Np(e,t,n){let r=[];for await(let o of Dt(e,n,{exclude:[t]})){if(o.commit.parents.length>1)continue;r.push(`commit ${o.hash}`);let s=o.commit.author;r.push(`Author: ${s.name} <${s.email}>`),r.push(`Date: ${_t(s.timestamp,s.timezone)}`),r.push("");for(let i of o.commit.message.replace(/\n+$/,"").split(`
|
|
465
467
|
`))r.push(` ${i}`);r.push("")}return r.join(`
|
|
466
|
-
`)}async function
|
|
468
|
+
`)}async function Fp(e,t,n,r,o,s,i){let a=await j(e,t),c=await Q(e),f=await ke(e,"merge.conflictstyle")??"merge",l={a:"HEAD",b:r,conflictStyle:f},d=await Nt(e,t,n),u=d.length>0&&d[0]===t,m=u?`Updating ${Y(t)}..${Y(n)}
|
|
467
469
|
`:"",h=await fs(e,t,n,l),p=await kn(e,h,a.tree,{labels:l,errorExitCode:u?1:2,operationName:"merge",skipStagedChangeCheck:u});if(!p.ok){await pe(e,"MERGE_MSG"),!u&&p.failureKind==="staged"&&c?.type==="symbolic"&&await re(e,o,"HEAD",t,t,`merge ${r}: updating HEAD`);let k=p;return m&&(k.stdout=m+k.stdout),k}let g;if(i?g=`Squashed commit of the following:
|
|
468
470
|
|
|
469
471
|
${i}`:g=`Squashed commit of the following:
|
|
470
472
|
|
|
471
|
-
${await
|
|
473
|
+
${await Np(e,t,n)}`,await Te(e,"SQUASH_MSG",g),h.conflicts.length>0){let E=`
|
|
472
474
|
# Conflicts:
|
|
473
|
-
${Bt({version:2,entries:h.entries}).sort().map(
|
|
475
|
+
${Bt({version:2,entries:h.entries}).sort().map(P=>`# ${P}`).join(`
|
|
474
476
|
`)}
|
|
475
|
-
`,R=await
|
|
477
|
+
`,R=await Pe(e,"MERGE_MSG");return await Te(e,"MERGE_MSG",(R??"")+E),{stdout:`${[...h.messages,"Squash commit -- not updating HEAD","Automatic merge failed; fix conflicts and then commit the result."].join(`
|
|
476
478
|
`)}
|
|
477
479
|
`,stderr:"",exitCode:1}}let w=p.mergedTreeHash,y=await Bn(e,a.tree,w),x=h.messages.length>0?`${h.messages.join(`
|
|
478
480
|
`)}
|
|
479
481
|
`:"";return{stdout:`${u?`${m}Fast-forward
|
|
480
482
|
`:""}${x}Squash commit -- not updating HEAD
|
|
481
483
|
${u?y:""}`,stderr:u?"":`Automatic merge went well; stopped before committing as requested
|
|
482
|
-
`,exitCode:0}}async function
|
|
483
|
-
${k}`,stderr:"",exitCode:0}}async function
|
|
484
|
-
`);let f=c[c.length-1],l=c.slice(0,-1),d=It(r.cwd,f),u=ft(a,d);if(u.startsWith(".."))return I(`'${f}' is outside repository at '${a}'`);let m=await K(s),h=await r.fs.exists(d),p=h&&(await r.fs.stat(d)).isDirectory;if(l.length>1&&!p)return I(h?`destination '${f}' is not a directory`:`destination directory '${f}' does not exist`);let g=[];for(let w of l){let y=It(r.cwd,w),x=ft(a,y);if(x.startsWith("..")){if(n.skip)continue;return I(`'${w}' is outside repository at '${a}'`)}if(!await r.fs.exists(y)){if(n.skip)continue;return I(`bad source, source=${x}, destination=${u}`)}let E=(await r.fs.stat(y)).isDirectory;if(!(E?m.entries.some(O=>O.path===x||O.path.startsWith(`${x}/`)):m.entries.some(O=>O.path===x&&O.stage===0))){let O=!E&&m.entries.some(H=>H.path===x&&H.stage>0);if(n.skip)continue;return I(O?`conflicted, source=${x}, destination=${u}`:`not under version control, source=${x}, destination=${u}`)}let P
|
|
484
|
+
`,exitCode:0}}async function Up(e,t,n){let r=await F(e,"MERGE_HEAD");if(!r)return I("There is no merge in progress (MERGE_HEAD missing).");let o=await K(e),s=wn(o,"Committing");if(s)return s;let i=await Ze(e);if(M(i))return i;let a=await j(e,i),c=await Pe(e,"MERGE_MSG");if(c)c=an(c);else{let C=await Q(e),P=C?.type==="symbolic"?Re(C.target):"HEAD";c=await fr(e,"unknown",P)}let f=De(o),l=await Ge(e,f),d=await on(e,t);if(M(d))return d;let u=await Qe(e,t);if(M(u))return u;let m=At(c),h={repo:e,message:m,treeHash:l,headHash:i,theirsHash:r},p=await n?.hooks?.mergeMsg?.(h);if(ee(p))return{stdout:"",stderr:p.message??"",exitCode:1};m=h.message;let g=await n?.hooks?.preMergeCommit?.({repo:e,mergeMessage:m,treeHash:l,headHash:i,theirsHash:r});if(ee(g))return{stdout:"",stderr:g.message??"",exitCode:1};let w=await ht(e,l,[i,r],d,u,m);await ts(e);let y=await Q(e),x=fe(m),b=y?.type==="symbolic"?y.target:"HEAD";await re(e,t,b,i,w,`commit (merge): ${x}`,y?.type==="symbolic"),await n?.hooks?.postMerge?.({repo:e,headHash:i,theirsHash:r,strategy:"three-way",commitHash:w});let k=await Bn(e,a.tree,l),E=y?.type==="symbolic"?Re(y.target):"detached HEAD";return{stdout:`${Ht(E,w,c)}
|
|
485
|
+
${k}`,stderr:"",exitCode:0}}async function Bp(e,t){return Dn(e,t,{operationRef:"MERGE_HEAD",noOpError:I("There is no merge to abort (MERGE_HEAD missing)."),operationName:"merge",clearState:ts})}se();Ce();le();tt();function Cl(e,t){e.command("mv",{description:"Move or rename a file, directory, or symlink",args:[q.string().name("sources").describe("Source file(s) or directory").optional().variadic()],options:{force:$().alias("f").describe("Force renaming even if target exists"),"dry-run":$().alias("n").describe("Do nothing; only show what would happen"),skip:$().alias("k").describe("Skip move/rename actions that would lead to errors")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=Xe(s);if(i)return i;let a=s.workTree,c=n.sources;if(c.length<2)return L(`usage: git mv [<options>] <source>... <destination>
|
|
486
|
+
`);let f=c[c.length-1],l=c.slice(0,-1),d=It(r.cwd,f),u=ft(a,d);if(u.startsWith(".."))return I(`'${f}' is outside repository at '${a}'`);let m=await K(s),h=await r.fs.exists(d),p=h&&(await r.fs.stat(d)).isDirectory;if(l.length>1&&!p)return I(h?`destination '${f}' is not a directory`:`destination directory '${f}' does not exist`);let g=[];for(let w of l){let y=It(r.cwd,w),x=ft(a,y);if(x.startsWith("..")){if(n.skip)continue;return I(`'${w}' is outside repository at '${a}'`)}if(!await r.fs.exists(y)){if(n.skip)continue;return I(`bad source, source=${x}, destination=${u}`)}let E=(await r.fs.stat(y)).isDirectory;if(!(E?m.entries.some(O=>O.path===x||O.path.startsWith(`${x}/`)):m.entries.some(O=>O.path===x&&O.stage===0))){let O=!E&&m.entries.some(H=>H.path===x&&H.stage>0);if(n.skip)continue;return I(O?`conflicted, source=${x}, destination=${u}`:`not under version control, source=${x}, destination=${u}`)}let C,P;if(p){let O=Mr(x);C=u===""||u==="."?O:`${u}/${O}`,P=T(d,O)}else C=u,P=d;if(await r.fs.exists(P)&&!n.force)if((await r.fs.stat(P)).isDirectory){let H=Mr(x);C=`${C}/${H}`,P=T(P,H)}else{if(n.skip)continue;return I(`destination exists, source=${x}, destination=${C}`)}if(x===C){if(n.skip)continue;return I(`can not move directory into itself, source=${x}, destination=${C}`)}let D=Zt(P);if(!await r.fs.exists(D)){if(n.skip)continue;return I(`renaming '${x}' failed: No such file or directory`)}if(E){let O=`${x}/`,H=m.entries.filter(G=>G.path.startsWith(O)&&G.stage===0);for(let G of H){let A=G.path.slice(x.length),S=C+A,N=P+A;g.push({srcRel:G.path,dstRel:S,srcAbs:T(a,G.path),dstAbs:N})}}else g.push({srcRel:x,dstRel:C,srcAbs:y,dstAbs:P})}if(g.length===0)return{stdout:"",stderr:"",exitCode:0};if(n["dry-run"])return{stdout:"",stderr:"",exitCode:0};for(let w of g){let y=Zt(w.dstAbs);await r.fs.exists(y)||await r.fs.mkdir(y,{recursive:!0});let x=await r.fs.readFileBuffer(w.srcAbs);await r.fs.writeFile(w.dstAbs,x),await r.fs.rm(w.srcAbs);let b=Ts(m,w.srcRel,0);if(b){m=at(m,w.srcRel);let k={...b,path:w.dstRel};m=Et(m,k)}}for(let w of g)await er(r.fs,Zt(w.srcAbs),a);return await ae(s,m),{stdout:"",stderr:"",exitCode:0}}})}se();Ne();Pn();Ce();ie();le();dt();Fe();ue();se();Ne();Ce();ie();se();ie();un();Yn();ve();async function ra(e,t){let n=await we(e,t);if(n.type!=="commit")return null;let r=en(n.content),o=null;if(r.parents.length>0&&r.parents[0]){let f=await we(e,r.parents[0]);f.type==="commit"&&(o=en(f.content).tree)}let s=await We(e,o,r.tree);if(s.length===0)return null;let i=Vn(),a=!1,c=[...s].sort((f,l)=>Oe(f.path,l.path));for(let f of c){let l="",d="";if(f.oldHash)try{let m=await we(e,f.oldHash);l=new TextDecoder().decode(m.content)}catch{}if(f.newHash)try{let m=await we(e,f.newHash);d=new TextDecoder().decode(m.content)}catch{}let u=Pt({path:f.path,oldContent:l,newContent:d,oldMode:f.oldMode,newMode:f.newMode});if(u)for(let m of u.split(`
|
|
485
487
|
`)){if(!m||m.startsWith("index "))continue;let p=(m.startsWith("@@")?m.replace(/^@@ [^@]* @@/,"@@ @@"):m).replace(/[ \t\r]/g,"");p&&(i.update(p),i.update(`
|
|
486
|
-
`),a=!0)}}return a?i.hex():null}Fe();ue();ve();sn();tt();async function
|
|
488
|
+
`),a=!0)}}return a?i.hex():null}Fe();ue();ve();sn();tt();async function Wp(e){let t=await Q(e);return t?.type==="symbolic"?Re(t.target):"detached HEAD"}function Ol(e){return e==="HEAD"?`HEAD is up to date.
|
|
487
489
|
`:`Current branch ${e} is up to date.
|
|
488
|
-
`}async function
|
|
489
|
-
`)}return null}async function
|
|
490
|
-
`,exitCode:128}:null}async function Il(e,t,n){if(!e.workTree)return null;let r=new Map(
|
|
490
|
+
`}async function qp(e,t,n){if(!e.workTree)return null;let r=await ce(e,t),o=new Map(De(n).map(a=>[a.path,a])),s=new Set(await et(e,e.workTree,"")),i=[];for(let[a]of r)o.has(a)||s.has(a)&&i.push({path:a,error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN"});if(i.length>0){let a=Ks(i,{errorExitCode:1,operationName:"checkout",actionHint:"switch branches"});return L(`${a.stderr}error: could not detach HEAD
|
|
491
|
+
`)}return null}async function zp(e,t,n,r){if(!e.workTree)return null;let o=await ce(e,t),s=new Set(n.entries.map(c=>c.path)),i=new Set(await et(e,e.workTree,"")),a=[];for(let[c]of o)!s.has(c)&&i.has(c)&&a.push({path:c,error:"WOULD_LOSE_UNTRACKED_OVERWRITTEN"});return a.length>0?{stdout:"",stderr:`${Ks(a,{errorExitCode:128,operationName:"reset",actionHint:"reset"}).stderr}fatal: could not move back to ${r}
|
|
492
|
+
`,exitCode:128}:null}async function Il(e,t,n){if(!e.workTree)return null;let r=new Map(De(t).map(i=>[i.path,i])),o=new Set(await et(e,e.workTree,"")),s=[];for(let[i]of n)!r.has(i)&&o.has(i)&&s.push(i);return s.length>0?s:null}function $l(e,t){return`error: The following untracked working tree files would be overwritten by merge:
|
|
491
493
|
${e.map(r=>` ${r}`).join(`
|
|
492
494
|
`)}
|
|
493
495
|
Please move or remove them before you merge.
|
|
@@ -501,11 +503,11 @@ hint: edit the todo list first:
|
|
|
501
503
|
hint:
|
|
502
504
|
hint: git rebase --edit-todo
|
|
503
505
|
hint: git rebase --continue
|
|
504
|
-
`}async function sa(e,t,n,r,o,s){await re(e,t,"HEAD",n,r,`rebase (start): checkout ${s}`),o!=="detached HEAD"&&(await re(e,t,o,n,r,`rebase (finish): ${o} onto ${r}`),await re(e,t,"HEAD",r,r,`rebase (finish): returning to ${o}`))}async function Ao(e,t,n,r){let o=await j(e,t),s=await
|
|
506
|
+
`}async function sa(e,t,n,r,o,s){await re(e,t,"HEAD",n,r,`rebase (start): checkout ${s}`),o!=="detached HEAD"&&(await re(e,t,o,n,r,`rebase (finish): ${o} onto ${r}`),await re(e,t,"HEAD",r,r,`rebase (finish): returning to ${o}`))}async function Ao(e,t,n,r){let o=await j(e,t),s=await qp(e,o.tree,n);if(s)return s;let i=await gn(e,o.tree,n);return i.success&&(await ae(e,{version:2,entries:i.newEntries}),await Me(e,i.worktreeOps)),r!=="detached HEAD"?await X(e,r,t):await X(e,"HEAD",t),null}async function oa(e,t,n,r,o,s,i,a){let c=r.startsWith("refs/heads/")?Re(r):"HEAD",f=await K(e),l=Bt(f).sort();if(l.length>0)return{stdout:l.map(O=>`${O}: needs merge
|
|
505
507
|
`).join(""),stderr:`error: cannot rebase: You have unstaged changes.
|
|
506
508
|
error: additionally, your index contains uncommitted changes.
|
|
507
509
|
error: Please commit or stash them.
|
|
508
|
-
`,exitCode:1};let d=await j(e,n),u=await ce(e,d.tree);if(e.workTree){let O=
|
|
510
|
+
`,exitCode:1};let d=await j(e,n),u=await ce(e,d.tree);if(e.workTree){let O=Er(f,u),G=(await Tt(e,f)).some(A=>A.status==="modified"||A.status==="deleted");if(O||G){let A=[];return G&&A.push("error: cannot rebase: You have unstaged changes."),O&&(G?A.push("error: additionally, your index contains uncommitted changes."):A.push("error: cannot rebase: Your index contains uncommitted changes.")),A.push("error: Please commit or stash them."),L(`${A.join(`
|
|
509
511
|
`)}
|
|
510
512
|
`)}}let m=await a?.hooks?.preRebase?.({repo:e,upstream:i,branch:r!=="detached HEAD"?c:null});if(ee(m))return{stdout:"",stderr:m.message??"",exitCode:1};let h=await zc(e,o,n),p=h.right;if(p.length===0){if(s!==n){let O=await Ao(e,s,f,r);return O||(await sa(e,t,n,s,r,i),{stdout:"",stderr:`Successfully rebased and updated ${r}.
|
|
511
513
|
`,exitCode:0})}return{stdout:Ol(c),stderr:"",exitCode:0}}let g=[],w=h.left,y=new Set;for(let O of w){let H=await ra(e,O.hash);H&&y.add(H)}let x=[];if(y.size>0)for(let O of p){let H=await ra(e,O.hash);H&&y.has(H)?g.push(`warning: skipped previously applied commit ${Y(O.hash)}`):x.push(O)}else x.push(...p);let b="";if(g.length>0&&(b=`${g.join(`
|
|
@@ -513,8 +515,8 @@ error: Please commit or stash them.
|
|
|
513
515
|
hint: use --reapply-cherry-picks to include skipped commits
|
|
514
516
|
hint: Disable this message with "git config set advice.skippedCherryPicks false"
|
|
515
517
|
`),x.length===0){if(s!==n){let O=await Ao(e,s,f,r);if(O)return O.stderr=b+O.stderr,O;await sa(e,t,n,s,r,i)}return{stdout:"",stderr:`${b}Successfully rebased and updated ${r}.
|
|
516
|
-
`,exitCode:0}}let k=x.map(O=>({hash:O.hash,subject:fe(O.commit.message)})),E=s,R=0;for(let O of k){let H=await j(e,O.hash);if(H.parents.length>1||H.parents.length===0||H.parents[0]!==E)break;E=O.hash,R++}let
|
|
517
|
-
`,exitCode:0})}let
|
|
518
|
+
`,exitCode:0}}let k=x.map(O=>({hash:O.hash,subject:fe(O.commit.message)})),E=s,R=0;for(let O of k){let H=await j(e,O.hash);if(H.parents.length>1||H.parents.length===0||H.parents[0]!==E)break;E=O.hash,R++}let C=k.splice(0,R);if(k.length===0){if(E===n)return{stdout:Ol(c),stderr:b,exitCode:0};let O=await Ao(e,E,f,r);return O?(O.stderr=b+O.stderr,O):(await sa(e,t,n,E,r,i),{stdout:"",stderr:`${b}Successfully rebased and updated ${r}.
|
|
519
|
+
`,exitCode:0})}let P=await Ao(e,E,f,"detached HEAD");if(P)return P.stderr=b+P.stderr,P;await de(e,"CHERRY_PICK_HEAD"),await de(e,"REVERT_HEAD"),await pe(e,"MERGE_MSG"),await pe(e,"MERGE_MODE"),await re(e,t,"HEAD",n,E,`rebase (start): checkout ${i}`);let v={headName:r,origHead:n,onto:s,todo:k,done:C,msgnum:R,end:R+k.length};await Oi(e,v),await X(e,"ORIG_HEAD",n);let D=await ia(e,t);return b&&(D.stderr=b+D.stderr),D}function Sl(e,t){e.command("rebase",{description:"Reapply commits on top of another base tip",args:[q.string().name("upstream").describe("Upstream branch to rebase onto").optional()],options:{onto:J.string().describe("Starting point at which to create new commits"),abort:$().describe("Abort the current rebase operation"),continue:$().describe("Continue the rebase after conflict resolution"),skip:$().describe("Skip the current patch and continue")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(n.abort)return Yp(s,r.env);if(n.continue)return Xp(s,r.env);if(n.skip)return Zp(s,r.env);let i=n.upstream;if(!i)return I("no upstream configured and no upstream argument given");if(await Gt(s))return I(`It seems that there is already a rebase-merge directory, and
|
|
518
520
|
I wonder if you are in the middle of another rebase. If that is the
|
|
519
521
|
case, please try
|
|
520
522
|
git rebase (--continue | --abort | --skip)
|
|
@@ -522,9 +524,9 @@ If that is not the case, please
|
|
|
522
524
|
rm -fr ".git/rebase-merge"
|
|
523
525
|
and run me again. I am stopping in case you still have something
|
|
524
526
|
valuable there.
|
|
525
|
-
`);let a=await Ze(s);if(M(a))return a;let c=await Q(s),f=c?.type==="symbolic"?c.target:"detached HEAD",l=await He(s,i,`invalid upstream '${i}'`);if(M(l))return l;let d=l.hash,u,m=n.onto;if(m){let h=await He(s,m,`Does not point to a valid commit: '${m}'`);if(M(h))return h;u=h.hash}else u=d;return oa(s,r.env,a,f,d,u,i,t)}})}async function ia(e,t){let n=[],r=[];for(;;){let o=await
|
|
527
|
+
`);let a=await Ze(s);if(M(a))return a;let c=await Q(s),f=c?.type==="symbolic"?c.target:"detached HEAD",l=await He(s,i,`invalid upstream '${i}'`);if(M(l))return l;let d=l.hash,u,m=n.onto;if(m){let h=await He(s,m,`Does not point to a valid commit: '${m}'`);if(M(h))return h;u=h.hash}else u=d;return oa(s,r.env,a,f,d,u,i,t)}})}async function ia(e,t){let n=[],r=[];for(;;){let o=await gt(e);if(!o||o.todo.length===0)break;let s=o.todo[0];if(!s)break;n.push(`Rebasing (${o.msgnum+1}/${o.end})\r`),await qc(e);let i=await Kp(e,s,t);if(i.conflict){if(i.rescheduleCurrent){let a=await gt(e);a&&(a.todo=[s,...a.todo],await Oi(e,a))}return i.stdout&&r.push(i.stdout),n.push(i.stderr),{stdout:r.join(""),stderr:n.join(""),exitCode:1}}i.stdout&&r.push(i.stdout),i.stderr&&n.push(i.stderr)}return Vp(e,n,t)}async function Kp(e,t,n){let r=t.hash,o=await j(e,r),s=o.parents.length>0?o.parents[0]:null,i=s?await j(e,s):null,a=await Z(e);if(!a)return{conflict:!0,stdout:"",stderr:`fatal: no HEAD commit during rebase
|
|
526
528
|
`};if(s&&s===a){let G=await K(e);if(!i)return{conflict:!0,stdout:"",stderr:`fatal: missing parent commit during rebase
|
|
527
|
-
`};let A=await Ve(e,i.tree)
|
|
529
|
+
`};let A=await Ve(e,i.tree),S=await Ve(e,o.tree),N=new Map(A.map(U=>[U.path,U.hash])),B=new Map;for(let U of S){let V=N.get(U.path);(!V||V!==U.hash)&&B.set(U.path,U.hash)}let z=await Il(e,G,B);if(z)return await X(e,"REBASE_HEAD",r),await no(e,r,o.author),{conflict:!0,stdout:"",stderr:$l(z,t),rescheduleCurrent:!0};let _=await gn(e,o.tree,G);return _.success&&(await ae(e,{version:2,entries:_.newEntries}),await Me(e,_.worktreeOps)),await $n(e,r),await re(e,n,"HEAD",a,r,`rebase (pick): ${t.subject}`),{conflict:!1,stdout:"",stderr:""}}let c=await j(e,a),f=i?i.tree:null,l=Y(r),d=fe(o.message),u=await ke(e,"merge.conflictstyle")??"merge",m={a:"HEAD",b:d?`${l} (${d})`:l,conflictStyle:u},h=await Ft(e,f,c.tree,o.tree,m),p=await K(e),[g,w,y]=await Promise.all([Ve(e,c.tree),f?Ve(e,f):Promise.resolve([]),Ve(e,o.tree)]),x=new Set;for(let G of w)x.add(G.path);for(let G of g)x.add(G.path);for(let G of y)x.add(G.path);let b=p.entries.filter(G=>!x.has(G.path)),k=[...h.entries,...b];k.sort((G,A)=>Oe(G.path,A.path)||G.stage-A.stage);let E={version:2,entries:k},R=k.filter(G=>G.stage===0),C=await Ge(e,R),P=new Map(g.map(G=>[G.path,G])),v=new Map;for(let G of R){let A=P.get(G.path);(!A||A.hash!==G.hash)&&v.set(G.path,G.hash)}for(let G of h.conflicts){if(G.reason==="content"||G.reason==="add-add"){v.set(G.path,null);continue}if(G.reason==="delete-modify"){let A=h.entries.filter(B=>B.path===G.path&&B.stage>0),S=A.find(B=>B.stage===2),N=A.find(B=>B.stage===3);N&&!S&&v.set(G.path,N.hash)}}let D=await Il(e,p,v);if(D)return await X(e,"REBASE_HEAD",r),await no(e,r,o.author),{conflict:!0,stdout:"",stderr:$l(D,t),rescheduleCurrent:!0};if(await ae(e,E),e.workTree){let G=await An(e,c.tree,h.resultTree,p);G.success&&await Me(e,G.worktreeOps)}if(h.conflicts.length>0){await X(e,"REBASE_HEAD",r),await no(e,r,o.author),await Te(e,"MERGE_MSG",o.message),await Te(e,"rebase-merge/message",o.message);let G=h.messages.join(`
|
|
528
530
|
`);return{conflict:!0,stdout:G?`${G}
|
|
529
531
|
`:"",stderr:`error: could not apply ${l}... ${t.subject}
|
|
530
532
|
hint: Resolve all conflicts manually, mark them as resolved with
|
|
@@ -533,13 +535,13 @@ hint: You can instead skip this commit: run "git rebase --skip".
|
|
|
533
535
|
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
|
|
534
536
|
hint: Disable this message with "git config set advice.mergeConflict false"
|
|
535
537
|
Could not apply ${l}... # ${t.subject}
|
|
536
|
-
`}}if(
|
|
537
|
-
`};let O=await Qe(e,n);if(M(O))return{conflict:!0,stdout:"",stderr:O.stderr};let H=await
|
|
538
|
-
`;return await de(e,"REBASE_HEAD"),await sr(e),await Ii(e),{stdout:"",stderr:t.join("")+i,exitCode:0}}async function
|
|
538
|
+
`}}if(C===c.tree)return{conflict:!1,stdout:"",stderr:`dropping ${r} ${t.subject} -- patch contents already upstream
|
|
539
|
+
`};let O=await Qe(e,n);if(M(O))return{conflict:!0,stdout:"",stderr:O.stderr};let H=await ht(e,C,[a],o.author,O,o.message);return await re(e,n,"HEAD",a,H,`rebase (pick): ${t.subject}`),{conflict:!1,stdout:"",stderr:""}}async function Vp(e,t,n){let r=await gt(e);if(!r)return I("no rebase in progress");let o=await Z(e);if(!o)return I("no HEAD during rebase finish");r.headName!=="detached HEAD"&&(await X(e,r.headName,o),await ze(e,"HEAD",r.headName),await pt(e),await re(e,n,r.headName,r.origHead,o,`rebase (finish): ${r.headName} onto ${r.onto}`),await re(e,n,"HEAD",o,o,`rebase (finish): returning to ${r.headName}`));let i=`Successfully rebased and updated ${r.headName}.
|
|
540
|
+
`;return await de(e,"REBASE_HEAD"),await sr(e),await Ii(e),{stdout:"",stderr:t.join("")+i,exitCode:0}}async function Yp(e,t){let n=await gt(e);if(!n)return I("no rebase in progress");let r=await Z(e),o=n.origHead,s=await j(e,o),i=await K(e),a=await zp(e,s.tree,i,o);if(a)return a;let c=await gn(e,s.tree,i);c.success&&(await ae(e,{version:2,entries:c.newEntries}),await Me(e,c.worktreeOps)),n.headName!=="detached HEAD"?(await X(e,n.headName,o),await ze(e,"HEAD",n.headName),await pt(e)):await $n(e,o);let f=n.headName==="detached HEAD"?o:n.headName;return await re(e,t,"HEAD",r,o,`rebase (abort): returning to ${f}`),await de(e,"REBASE_HEAD"),await sr(e),await Ii(e),{stdout:"",stderr:"",exitCode:0}}async function Xp(e,t){let n="";if(!await gt(e))return I("no rebase in progress");let o=await K(e);if(St(o))return L(`error: Committing is not possible because you have unmerged files.
|
|
539
541
|
hint: Fix them up in the work tree, and then use 'git add <file>'
|
|
540
542
|
hint: as appropriate to mark resolution and make a commit.
|
|
541
543
|
fatal: Exiting because of an unresolved conflict.
|
|
542
|
-
`,128);let s=await F(e,"REBASE_HEAD");if(s){let a=await Z(e);if(!a)return I("Cannot read HEAD");let c=await j(e,a),f=
|
|
544
|
+
`,128);let s=await F(e,"REBASE_HEAD");if(s){let a=await Z(e);if(!a)return I("Cannot read HEAD");let c=await j(e,a),f=De(o),l=await Ge(e,f),d=l!==c.tree,u=await Pe(e,"rebase-merge/message")!==null;if(d&&!u)return L(`error: you have staged changes in your working tree
|
|
543
545
|
If these changes are meant to be squashed into the previous commit, run:
|
|
544
546
|
|
|
545
547
|
git commit --amend
|
|
@@ -552,33 +554,33 @@ In both cases, once you're done, continue with:
|
|
|
552
554
|
|
|
553
555
|
git rebase --continue
|
|
554
556
|
|
|
555
|
-
`);if(d){let m=await j(e,s),h=await F(e,"CHERRY_PICK_HEAD"),p=h?await j(e,h):m,g;g=await
|
|
556
|
-
${
|
|
557
|
+
`);if(d){let m=await j(e,s),h=await F(e,"CHERRY_PICK_HEAD"),p=h?await j(e,h):m,g;g=await Pe(e,"rebase-merge/message")??await Pe(e,"MERGE_MSG")??void 0,g&&(g=an(g)),g||(g=m.message);let w=await Qe(e,t);if(M(w))return w;let y=At(g),x=[a],b=await F(e,"MERGE_HEAD");b&&x.push(b);let k=await ht(e,l,x,p.author,w,y);b&&(await de(e,"MERGE_HEAD"),await pe(e,"MERGE_MODE"));let E=fe(y);await re(e,t,"HEAD",a,k,`rebase (continue): ${E}`);let R=await Wp(e),C=p.author.timestamp!==w.timestamp||p.author.timezone!==w.timezone,P=await fn(e,c.tree,l,p.author,w,C);n=`${Ht(R,k,y)}
|
|
558
|
+
${P}`}await de(e,"REBASE_HEAD"),await de(e,"CHERRY_PICK_HEAD"),await de(e,"REVERT_HEAD"),await pe(e,"MERGE_MSG"),await pe(e,"rebase-merge/message")}let i=await ia(e,t);return n&&(i.stdout=n+i.stdout),i}async function Zp(e,t){if(!await gt(e))return I("no rebase in progress");let r=await Z(e);if(!r)return{stdout:"",stderr:`error: could not determine HEAD revision
|
|
557
559
|
fatal: could not discard worktree changes
|
|
558
|
-
`,exitCode:128};let o=await j(e,r),s=await K(e),i=await gn(e,o.tree,s);return i.success&&(await ae(e,{version:2,entries:i.newEntries}),await
|
|
559
|
-
`,128);let f=n.remote,l=n.branch;if(!f){let ne=await Q(s);if(ne?.type==="symbolic"){let Ae=ne.target.startsWith("refs/heads/")?ne.target.slice(11):ne.target,Xt=(await he(s))[`branch "${Ae}"`];Xt&&(f=Xt.remote||"origin",!l&&Xt.merge&&(l=Xt.merge.startsWith("refs/heads/")?Xt.merge.slice(11):Xt.merge))}}f=f||"origin";let d=!1;if(n.rebase)d=!0;else if(!n.noRebase){let ne=await Q(s);if(ne?.type==="symbolic"){let Ae=ne.target.startsWith("refs/heads/")?ne.target.slice(11):ne.target,dn=await ke(s,`branch.${Ae}.rebase`);(dn==="true"||dn!=="false"&&await ke(s,"pull.rebase")==="true")&&(d=!0)}else await ke(s,"pull.rebase")==="true"&&(d=!0)}let u;try{u=await
|
|
560
|
-
`),!A)return I("Could not determine remote HEAD");let
|
|
561
|
-
`,stderr:"",exitCode:0};if(d){let ne=await Q(s),Ae=ne?.type==="symbolic"?ne.target:"detached HEAD",dn=l?`${f}/${l}`:f,Xt=await oa(s,r.env,a,Ae
|
|
562
|
-
`,stderr:"",exitCode:0};let z=!!n.noFf,_=!!n.ffOnly;if(!n.noFf&&!n.ffOnly){let ne=await ke(s,"pull.ff");ne==="false"?z=!0:ne==="only"&&(_=!0)}let U=B===a;if(_&&!U)return I("Not possible to fast-forward, aborting.");if(U&&!z){let ne=await wo(s,a
|
|
560
|
+
`,exitCode:128};let o=await j(e,r),s=await K(e),i=await gn(e,o.tree,s);return i.success&&(await ae(e,{version:2,entries:i.newEntries}),await Me(e,i.worktreeOps)),await de(e,"REBASE_HEAD"),await de(e,"CHERRY_PICK_HEAD"),await de(e,"REVERT_HEAD"),await de(e,"MERGE_HEAD"),await pe(e,"MERGE_MSG"),await pe(e,"MERGE_MODE"),await pe(e,"rebase-merge/message"),ia(e,t)}function Tl(e,t){e.command("pull",{description:"Fetch from and integrate with another repository",args:[q.string().name("remote").describe("Remote to pull from").optional(),q.string().name("branch").describe("Remote branch").optional()],options:{rebase:$().alias("r").describe("Rebase instead of merge"),noRebase:$().describe("Merge instead of rebase"),ffOnly:$().describe("Only fast-forward"),noFf:$().describe("Create a merge commit even for fast-forwards"),depth:J.number().describe("Limit fetching to the specified number of commits"),unshallow:$().describe("Convert a shallow repository to a complete one")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(n.depth!==void 0&&n.unshallow)return I("--depth and --unshallow cannot be used together");if(n.unshallow&&!await yo(s))return I("--unshallow on a complete repository does not make sense");let i=n.depth;n.unshallow&&(i=ls);let a=await Ze(s);if(M(a))return a;let c=await K(s);if(St(c))return L(`error: Pulling is not possible because you have unmerged files.
|
|
561
|
+
`,128);let f=n.remote,l=n.branch;if(!f){let ne=await Q(s);if(ne?.type==="symbolic"){let Ae=ne.target.startsWith("refs/heads/")?ne.target.slice(11):ne.target,Xt=(await he(s))[`branch "${Ae}"`];Xt&&(f=Xt.remote||"origin",!l&&Xt.merge&&(l=Xt.merge.startsWith("refs/heads/")?Xt.merge.slice(11):Xt.merge))}}f=f||"origin";let d=!1;if(n.rebase)d=!0;else if(!n.noRebase){let ne=await Q(s);if(ne?.type==="symbolic"){let Ae=ne.target.startsWith("refs/heads/")?ne.target.slice(11):ne.target,dn=await ke(s,`branch.${Ae}.rebase`);(dn==="true"||dn!=="false"&&await ke(s,"pull.rebase")==="true")&&(d=!0)}else await ke(s,"pull.rebase")==="true"&&(d=!0)}let u;try{u=await vr(s,f,r.env)}catch(ne){let Ae=ne instanceof Error?ne.message:"";if(Ae.startsWith("network"))return I(Ae);throw ne}if(!u)return I(`'${f}' does not appear to be a git repository`);let{transport:m,config:h}=u,p=l??null,g=await t?.hooks?.prePull?.({repo:s,remote:f,branch:p});if(ee(g))return{stdout:"",stderr:g.message??"",exitCode:1};let w=ur(h.fetchRefspec),y=await m.advertiseRefs();if(y.length===0)return I("Couldn't find remote ref HEAD");let b=(await ge(s)).map(ne=>ne.hash),k=await F(s,"HEAD");k&&b.push(k);let E=[],R=new Set,C=[];for(let ne of y){if(ne.name==="HEAD")continue;let Ae=So(w,ne.name);Ae!==null&&(C.push({remote:ne,localRef:Ae}),R.has(ne.hash)||(R.add(ne.hash),E.push(ne.hash)))}let P=new Set(b),v=E.filter(ne=>!P.has(ne)),D,O=i!==void 0?await Or(s):void 0;i!==void 0&&(D={depth:i,existingShallows:O});let H=v.length>0?v:D?E:[];if(H.length>0){let ne=await m.fetch(H,b,D);ne.shallowUpdates&&await Ir(s,ne.shallowUpdates,O)}let G=await Jt(s,r.env);for(let ne of C){let Ae=await F(s,ne.localRef);await X(s,ne.localRef,ne.remote.hash),await Ke(s,ne.localRef,{oldHash:Ae??te,newHash:ne.remote.hash,name:G.name,email:G.email,timestamp:G.timestamp,tz:G.tz,message:Ae?"pull":"pull: storing head"})}let A=null;if(l){let ne=y.find(Ae=>Ae.name===`refs/heads/${l}`);if(ne)A=ne.hash;else return I(`Couldn't find remote ref refs/heads/${l}`)}else{let ne=y.find(Ae=>Ae.name==="HEAD");ne&&(A=ne.hash)}if(A&&await r.fs.writeFile(T(s.gitDir,"FETCH_HEAD"),`${A} ${h.url}
|
|
562
|
+
`),!A)return I("Could not determine remote HEAD");let S=A;if(a===S)return await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"up-to-date",commitHash:null}),{stdout:`Already up to date.
|
|
563
|
+
`,stderr:"",exitCode:0};if(d){let ne=await Q(s),Ae=ne?.type==="symbolic"?ne.target:"detached HEAD",dn=l?`${f}/${l}`:f,Xt=await oa(s,r.env,a,Ae,S,S,dn,t);return Xt.exitCode===0&&await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"rebase",commitHash:null}),Xt}let N=await Nt(s,a,S),B=N[0]??null;if(N.length===0)return I("refusing to merge unrelated histories");if(B===S)return await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"up-to-date",commitHash:null}),{stdout:`Already up to date.
|
|
564
|
+
`,stderr:"",exitCode:0};let z=!!n.noFf,_=!!n.ffOnly;if(!n.noFf&&!n.ffOnly){let ne=await ke(s,"pull.ff");ne==="false"?z=!0:ne==="only"&&(_=!0)}let U=B===a;if(_&&!U)return I("Not possible to fast-forward, aborting.");if(U&&!z){let ne=await wo(s,a,S),Ae=await Q(s),dn=Ae?.type==="symbolic"?Ae.target:"HEAD";return await Ke(s,dn,{oldHash:a,newHash:S,name:G.name,email:G.email,timestamp:G.timestamp,tz:G.tz,message:"pull: Fast-forward"}),Ae?.type==="symbolic"&&await Ke(s,"HEAD",{oldHash:a,newHash:S,name:G.name,email:G.email,timestamp:G.timestamp,tz:G.tz,message:"pull: Fast-forward"}),ne.exitCode===0&&(await t?.hooks?.postMerge?.({repo:s,headHash:a,theirsHash:S,strategy:"fast-forward",commitHash:null}),await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"fast-forward",commitHash:null})),ne}let V=await Q(s),be=V?.type==="symbolic"?Re(V.target):"HEAD",Le=l||f||"FETCH_HEAD",it=await ke(s,"merge.conflictstyle")??"merge",me={a:"HEAD",b:Le,conflictStyle:it},xe=await fs(s,a,S,me),Ut=await j(s,a),xn=await kn(s,xe,Ut.tree,{labels:me,errorExitCode:2,operationName:"merge"});if(!xn.ok)return xn;if(xe.conflicts.length>0){await X(s,"MERGE_HEAD",S),await X(s,"ORIG_HEAD",a);let ne=await fr(s,Le,be),Ae=Bt({version:2,entries:xe.entries}).sort();return ne+=`
|
|
563
565
|
# Conflicts:
|
|
564
566
|
${Ae.map(dn=>`# ${dn}`).join(`
|
|
565
567
|
`)}
|
|
566
568
|
`,await Te(s,"MERGE_MSG",ne),{stdout:`${[...xe.messages,"Automatic merge failed; fix conflicts and then commit the result."].join(`
|
|
567
569
|
`)}
|
|
568
|
-
`,stderr:"",exitCode:1}}let qe=xn.mergedTreeHash,
|
|
570
|
+
`,stderr:"",exitCode:1}}let qe=xn.mergedTreeHash,mr=await on(s,r.env);if(M(mr))return mr;let ys=await Qe(s,r.env);if(M(ys))return ys;let Es=await fr(s,Le,be),pa={repo:s,message:Es,treeHash:qe,headHash:a,theirsHash:S},ga=await t?.hooks?.mergeMsg?.(pa);if(ee(ga))return{stdout:"",stderr:ga.message??"",exitCode:1};Es=pa.message;let wa=await t?.hooks?.preMergeCommit?.({repo:s,mergeMessage:Es,treeHash:qe,headHash:a,theirsHash:S});if(ee(wa))return{stdout:"",stderr:wa.message??"",exitCode:1};let ks=await ht(s,qe,[a,S],mr,ys,Es);await t?.hooks?.postMerge?.({repo:s,headHash:a,theirsHash:S,strategy:"three-way",commitHash:ks}),await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"three-way",commitHash:ks});let rd=V?.type==="symbolic"?V.target:"HEAD",ba="pull: Merge made by the 'ort' strategy.";await Ke(s,rd,{oldHash:a,newHash:ks,name:G.name,email:G.email,timestamp:G.timestamp,tz:G.tz,message:ba}),V?.type==="symbolic"&&await Ke(s,"HEAD",{oldHash:a,newHash:ks,name:G.name,email:G.email,timestamp:G.timestamp,tz:G.tz,message:ba});let sd=await Bn(s,Ut.tree,qe);return{stdout:`${xe.messages.length>0?`${xe.messages.join(`
|
|
569
571
|
`)}
|
|
570
572
|
`:""}Merge made by the 'ort' strategy.
|
|
571
|
-
${sd}`,stderr:"",exitCode:0}}})}se();Ne();dt();ue();function vl(e,t){e.command("push",{description:"Update remote refs along with associated objects",args:[q.string().name("remote").describe("Remote to push to").optional(),q.string().name("refspec").describe("Refspec(s) to push").optional().variadic()],options:{force
|
|
572
|
-
`);m.push({name:E,oldHash:R,newHash:te,ok:l})}}else if(n.all){let b=await ge(s,"refs/heads");for(let k of b){let E=k.name,R=u.get(E)??null;m.push({name:E,oldHash:R,newHash:k.hash,ok:l})}}else if(n.tags){let b=await ge(s,"refs/tags");for(let k of b){let E=u.get(k.name)??null;E!==k.hash&&m.push({name:k.name,oldHash:E,newHash:k.hash,ok:l})}}else if(h&&h.length>0)for(let b of h){let k=
|
|
573
|
-
`);let R=k.dst.startsWith("refs/")?k.dst:`refs/heads/${k.dst}`,
|
|
574
|
-
`);let
|
|
573
|
+
${sd}`,stderr:"",exitCode:0}}})}se();Ne();dt();ue();function vl(e,t){e.command("push",{description:"Update remote refs along with associated objects",args:[q.string().name("remote").describe("Remote to push to").optional(),q.string().name("refspec").describe("Refspec(s) to push").optional().variadic()],options:{force:$().alias("f").describe("Force push"),"set-upstream":$().alias("u").describe("Set upstream tracking reference"),all:$().describe("Push all branches"),delete:$().alias("d").describe("Delete remote refs"),tags:$().describe("Push all tags")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=n.remote||"origin",a;try{a=await vr(s,i,r.env)}catch(b){let k=b instanceof Error?b.message:"";if(k.startsWith("network"))return I(k);throw b}if(!a)return I(`'${i}' does not appear to be a git repository`);let{transport:c,config:f}=a,l=n.force,d=await c.advertiseRefs(),u=new Map;for(let b of d)u.set(b.name,b.hash);let m=[],h=n.refspec;if(n.delete){let b=h&&h.length>0?h:[];if(b.length===0)return I("--delete requires a ref argument");for(let k of b){let E=k.startsWith("refs/")?k:`refs/heads/${k}`,R=u.get(E)??null;if(!R)return L(`error: unable to delete '${k}': remote ref does not exist
|
|
574
|
+
`);m.push({name:E,oldHash:R,newHash:te,ok:l})}}else if(n.all){let b=await ge(s,"refs/heads");for(let k of b){let E=k.name,R=u.get(E)??null;m.push({name:E,oldHash:R,newHash:k.hash,ok:l})}}else if(n.tags){let b=await ge(s,"refs/tags");for(let k of b){let E=u.get(k.name)??null;E!==k.hash&&m.push({name:k.name,oldHash:E,newHash:k.hash,ok:l})}}else if(h&&h.length>0)for(let b of h){let k=ur(b),E=await Qp(s,k.src);if(!E)return L(`error: src refspec '${k.src}' does not match any
|
|
575
|
+
`);let R=k.dst.startsWith("refs/")?k.dst:`refs/heads/${k.dst}`,C=u.get(R)??null;m.push({name:R,oldHash:C,newHash:E,ok:l||k.force})}else{let b=await Q(s);if(!b||b.type!=="symbolic")return I("You are not currently on a branch.");let k=b.target,E=k.startsWith("refs/heads/")?k.slice(11):k,R=await Z(s);if(!R)return L(`error: src refspec does not match any
|
|
576
|
+
`);let C=(await ke(s,"push.default"))?.toLowerCase()??"simple",P=await Jp(s,C,k,E,R,i,u,l);if("exitCode"in P)return P;m.push(P)}if(m.length===0)return{stdout:`Everything up-to-date
|
|
575
577
|
`,stderr:"",exitCode:0};let p=await t?.hooks?.prePush?.({repo:s,remote:i,url:f.url,refs:m.map(b=>({srcRef:b.newHash===te?null:b.name,srcHash:b.newHash===te?null:b.newHash,dstRef:b.name,dstHash:b.oldHash,force:!!b.ok,delete:b.newHash===te}))});if(ee(p))return L(p.message??"");let g=await c.push(m),w=[];w.push(`To ${f.url}
|
|
576
578
|
`);let y=!1;for(let b of g.updates){let k=b.name.startsWith("refs/heads/")?b.name.slice(11):b.name;if(!b.ok)w.push(` ! [rejected] ${k} -> ${k} (${b.error??"failed"})
|
|
577
579
|
`),y=!0;else if(!b.oldHash)w.push(` * [new branch] ${k} -> ${k}
|
|
578
580
|
`);else if(b.newHash===te)w.push(` - [deleted] ${k}
|
|
579
581
|
`);else{let E=Y(b.oldHash),R=Y(b.newHash);w.push(` ${E}..${R} ${k} -> ${k}
|
|
580
582
|
`)}}if(n["set-upstream"]&&!y){let b=await Q(s);if(b?.type==="symbolic"){let k=b.target.startsWith("refs/heads/")?b.target.slice(11):b.target,E=await he(s);E[`branch "${k}"`]={remote:i,merge:`refs/heads/${k}`},await Ye(s,E),w.push(`branch '${k}' set up to track '${i}/${k}'.
|
|
581
|
-
`)}}let x={stdout:"",stderr:w.join(""),exitCode:y?1:0};return y||await t?.hooks?.postPush?.({repo:s,remote:i,url:f.url,refs:m.map(b=>({srcRef:b.newHash===te?null:b.name,srcHash:b.newHash===te?null:b.newHash,dstRef:b.name,dstHash:b.oldHash,force:!!b.ok,delete:b.newHash===te}))}),x}})}async function
|
|
583
|
+
`)}}let x={stdout:"",stderr:w.join(""),exitCode:y?1:0};return y||await t?.hooks?.postPush?.({repo:s,remote:i,url:f.url,refs:m.map(b=>({srcRef:b.newHash===te?null:b.name,srcHash:b.newHash===te?null:b.newHash,dstRef:b.name,dstHash:b.oldHash,force:!!b.ok,delete:b.newHash===te}))}),x}})}async function Jp(e,t,n,r,o,s,i,a){if(t==="nothing")return I(`You didn't specify any refspecs to push, and push.default is "nothing".`);if(t==="current")return{name:n,oldHash:i.get(n)??null,newHash:o,ok:a};if(t==="upstream"){let d=(await he(e))[`branch "${r}"`];if(!d?.remote||!d?.merge)return I(`The current branch ${r} has no upstream branch.
|
|
582
584
|
To push the current branch and set the remote as upstream, use
|
|
583
585
|
|
|
584
586
|
git push --set-upstream ${s} ${r}
|
|
@@ -591,42 +593,42 @@ on the remote, use
|
|
|
591
593
|
To push to the branch of the same name on the remote, use
|
|
592
594
|
|
|
593
595
|
git push ${s} HEAD
|
|
594
|
-
`):{name:d,oldHash:i.get(d)??null,newHash:o,ok:a}}return{name:n,oldHash:i.get(n)??null,newHash:o,ok:a}}async function
|
|
596
|
+
`):{name:d,oldHash:i.get(d)??null,newHash:o,ok:a}}return{name:n,oldHash:i.get(n)??null,newHash:o,ok:a}}async function Qp(e,t){if(t.startsWith("refs/"))return F(e,t);let n=await F(e,`refs/heads/${t}`);if(n)return n;let r=await F(e,`refs/tags/${t}`);return r||(t==="HEAD"?Z(e):null)}se();le();Fe();ue();function eg(e,t,n,r){return`${Y(n)} ${e}@{${t}}: ${r}`}async function Do(e,t,n){let r=t==="HEAD"?"HEAD":`refs/heads/${t}`;if(!await F(e,r))return{stdout:"",stderr:`fatal: ambiguous argument '${t}': unknown revision or path not in the working tree.
|
|
595
597
|
Use '--' to separate paths from revisions, like this:
|
|
596
598
|
'git <command> [<revision>...] -- [<file>...]'
|
|
597
|
-
`,exitCode:128};let s=await Je(e,r),i=[],a=n!==void 0?n:s.length,c=0;for(let l=s.length-1;l>=0&&c<a;l--){let d=s[l];if(!d)continue;let u=s.length-1-l;d.newHash!==te&&(i.push(
|
|
599
|
+
`,exitCode:128};let s=await Je(e,r),i=[],a=n!==void 0?n:s.length,c=0;for(let l=s.length-1;l>=0&&c<a;l--){let d=s[l];if(!d)continue;let u=s.length-1-l;d.newHash!==te&&(i.push(eg(t,u,d.newHash,d.message)),c++)}return{stdout:i.length>0?`${i.join(`
|
|
598
600
|
`)}
|
|
599
601
|
`:"",stderr:"",exitCode:0}}function Hl(e,t){return e.command("reflog",{description:"Manage reflog information",args:[q.string().name("args").variadic().optional()],options:{maxCount:J.number().alias("n").describe("Limit the number of entries to output")},handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=s,a=r.args;if(a.length===0)return Do(i,"HEAD",r.maxCount);let c=a[0];if(!c)return Do(i,"HEAD",r.maxCount);if(c==="show"){let f=a[1]??"HEAD";return Do(i,f,r.maxCount)}if(c==="exists"){let f=a[1];if(!f)return{stdout:"",stderr:`fatal: reflog exists requires a ref argument
|
|
600
|
-
`,exitCode:128};let l=T(i.gitDir,"logs",f);return{stdout:"",stderr:"",exitCode:await i.fs.exists(l)?0:1}}return Do(i,c,r.maxCount)}})}se();Ne();Fe();ue();function
|
|
602
|
+
`,exitCode:128};let l=T(i.gitDir,"logs",f);return{stdout:"",stderr:"",exitCode:await i.fs.exists(l)?0:1}}return Do(i,c,r.maxCount)}})}se();Ne();Fe();ue();function tg(e){let t=[];for(let n of Object.keys(e)){let r=n.match(/^remote "(.+)"$/);r?.[1]&&t.push(r[1])}return t.sort()}function Al(e,t){let n=e.command("remote",{description:"Manage set of tracked repositories",options:{verbose:$().alias("v").describe("Show remote URLs")},handler:async(s,i)=>{let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await he(a),f=tg(c);if(f.length===0)return{stdout:"",stderr:"",exitCode:0};if(s.verbose){let l=[];for(let d of f){let m=c[`remote "${d}"`]?.url??"";l.push(`${d} ${m} (fetch)`),l.push(`${d} ${m} (push)`)}return{stdout:`${l.join(`
|
|
601
603
|
`)}
|
|
602
604
|
`,stderr:"",exitCode:0}}return{stdout:`${f.join(`
|
|
603
605
|
`)}
|
|
604
606
|
`,stderr:"",exitCode:0}}});n.command("add",{description:"Add a remote named <name> for the repository at <url>",args:[q.string().name("name").describe("Remote name"),q.string().name("url").describe("Remote URL")],handler:async(s,i)=>{let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await he(a),f=`remote "${s.name}"`;return f in c?L(`error: remote ${s.name} already exists.
|
|
605
|
-
`,3):(c[f]={url:s.url,fetch:`+refs/heads/*:refs/remotes/${s.name}/*`},await Ye(a,c),{stdout:"",stderr:"",exitCode:0})}});let r=async(s,i)=>{let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await he(a),f=`remote "${s.name}"`;return f in c?(delete c[f],
|
|
606
|
-
`,2)},o=[q.string().name("name").describe("Remote name")];n.command("remove",{description:"Remove the remote named <name>",args:o,handler:r}),n.command("rm",{description:"Remove the remote named <name>",args:o,handler:r}),n.command("rename",{description:"Rename the remote named <old> to <new>",args:[q.string().name("old").describe("Current remote name"),q.string().name("new").describe("New remote name")],handler:async(s,i)=>{let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await he(a);return
|
|
607
|
+
`,3):(c[f]={url:s.url,fetch:`+refs/heads/*:refs/remotes/${s.name}/*`},await Ye(a,c),{stdout:"",stderr:"",exitCode:0})}});let r=async(s,i)=>{let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await he(a),f=`remote "${s.name}"`;return f in c?(delete c[f],rg(c,s.name),await Ye(a,c),await sg(a,s.name),{stdout:"",stderr:"",exitCode:0}):L(`error: No such remote: '${s.name}'
|
|
608
|
+
`,2)},o=[q.string().name("name").describe("Remote name")];n.command("remove",{description:"Remove the remote named <name>",args:o,handler:r}),n.command("rm",{description:"Remove the remote named <name>",args:o,handler:r}),n.command("rename",{description:"Rename the remote named <old> to <new>",args:[q.string().name("old").describe("Current remote name"),q.string().name("new").describe("New remote name")],handler:async(s,i)=>{let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await he(a);return ng(a,c,s.old,s.new)}}),n.command("set-url",{description:"Change the URL for an existing remote",args:[q.string().name("name").describe("Remote name"),q.string().name("url").describe("New remote URL")],handler:async(s,i)=>{let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await he(a),f=`remote "${s.name}"`;if(!(f in c))return L(`error: No such remote '${s.name}'
|
|
607
609
|
`,2);let l=c[f];return l&&(l.url=s.url),await Ye(a,c),{stdout:"",stderr:"",exitCode:0}}}),n.command("get-url",{description:"Retrieve the URL for an existing remote",args:[q.string().name("name").describe("Remote name")],handler:async(s,i)=>{let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await he(a),f=`remote "${s.name}"`;return f in c?{stdout:`${c[f]?.url??""}
|
|
608
610
|
`,stderr:"",exitCode:0}:L(`error: No such remote '${s.name}'
|
|
609
|
-
`,2)}})}async function
|
|
610
|
-
`,2);let s=`remote "${r}"`;if(s in t)return I(`remote ${r} already exists.`);let i={...t[o]};i.fetch&&(i.fetch=i.fetch.replace(`refs/remotes/${n}/`,`refs/remotes/${r}/`)),t[s]=i,delete t[o];for(let f of Object.keys(t))f.match(/^branch "(.+)"$/)&&t[f]?.remote===n&&(t[f].remote=r);await Ye(e,t);let a=`refs/remotes/${n}`,c=await ge(e,a);for(let f of c){let l=f.name.replace(a,`refs/remotes/${r}`),d=await Je(e,f.name);await X(e,l,f.hash),await de(e,f.name),d.length>0&&await Tn(e,l,d)}return{stdout:"",stderr:"",exitCode:0}}function
|
|
611
|
+
`,2)}})}async function ng(e,t,n,r){let o=`remote "${n}"`;if(!(o in t))return L(`error: No such remote: '${n}'
|
|
612
|
+
`,2);let s=`remote "${r}"`;if(s in t)return I(`remote ${r} already exists.`);let i={...t[o]};i.fetch&&(i.fetch=i.fetch.replace(`refs/remotes/${n}/`,`refs/remotes/${r}/`)),t[s]=i,delete t[o];for(let f of Object.keys(t))f.match(/^branch "(.+)"$/)&&t[f]?.remote===n&&(t[f].remote=r);await Ye(e,t);let a=`refs/remotes/${n}`,c=await ge(e,a);for(let f of c){let l=f.name.replace(a,`refs/remotes/${r}`),d=await Je(e,f.name);await X(e,l,f.hash),await de(e,f.name),d.length>0&&await Tn(e,l,d)}return{stdout:"",stderr:"",exitCode:0}}function rg(e,t){for(let n of Object.keys(e))n.match(/^branch "(.+)"$/)&&e[n]?.remote===t&&(delete e[n].remote,delete e[n].merge,Object.keys(e[n]).length===0&&delete e[n])}async function sg(e,t){let n=`refs/remotes/${t}`,r=await ge(e,n);for(let o of r)await de(e,o.name)}se();Ce();ie();le();Fe();ue();hn();ve();sn();tt();function Ml(e,t){e.command("reset",{description:"Reset current HEAD to the specified state",args:[q.string().name("args").variadic().optional()],options:{soft:$().describe("Only move HEAD"),mixed:$().describe("Move HEAD and reset index (default)"),hard:$().describe("Move HEAD, reset index, and reset working tree")},handler:async(n,r,o)=>{let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s,a=n.args;if([n.soft,n.mixed,n.hard].filter(Boolean).length>1)return I("--soft, --mixed, and --hard are mutually exclusive");let f=n.soft||n.mixed||n.hard,l=mt(i,r.cwd);if(o.passthrough.length>0){let m=a.length>0?a[0]:void 0;return aa(i,o.passthrough,l,m,t)}if(!f&&a.length>0){let m=a[0],h=await Be(i,m);return a.length===1&&h?Dl(i,m,"mixed",r.env,t):h?aa(i,a.slice(1),l,m,t):aa(i,a,l,void 0,t)}let d=n.soft?"soft":n.hard?"hard":"mixed",u=a.length>0?a[0]:"HEAD";return Dl(i,u,d,r.env,t)}})}async function aa(e,t,n,r,o){let s=await o?.hooks?.preReset?.({repo:e,mode:"paths",target:r??null});if(ee(s))return{stdout:"",stderr:s.message??"",exitCode:1};let i=null;if(r){let d=await Be(e,r);if(!d)return Vt(r);let u=await _e(e,d);i=(await j(e,u)).tree}else{let d=await Z(e);d&&(i=(await j(e,d)).tree)}let a=await ce(e,i??null),c=await K(e);if(t.some(nr)){let d=t.map(m=>Ue(m,n)),u=new Set;for(let[m]of a)u.add(m);for(let m of c.entries)u.add(m.path);for(let m of u){if(!ye(d,m))continue;let h=a.get(m);h?c=Et(c,{path:h.path,mode:parseInt(h.mode,8),hash:h.hash,stage:0,stat:Ie()}):c=at(c,m)}}else for(let d of t){let u=a.get(d);if(u)c=Et(c,{path:u.path,mode:parseInt(u.mode,8),hash:u.hash,stage:0,stat:Ie()});else if(c.entries.some(h=>h.path===d))c=at(c,d);else if(!(e.workTree&&await e.fs.exists(T(e.workTree,d))))return Vt(d)}await ae(e,c);let l={stdout:await jl(e,c),stderr:"",exitCode:0};return await o?.hooks?.postReset?.({repo:e,mode:"paths",targetHash:null}),l}async function jl(e,t){if(!e.workTree)return"";let n=new Set;for(let i of t.entries)i.stage>0&&n.add(i.path);let o=(await Tt(e,t)).filter(i=>i.status==="modified"||i.status==="deleted");if(o.length===0&&n.size===0)return"";let s=["Unstaged changes after reset:"];for(let i of o){let a=i.status==="modified"?"M":"D";s.push(`${a} ${i.path}`)}for(let i of[...n].sort())s.push(`U ${i}`);return s.sort((i,a)=>{if(i==="Unstaged changes after reset:")return-1;if(a==="Unstaged changes after reset:")return 1;let c=i.slice(2),f=a.slice(2);return c<f?-1:c>f?1:0}),`${s.join(`
|
|
611
613
|
`)}
|
|
612
|
-
`}async function Dl(e,t,n,r,o){let s=await o?.hooks?.preReset?.({repo:e,mode:n,target:t});if(ee(s))return{stdout:"",stderr:s.message??"",exitCode:1};let i=await Be(e,t);if(!i)return Vt(t);let a=await _e(e,i),c=await j(e,a);if(n==="soft"){let m=await F(e,"MERGE_HEAD"),h=await K(e);if(m
|
|
613
|
-
`:"";return await o?.hooks?.postReset?.({repo:e,mode:n,targetHash:a}),{stdout:u,stderr:"",exitCode:0}}se();
|
|
614
|
+
`}async function Dl(e,t,n,r,o){let s=await o?.hooks?.preReset?.({repo:e,mode:n,target:t});if(ee(s))return{stdout:"",stderr:s.message??"",exitCode:1};let i=await Be(e,t);if(!i)return Vt(t);let a=await _e(e,i),c=await j(e,a);if(n==="soft"){let m=await F(e,"MERGE_HEAD"),h=await K(e);if(m||St(h))return I("Cannot do a soft reset in the middle of a merge.")}let f=await Z(e),l=await Q(e);l?.type==="symbolic"?await X(e,l.target,a):await X(e,"HEAD",a);let d=`reset: moving to ${t}`;if(l?.type==="symbolic"&&f!==a?await re(e,r,l.target,f,a,d,!0):(l?.type==="symbolic"||f!==a)&&await re(e,r,"HEAD",f,a,d),await sr(e),n==="mixed"){let m=await Ve(e,c.tree),h=vs(m.map(g=>({path:g.path,mode:parseInt(g.mode,8),hash:g.hash,stage:0,stat:Ie()})));await ae(e,h);let p=await jl(e,h);if(p)return await o?.hooks?.postReset?.({repo:e,mode:n,targetHash:a}),{stdout:p,stderr:"",exitCode:0}}if(n==="hard"){let m=Xe(e);if(m)return m;let h=await K(e),p=await gn(e,c.tree,h);await ae(e,{version:2,entries:p.newEntries}),await Me(e,p.worktreeOps)}let u=n==="hard"?`HEAD is now at ${Y(a)} ${fe(c.message)}
|
|
615
|
+
`:"";return await o?.hooks?.postReset?.({repo:e,mode:n,targetHash:a}),{stdout:u,stderr:"",exitCode:0}}se();Ce();ie();ue();ve();tt();function Gl(e,t){e.command("restore",{description:"Restore working tree files",args:[q.string().name("pathspec").variadic().optional()],options:{source:J.string().alias("s").describe("Restore from tree-ish"),staged:$().alias("S").describe("Restore the index"),worktree:$().alias("W").describe("Restore the working tree (default)"),ours:$().describe("Checkout our version for unmerged files"),theirs:$().describe("Checkout their version for unmerged files")},handler:async(n,r,o)=>{let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s,a=[...n.pathspec??[],...o.passthrough];if(a.length===0)return I("you must specify path(s) to restore");if(n.ours&&n.theirs)return I("--ours and --theirs are incompatible");let c=!!n.staged,f=n.worktree!==void 0?!!n.worktree:!c,l=mt(i,r.cwd);if(n.ours||n.theirs)return n.source?I("cannot specify both --source and --ours/--theirs"):c?I("cannot use --ours/--theirs with --staged"):io(i,a,l,n.theirs?3:2,{deleteOnMissing:!0});let d=null;if(n.source){let u=await He(i,n.source,`could not resolve '${n.source}'`);if(M(u))return u;d=u.commit.tree}else if(c){let u=await Z(i);u&&(d=(await j(i,u)).tree)}return c&&f?ag(i,a,l,d):c?og(i,a,l,d):d?ig(i,a,l,d):oo(i,a,l)}})}async function og(e,t,n,r){let o=await ce(e,r),s=await K(e),i=t.map(f=>Ue(f,n)),a=new Set;for(let[f]of o)a.add(f);for(let f of s.entries)a.add(f.path);let c=!1;for(let f of a){if(!ye(i,f))continue;c=!0;let l=o.get(f);if(l)s=Et(s,{path:l.path,mode:parseInt(l.mode,8),hash:l.hash,stage:0,stat:Ie()});else{if(s.entries.some(u=>u.path===f&&u.stage>0))return{stdout:"",stderr:`error: path '${f}' is unmerged
|
|
614
616
|
`,exitCode:1};s=at(s,f)}}return c?(await ae(e,s),{stdout:"",stderr:"",exitCode:0}):L(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
615
|
-
`)}async function
|
|
617
|
+
`)}async function ig(e,t,n,r){if(!e.workTree)return I("this operation must be run in a work tree");let o=await ce(e,r),s=t.map(f=>Ue(f,n)),i=[],a=await K(e),c=new Set;for(let[f]of o)c.add(f);for(let f of a.entries)c.add(f.path);for(let f of c)if(ye(s,f)){if(!o.has(f)&&a.entries.some(d=>d.path===f&&d.stage!==0))return{stdout:"",stderr:`error: path '${f}' is unmerged
|
|
616
618
|
`,exitCode:1};i.push(f)}if(i.length===0)return L(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
617
|
-
`);for(let f of i){let l=o.get(f);if(l)await ct(e,{path:l.path,hash:l.hash,mode:l.mode});else{let d=`${e.workTree}/${f}`;await e.fs.exists(d)&&await e.fs.rm(d)}}return{stdout:"",stderr:"",exitCode:0}}async function
|
|
618
|
-
`);for(let f of a){let l=o.get(f);if(l)s=
|
|
619
|
-
`,exitCode:1};s=at(s,f);let u=`${e.workTree}/${f}`;await e.fs.exists(u)&&await e.fs.rm(u)}}return await ae(e,s),{stdout:"",stderr:"",exitCode:0}}se();ie();le();ue();hn();ve();function Ll(e,t){e.command("rev-parse",{description:"Pick out and massage parameters",args:[q.string().name("args").describe("Refs or revision expressions to resolve").optional().variadic()],options:{verify
|
|
620
|
-
`).join(""),stderr:"",exitCode:0};if(s&&o.length!==1)return I("Needed a single revision");for(let b of o){if(a){let R=await
|
|
621
|
-
`).join(""),stderr:"",exitCode:0}}})}function ca(e,t){return t?I("Needed a single revision"):Vt(e)}async function
|
|
622
|
-
`);if(m)return m;let h=await j(s,d);if(s.workTree){let z=await ce(s,h.tree);if(
|
|
619
|
+
`);for(let f of i){let l=o.get(f);if(l)await ct(e,{path:l.path,hash:l.hash,mode:l.mode});else{let d=`${e.workTree}/${f}`;await e.fs.exists(d)&&await e.fs.rm(d)}}return{stdout:"",stderr:"",exitCode:0}}async function ag(e,t,n,r){if(!e.workTree)return I("this operation must be run in a work tree");let o=await ce(e,r),s=await K(e),i=t.map(f=>Ue(f,n)),a=[],c=new Set;for(let[f]of o)c.add(f);for(let f of s.entries)c.add(f.path);for(let f of c)ye(i,f)&&a.push(f);if(a.length===0)return L(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
620
|
+
`);for(let f of a){let l=o.get(f);if(l)s=Et(s,{path:l.path,mode:parseInt(l.mode,8),hash:l.hash,stage:0,stat:Ie()}),await ct(e,{path:l.path,hash:l.hash,mode:l.mode});else{if(s.entries.some(m=>m.path===f&&m.stage>0))return{stdout:"",stderr:`error: path '${f}' is unmerged
|
|
621
|
+
`,exitCode:1};s=at(s,f);let u=`${e.workTree}/${f}`;await e.fs.exists(u)&&await e.fs.rm(u)}}return await ae(e,s),{stdout:"",stderr:"",exitCode:0}}se();ie();le();ue();hn();ve();function Ll(e,t){e.command("rev-parse",{description:"Pick out and massage parameters",args:[q.string().name("args").describe("Refs or revision expressions to resolve").optional().variadic()],options:{verify:$().describe("Verify that exactly one parameter is provided and resolves to an object"),short:$().describe("Abbreviate object name (default 7 chars)"),"abbrev-ref":$().describe("Output abbreviated ref name instead of object hash"),"symbolic-full-name":$().describe("Output the full symbolic ref name"),"show-toplevel":$().describe("Show the absolute path of the top-level directory"),"git-dir":$().describe("Show the path to the .git directory"),"is-inside-work-tree":$().describe("Output whether cwd is inside the work tree"),"is-bare-repository":$().describe("Output whether the repository is bare"),"show-prefix":$().describe("Show path of cwd relative to top-level directory"),"show-cdup":$().describe("Show relative path from cwd up to top-level directory")},handler:async(n,r)=>{let o=n.args.filter(b=>b!==""),s=n.verify,i=n.short,a=n["abbrev-ref"],c=n["symbolic-full-name"],f=n["show-toplevel"],l=n["git-dir"],d=n["is-inside-work-tree"],u=n["is-bare-repository"],m=n["show-prefix"],h=n["show-cdup"],p=f||l||d||u||m||h,g=await W(r.fs,r.cwd,t);if(M(g))return g;let w=g,y=[];if(f){if(!w.workTree)return I("this operation must be run in a work tree");y.push(w.workTree)}if(l&&y.push(w.gitDir),d&&y.push(w.workTree?"true":"false"),u&&y.push(w.workTree?"false":"true"),m){if(!w.workTree)return I("this operation must be run in a work tree");let b=ft(w.workTree,r.cwd);y.push(b===""?"":`${b}/`)}if(h){if(!w.workTree)return I("this operation must be run in a work tree");let b=ft(r.cwd,w.workTree);y.push(b===""?"":`${b}/`)}if(p&&o.length===0)return{stdout:y.map(k=>`${k}
|
|
622
|
+
`).join(""),stderr:"",exitCode:0};if(s&&o.length!==1)return I("Needed a single revision");for(let b of o){if(a){let R=await cg(w,b);if(R===null)return ca(b,s);y.push(R);continue}if(c){let R=await fg(w,b);if(R===null)return ca(b,s);y.push(R);continue}let k=_s(b);if(k){let R=await lg(w,k.rev,k.path);if(R===null){let C=k.path.replace(/^\//,"");return I(`path '${C}' does not exist in '${k.rev}'`)}y.push(i?Y(R):R);continue}let E=await Be(w,b);if(!E)return ca(b,s);y.push(i?Y(E):E)}return{stdout:y.map(b=>`${b}
|
|
623
|
+
`).join(""),stderr:"",exitCode:0}}})}function ca(e,t){return t?I("Needed a single revision"):Vt(e)}async function cg(e,t){if(t==="HEAD"||t==="@"){let r=await Q(e);if(!r)return null;if(r.type==="symbolic"){let o=r.target;return o.startsWith("refs/heads/")?o.slice(11):o}return"HEAD"}return await Be(e,t)?t:null}async function fg(e,t){if(t==="HEAD"||t==="@"){let r=await Q(e);return r?r.type==="symbolic"?r.target:"HEAD":null}if(!await Be(e,t))return null;if(t.startsWith("refs/"))return t;for(let r of["refs/heads/","refs/tags/","refs/remotes/"]){let o=`${r}${t}`;if(await F(e,o))return o}return t}async function lg(e,t,n){let r=await Be(e,t);if(!r)return null;let o=await j(e,r),s=n.replace(/^\//,"");return s===""?o.tree:(await ce(e,o.tree)).get(s)?.hash??null}se();Ne();Ce();ie();Fe();ue();ve();function _l(e,t){e.command("revert",{description:"Revert some existing commits",args:[q.string().name("commit").describe("The commit to revert").optional()],options:{abort:$().describe("Abort the current revert operation"),continue:$().describe("Continue the revert after conflict resolution"),"no-commit":$().alias("n").describe("Apply changes without creating a commit"),"no-edit":$().describe("Do not edit the commit message"),mainline:J.number().alias("m").describe("Select the parent number for reverting merges")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(n.abort){let z=await t?.hooks?.preRevert?.({repo:s,mode:"abort",commit:null});if(ee(z))return{stdout:"",stderr:z.message??"",exitCode:1};let _=await dg(s,r.env);return _.exitCode===0&&await t?.hooks?.postRevert?.({repo:s,mode:"abort",commitHash:null,hadConflicts:!1}),_}if(n.continue){let z=await t?.hooks?.preRevert?.({repo:s,mode:"continue",commit:null});if(ee(z))return{stdout:"",stderr:z.message??"",exitCode:1};let _=await ug(s,r.env);return _.exitCode===0&&await t?.hooks?.postRevert?.({repo:s,mode:"continue",commitHash:null,hadConflicts:!1}),_}let i=n.commit;if(!i)return I("you must specify a commit to revert");let a=await t?.hooks?.preRevert?.({repo:s,mode:"revert",commit:i});if(ee(a))return{stdout:"",stderr:a.message??"",exitCode:1};let c=await He(s,i);if(M(c))return c;let f=c.hash,l=c.commit,d=await Ze(s);if(M(d))return d;let u=await K(s),m=wn(u,"Reverting",`fatal: revert failed
|
|
624
|
+
`);if(m)return m;let h=await j(s,d);if(s.workTree){let z=await ce(s,h.tree);if(Er(u,z))return L(`error: your local changes would be overwritten by revert.
|
|
623
625
|
hint: commit your changes or stash them to proceed.
|
|
624
626
|
fatal: revert failed
|
|
625
627
|
`,128)}let p=n.mainline,g;if(l.parents.length>1){if(p===void 0)return L(`error: commit ${f} is a merge but no -m option was given.
|
|
626
628
|
fatal: revert failed
|
|
627
629
|
`,128);if(p<1||p>l.parents.length)return L(`error: commit ${f} does not have parent ${p}
|
|
628
630
|
fatal: revert failed
|
|
629
|
-
`,128);let z=l.parents[p-1];g=(await j(s,z)).tree}else if(l.parents.length===0)g=await Ge(s,[]);else{let z=l.parents[0];g=(await j(s,z)).tree}let w=Y(f),y=fe(l.message),x=
|
|
631
|
+
`,128);let z=l.parents[p-1];g=(await j(s,z)).tree}else if(l.parents.length===0)g=await Ge(s,[]);else{let z=l.parents[0];g=(await j(s,z)).tree}let w=Y(f),y=fe(l.message),x=mg(l,f,p),b=await ke(s,"merge.conflictstyle")??"merge",k={a:"HEAD",b:y?`parent of ${w} (${y})`:`parent of ${w}`,conflictStyle:b},E=await Ft(s,l.tree,h.tree,g,k);if(E.conflicts.length===0&&E.resultTree===h.tree){let z=E.messages.length>0?`${E.messages.join(`
|
|
630
632
|
`)}
|
|
631
633
|
`:"",_=await rt(s,{fromCommit:!0}),U=await F(s,"CHERRY_PICK_HEAD");return{stdout:`${z}${_}`,stderr:U?`The previous cherry-pick is now empty, possibly due to conflict resolution.
|
|
632
634
|
If you wish to commit it anyway, use:
|
|
@@ -644,28 +646,28 @@ hint: You can instead skip this commit with "git revert --skip".
|
|
|
644
646
|
hint: To abort and get back to the state before "git revert",
|
|
645
647
|
hint: run "git revert --abort".
|
|
646
648
|
hint: Disable this message with "git config set advice.mergeConflict false"
|
|
647
|
-
`,exitCode:1}}if(n["no-commit"])return await X(s,"REVERT_HEAD",f),await Te(s,"MERGE_MSG",x),{stdout:"",stderr:"",exitCode:0};let
|
|
649
|
+
`,exitCode:1}}if(n["no-commit"])return await X(s,"REVERT_HEAD",f),await Te(s,"MERGE_MSG",x),{stdout:"",stderr:"",exitCode:0};let C=R.mergedTreeHash,P=await on(s,r.env);if(M(P))return P;let v=await Qe(s,r.env);if(M(v))return v;let D=await ht(s,C,[d],P,v,x);await jt(s),await Mt(s);let O=await Q(s),H=fe(x),G=O?.type==="symbolic"?O.target:"HEAD";await re(s,r.env,G,d,D,`revert: ${H}`,O?.type==="symbolic");let A=O?.type==="symbolic"?Re(O.target):"detached HEAD",S=await fn(s,h.tree,C,P,v,P.timestamp!==v.timestamp||P.timezone!==v.timezone),N=Ht(A,D,x),B=E.messages.length>0?`${E.messages.join(`
|
|
648
650
|
`)}
|
|
649
651
|
`:"";return await t?.hooks?.postRevert?.({repo:s,mode:"revert",commitHash:D,hadConflicts:!1}),{stdout:`${B}${N}
|
|
650
|
-
${
|
|
652
|
+
${S}`,stderr:"",exitCode:0}}})}async function dg(e,t){return await F(e,"REVERT_HEAD")?Dn(e,t,{operationRef:"REVERT_HEAD",noOpError:L(`error: no cherry-pick or revert in progress
|
|
651
653
|
fatal: revert failed
|
|
652
654
|
`,128),operationName:"revert",clearState:async o=>{await jt(o),await Mt(o)},origHeadAsTargetRev:!0}):await F(e,"CHERRY_PICK_HEAD")?Dn(e,t,{operationRef:"CHERRY_PICK_HEAD",noOpError:L(`error: no cherry-pick or revert in progress
|
|
653
655
|
fatal: revert failed
|
|
654
656
|
`,128),operationName:"revert",clearState:Mt,origHeadAsTargetRev:!0}):L(`error: no cherry-pick or revert in progress
|
|
655
657
|
fatal: revert failed
|
|
656
|
-
`,128)}async function
|
|
658
|
+
`,128)}async function ug(e,t){if(!await F(e,"REVERT_HEAD"))return L(`error: no cherry-pick or revert in progress
|
|
657
659
|
fatal: revert failed
|
|
658
|
-
`,128);let r=await K(e),o=wn(r,"Committing");if(o)return o;let s=await
|
|
659
|
-
`,1);let i=
|
|
660
|
-
${x}`,stderr:"",exitCode:0}}function
|
|
660
|
+
`,128);let r=await K(e),o=wn(r,"Committing");if(o)return o;let s=await Pe(e,"MERGE_MSG");if(!s)return L(`Aborting commit due to empty commit message.
|
|
661
|
+
`,1);let i=De(r),a=await Ge(e,i),c=await Ze(e);if(M(c))return c;let f=await j(e,c),l=await on(e,t);if(M(l))return l;let d=await Qe(e,t);if(M(d))return d;let u=await F(e,"CHERRY_PICK_HEAD");u&&(l=(await j(e,u)).author);let m=At(s),h=await ht(e,a,[c],l,d,m);await jt(e),await Mt(e);let p=await Q(e),g=fe(m),w=p?.type==="symbolic"?p.target:"HEAD";await re(e,t,w,c,h,`commit: ${g}`,p?.type==="symbolic");let y=p?.type==="symbolic"?Re(p.target):"detached HEAD",x=await fn(e,f.tree,a,l,d,l.timestamp!==d.timestamp||l.timezone!==d.timezone);return{stdout:`${Ht(y,h,s)}
|
|
662
|
+
${x}`,stderr:"",exitCode:0}}function mg(e,t,n){let r=fe(e.message),o='Revert "',a=`${r.startsWith(o)&&r.endsWith('"')?`Reapply "${r.slice(o.length,-1)}"`:`Revert "${r}"`}
|
|
661
663
|
|
|
662
664
|
This reverts commit ${t}`;if(n!==void 0&&e.parents.length>1&&n>=1){let c=e.parents[n===1?1:0]??e.parents[0];a+=`, reversing
|
|
663
665
|
changes made to ${c}`}return a+=`.
|
|
664
|
-
`,a}se();
|
|
666
|
+
`,a}se();Ce();ie();le();ue();Zn();ve();function Nl(e,t){e.command("rm",{description:"Remove files from the working tree and from the index",args:[q.string().name("paths").describe("Files to remove").optional().variadic()],options:{cached:$().describe("Only remove from the index"),recursive:$().alias("r").describe("Allow recursive removal when a directory name is given"),force:$().alias("f").describe("Override the up-to-date check"),dryRun:$().alias("n").describe("Don't actually remove any file(s)")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=Xe(s);if(i)return i;let a=s.workTree,c=n.paths;if(c.length===0)return L("usage: git rm [--cached] [-f] [-r] <file>...");let f=n.cached,l=n.recursive,d=n.force,u=await t?.hooks?.preRm?.({repo:s,paths:c,cached:f,recursive:l,force:d});if(ee(u))return{stdout:"",stderr:u.message??"",exitCode:1};let m=await K(s),h=[],p=mt(s,r.cwd);for(let y of c){if(nr(y)){let E=[Ue(y,p)],R=m.entries.filter(C=>ye(E,C.path));if(R.length===0)return I(`pathspec '${y}' did not match any files`);for(let C of R)h.push(C.path);continue}let x=It(r.cwd,y),b=ft(a,x);if((b==="."||b==="")&&(b=""),b.startsWith(".."))return I(`'${y}' is outside repository at '${a}'`);if(await r.fs.exists(x)&&!(await lt(r.fs,x)).isSymbolicLink&&(await lt(r.fs,x)).isDirectory){if(!l)return I(`not removing '${b}' recursively without -r`);let E=b===""?"":`${b}/`,R=m.entries.filter(C=>E===""||C.path.startsWith(E));if(R.length===0)return I(`pathspec '${y}' did not match any files`);for(let C of R)h.push(C.path)}else{if(!m.entries.some(R=>R.path===b))return I(`pathspec '${y}' did not match any files`);h.push(b)}}if(!d){let y=await hg(s,m,h,f);if(y)return y}if(n.dryRun){let y=h.map(b=>`rm '${b}'`);return{stdout:y.length>0?`${y.join(`
|
|
665
667
|
`)}
|
|
666
668
|
`:"",stderr:"",exitCode:0}}let g=[];for(let y of h){if(m=at(m,y),!f){let x=T(a,y);await lt(r.fs,x).then(()=>!0).catch(()=>!1)&&await r.fs.rm(x)}g.push(`rm '${y}'`)}await ae(s,m);let w=g.length>0?`${g.join(`
|
|
667
669
|
`)}
|
|
668
|
-
`:"";return await t?.hooks?.postRm?.({repo:s,removedPaths:h,cached:f}),{stdout:w,stderr:"",exitCode:0}}})}async function
|
|
670
|
+
`:"";return await t?.hooks?.postRm?.({repo:s,removedPaths:h,cached:f}),{stdout:w,stderr:"",exitCode:0}}})}async function hg(e,t,n,r){let o=await Z(e),s=new Map;if(o){let f=await j(e,o),l=await Ve(e,f.tree);for(let d of l)s.set(d.path,d.hash)}let i=[],a=[],c=[];for(let f of n){let l=t.entries.find(h=>h.path===f&&h.stage===0);if(!l)continue;let u=s.get(f)!==l.hash,m=!1;if(e.workTree){let h=T(e.workTree,f),p=!1;try{await lt(e.fs,h),p=!0}catch{p=!1}p&&(m=await vn(e.fs,h)!==l.hash)}u&&m?i.push(f):u&&!r?a.push(f):m&&!r&&c.push(f)}if(i.length>0){let f=i.map(d=>` ${d}`).join(`
|
|
669
671
|
`),l=i.length===1?"the following file has":"the following files have";return L(`error: ${l} staged content different from both the
|
|
670
672
|
file and the HEAD:
|
|
671
673
|
${f}
|
|
@@ -678,54 +680,54 @@ ${f}
|
|
|
678
680
|
`),l=c.length===1?"the following file has":"the following files have";return L(`error: ${l} local modifications:
|
|
679
681
|
${f}
|
|
680
682
|
(use --cached to keep the file, or -f to force removal)
|
|
681
|
-
`)}return null}se();ie();hn();Ns();le();ve();var fa=new TextDecoder;function Fl(e,t){e.command("show",{description:"Show various types of objects",args:[q.string().name("object").variadic().optional()],options:{patch
|
|
683
|
+
`)}return null}se();ie();hn();Ns();le();ve();var fa=new TextDecoder;function Fl(e,t){e.command("show",{description:"Show various types of objects",args:[q.string().name("object").variadic().optional()],options:{patch:$().alias("p").describe("Show diff in patch format"),noPatch:$().describe("Suppress diff output"),stat:$().describe("Show diffstat summary"),nameOnly:$().describe("Show only names of changed files"),nameStatus:$().describe("Show names and status of changed files"),shortstat:$().describe("Show only the shortstat summary line"),numstat:$().describe("Machine-readable insertions/deletions per file"),format:J.string().describe("Pretty-print format string"),pretty:J.string().describe("Pretty-print format or preset name")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,a=n.object[0]??"HEAD",c=_s(a);if(c)return pg(s,c.rev,c.path);if(a==="HEAD"){let p=await Ze(s);if(M(p))return p}let f=await vt(s,a,`bad object '${a}'`);if(M(f))return f;let l=await we(s,f),d;n.noPatch?d=null:n.stat?d="stat":n.nameOnly?d="name-only":n.nameStatus?d="name-status":n.shortstat?d="shortstat":n.numstat?d="numstat":d="patch";let u=n.format??n.pretty,m=null,h=null;if(u!==void 0){let p=Ho(u);m=p.formatStr,h=p.preset}switch(l.type){case"commit":{let p=await j(s,f);return{stdout:await Ul(s,f,p,d,m,h),stderr:"",exitCode:0}}case"tag":{let p=await mc(s,f);return{stdout:await gg(s,p,d,m,h),stderr:"",exitCode:0}}case"tree":{let p=Hn(l.content);return{stdout:Bl(p),stderr:"",exitCode:0}}case"blob":return{stdout:fa.decode(l.content),stderr:"",exitCode:0}}}})}async function pg(e,t,n){let r=await He(e,t);if(M(r))return r;let o=r.commit.tree,s=n.replace(/^\//,""),a=(await ce(e,o)).get(s);if(!a){let f=`path '${s}' does not exist in '${t}'`;if(e.workTree){let l=T(e.workTree,s);await e.fs.exists(l)&&(f=`path '${s}' exists on disk, but not in '${t}'`)}return I(f)}let c=await we(e,a.hash);if(c.type==="blob")return{stdout:fa.decode(c.content),stderr:"",exitCode:0};if(c.type==="tree"){let f=Hn(c.content);return{stdout:Bl(f),stderr:"",exitCode:0}}return{stdout:fa.decode(c.content),stderr:"",exitCode:0}}async function Ul(e,t,n,r="patch",o=null,s=null){let i;if(o!==null)i=ps(o,{hash:t,commit:n});else if(s!==null)i=gs(s,{hash:t,commit:n},!0,!1);else{let c=[];if(c.push(`commit ${t}`),n.parents.length>=2){let l=n.parents.map(d=>Y(d)).join(" ");c.push(`Merge: ${l}`)}c.push(`Author: ${n.author.name} <${n.author.email}>`),c.push(`Date: ${_t(n.author.timestamp,n.author.timezone)}`),c.push("");let f=n.message.replace(/\n$/,"");for(let l of f.split(`
|
|
682
684
|
`))c.push(` ${l}`);i=c.join(`
|
|
683
685
|
`)}if(!r)return`${i}
|
|
684
|
-
`;let a="";if(n.parents.length<=1){let c=n.parents.length===1?(await j(e,n.parents[0])).tree:null,f=await We(e,c,n.tree),{remaining:l,renames:d}=await nt(e,f);a=await
|
|
686
|
+
`;let a="";if(n.parents.length<=1){let c=n.parents.length===1?(await j(e,n.parents[0])).tree:null,f=await We(e,c,n.tree),{remaining:l,renames:d}=await nt(e,f);a=await wg(e,l,d,r)}else r==="patch"&&(a=await Og(e,n)??"");return a?`${i}
|
|
685
687
|
|
|
686
688
|
${a.replace(/\n$/,"")}
|
|
687
689
|
`:n.parents.length>=2?`${i}
|
|
688
690
|
|
|
689
691
|
`:`${i}
|
|
690
|
-
`}async function
|
|
692
|
+
`}async function gg(e,t,n="patch",r=null,o=null){let s=[];s.push(`tag ${t.name}`),s.push(`Tagger: ${t.tagger.name} <${t.tagger.email}>`),s.push(`Date: ${_t(t.tagger.timestamp,t.tagger.timezone)}`),s.push("");let i=t.message.replace(/\n$/,"");for(let a of i.split(`
|
|
691
693
|
`))s.push(` ${a}`);if(t.objectType==="commit"){let a=await j(e,t.object),c=await Ul(e,t.object,a,n,r,o);s.push(""),s.push(c.replace(/\n$/,""))}return`${s.join(`
|
|
692
694
|
`)}
|
|
693
695
|
`}function Bl(e){let t=[];for(let n of e.entries){let r=n.mode==="040000"?"tree":"blob";t.push(`${n.mode} ${r} ${n.hash} ${n.name}`)}return t.length>0?`${t.join(`
|
|
694
696
|
`)}
|
|
695
|
-
`:""}async function
|
|
697
|
+
`:""}async function wg(e,t,n,r){switch(r){case"patch":return Cg(e,t,n);case"stat":return Eg(e,t,n);case"shortstat":return kg(e,t,n);case"numstat":return Rg(e,t,n);case"name-only":return bg(t,n);case"name-status":return yg(t,n);default:return""}}function bg(e,t){let n=[];for(let r of e)n.push(r.path);for(let r of t)n.push(r.newPath);return n.sort(),n.length>0?`${n.join(`
|
|
696
698
|
`)}
|
|
697
|
-
`:""}function
|
|
698
|
-
`).join(""):""}async function
|
|
699
|
-
`:""}async function
|
|
700
|
-
`;else{let c=
|
|
701
|
-
`}}return o}async function
|
|
702
|
-
`,E=tn({type:"commit",tree:f,parents:[s],author:p,committer:g,message:k}),R=await
|
|
703
|
-
`,be=tn({type:"commit",tree:U,parents:[],author:p,committer:g,message:V});O=await
|
|
699
|
+
`:""}function yg(e,t){let n=[];for(let r of e){let o=r.status==="added"?"A":r.status==="deleted"?"D":"M";n.push({key:r.path,line:`${o} ${r.path}`})}for(let r of t){let o=String(r.similarity??100).padStart(3,"0");n.push({key:r.newPath,line:`R${o} ${r.oldPath} ${r.newPath}`})}return n.sort((r,o)=>r.key<o.key?-1:r.key>o.key?1:0),n.length>0?n.map(r=>`${r.line}
|
|
700
|
+
`).join(""):""}async function Eg(e,t,n){let{fileStats:r}=await Un(e,t,n);return r.sort((o,s)=>o.sortKey<s.sortKey?-1:o.sortKey>s.sortKey?1:0),cr(r)}async function kg(e,t,n){let{fileStats:r}=await Un(e,t,n),o=0,s=0;for(let a of r)o+=a.insertions,s+=a.deletions;let i=Fn(r.length,o,s);return i?`${i}
|
|
701
|
+
`:""}async function Rg(e,t,n){let r=[];for(let s of t)r.push({key:s.path,oldHash:s.oldHash,newHash:s.newHash,display:s.path});for(let s of n)r.push({key:s.newPath,oldHash:s.oldHash,newHash:s.newHash,display:cn(s.oldPath,s.newPath)});r.sort((s,i)=>s.key<i.key?-1:s.key>i.key?1:0);let o="";for(let s of r){let i=s.oldHash?await oe(e,s.oldHash):"",a=s.newHash?await oe(e,s.newHash):"";if($e(i)||$e(a))o+=`- - ${s.display}
|
|
702
|
+
`;else{let c=bt(i),f=bt(a),l=st(c,f),d=0,u=0;for(let m of l)m.type==="insert"?d++:m.type==="delete"&&u++;o+=`${d} ${u} ${s.display}
|
|
703
|
+
`}}return o}async function xg(e,t){let n=t.oldHash?await oe(e,t.oldHash):"",r=t.newHash?await oe(e,t.newHash):"";return Pt({path:t.path,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode,oldHash:t.oldHash,newHash:t.newHash})}async function Pg(e,t){let n=t.oldHash?await oe(e,t.oldHash):"",r=t.newHash?await oe(e,t.newHash):"";return Pt({path:t.oldPath,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode,oldHash:t.oldHash,newHash:t.newHash,renameTo:t.newPath,similarity:t.similarity})}async function Cg(e,t,n){let r=[];for(let s of t)r.push({type:"diff",entry:s});for(let s of n)r.push({type:"rename",entry:s});r.sort((s,i)=>{let a=s.type==="diff"?s.entry.path:s.entry.newPath,c=i.type==="diff"?i.entry.path:i.entry.newPath;return a<c?-1:a>c?1:0});let o="";for(let s of r)s.type==="rename"?o+=await Pg(e,s.entry):o+=await xg(e,s.entry);return o}async function Og(e,t){if(t.parents.length<2)return"";let n=await Promise.all(t.parents.map(async a=>{let c=await j(e,a);return ce(e,c.tree)})),r=await ce(e,t.tree),o=new Set;for(let a of n)for(let c of a.keys())o.add(c);for(let a of r.keys())o.add(a);let s=[];for(let a of o){let f=r.get(a)?.hash??null;n.every(d=>(d.get(a)?.hash??null)!==f)&&s.push(a)}if(s.sort(),s.length===0)return"";let i="";for(let a of s)i+=await Ig(e,a,n,r);return i}async function Ig(e,t,n,r){let o=r.get(t),s=n.map(u=>u.get(t)??null),i=o?.hash??null,a=o?.mode??null,c=s.map(u=>u?.hash??null),f=s.map(u=>u?.mode??null),l=await Promise.all(c.map(async u=>u?await oe(e,u):"")),d=i?await oe(e,i):"";return Oo({path:t,parentHashes:c,parentModes:f,parentContents:l,resultHash:i,resultMode:a,resultContent:d})}se();Ce();ie();ue();se();Pn();Ce();ie();un();le();Fe();ue();ve();sn();tt();var Yt="refs/stash";function da(e,t){return Oe(e.replaceAll("/","\0"),t.replaceAll("/","\0"))}async function Wl(e){let t=await Je(e,Yt),n=[];for(let r=t.length-1;r>=0;r--){let o=t[r];o&&n.push({index:t.length-1-r,hash:o.newHash,message:o.message})}return n}async function Hr(e,t){let n=await Je(e,Yt);if(n.length===0)return null;let r=n.length-1-t;return r<0||r>=n.length?null:n[r]?.newHash??null}async function ql(e,t,n,r){if(!e.workTree)throw new Error("Cannot stash in a bare repository");let o=e.workTree,s=await Z(e);if(!s)return null;let i=await j(e,s),a=await K(e),c=De(a),f=await Ge(e,c),l=await We(e,i.tree,f),d=new Map(c.map(_=>[_.path,_])),u=await et(e,o,"",{skipIgnore:!0}),m=!1;for(let _ of u){let U=d.get(_);if(!U)continue;let V=T(o,_),be=await e.fs.readFileBuffer(V);if(await ut("blob",be)!==U.hash){m=!0;break}}if(!m)for(let[_]of d){let U=T(o,_);if(!await e.fs.exists(U)){m=!0;break}}let h=[];if(r?.includeUntracked){let _=await et(e,o,"");for(let U of _)d.has(U)||h.push(U)}if(l.length===0&&!m&&h.length===0)return null;let p=await $s(e,t),g=await Gr(e,t),w=await Q(e),y=w?.type==="symbolic"?Re(w.target):"(no branch)",x=Y(s),b=fe(i.message),k=`index on ${y}: ${x} ${b}
|
|
704
|
+
`,E=tn({type:"commit",tree:f,parents:[s],author:p,committer:g,message:k}),R=await Se(e,"commit",E),C=await ce(e,i.tree),P=[],v=new Set;for(let _ of u){let U=d.get(_),V=C.get(_);if(!U&&!V)continue;let be=T(o,_),Le=await e.fs.readFileBuffer(be),it=await Se(e,"blob",Le),me=U?U.mode:parseInt(V?.mode??"100644",8);P.push({path:_,mode:me,hash:it,stage:0,stat:Ie()}),v.add(_)}for(let[_,U]of d)v.has(_)||C.has(_)||P.push({path:_,mode:U.mode,hash:U.hash,stage:0,stat:Ie()});let D=await Ge(e,P),O=null;if(r?.includeUntracked){let _=[];for(let Le of h){let it=T(o,Le),me=await e.fs.readFileBuffer(it),xe=await Se(e,"blob",me);_.push({path:Le,mode:33188,hash:xe,stage:0,stat:Ie()})}let U=await Ge(e,_),V=`untracked files on ${y}: ${x} ${b}
|
|
705
|
+
`,be=tn({type:"commit",tree:U,parents:[],author:p,committer:g,message:V});O=await Se(e,"commit",be)}let H=n?`On ${y}: ${n}`:`WIP on ${y}: ${x} ${b}`,G=[s,R];O&&G.push(O);let A=tn({type:"commit",tree:D,parents:G,author:p,committer:g,message:H}),S=await Se(e,"commit",A),N=await Hr(e,0)??te;await Ke(e,Yt,{oldHash:N,newHash:S,name:g.name,email:g.email,timestamp:g.timestamp,tz:g.timezone,message:H.trimEnd()}),await X(e,Yt,S);let B=await gn(e,i.tree,a);await ae(e,{version:2,entries:B.newEntries}),await Me(e,B.worktreeOps),(await Q(e))?.type==="symbolic"&&await re(e,t,"HEAD",s,s,"reset: moving to HEAD");for(let _ of["CHERRY_PICK_HEAD","MERGE_HEAD","ORIG_HEAD","REVERT_HEAD"])await de(e,_);for(let _ of["MERGE_MSG","MERGE_MODE","SQUASH_MSG"]){let U=T(e.gitDir,_);await e.fs.exists(U)&&await e.fs.rm(U)}if(h.length>0)for(let _ of h){if(C.has(_))continue;let U=T(o,_);await e.fs.exists(U)&&(await e.fs.rm(U),await er(e.fs,Zt(U),o))}return S}async function la(e,t){let n=e.workTree,r=await j(e,t),o=await Ve(e,r.tree),s=[];for(let i of o){let a=T(n,i.path);await e.fs.exists(a)?s.push(i.path):await ct(e,i)}return s.length>0?(s.sort(da),{ok:!1,stdout:"",stderr:`${s.map(i=>`${i} already exists, no checkout`).join(`
|
|
704
706
|
`)}
|
|
705
707
|
error: could not restore untracked files from stash
|
|
706
708
|
`,exitCode:1}):{ok:!0,hasConflicts:!1,messages:[]}}async function ua(e,t=0){if(!e.workTree)return{ok:!1,stdout:"",stderr:`fatal: this operation must be run in a work tree
|
|
707
709
|
`,exitCode:128};let n=await Hr(e,t);if(!n)return{ok:!1,stdout:"",stderr:`error: stash@{${t}} is not a valid reference
|
|
708
710
|
`,exitCode:1};if(!await Z(e))return{ok:!1,stdout:"",stderr:`error: your current branch does not have any commits yet
|
|
709
|
-
`,exitCode:1};let o=await K(e),s=Bt(o).sort();if(s.length>0)return{ok:!1,stdout:`${s.map(
|
|
711
|
+
`,exitCode:1};let o=await K(e),s=Bt(o).sort();if(s.length>0)return{ok:!1,stdout:`${s.map(C=>`${C}: needs merge`).join(`
|
|
710
712
|
`)}
|
|
711
713
|
`,stderr:`error: could not write index
|
|
712
714
|
`,exitCode:1};let i=await j(e,n),a=i.parents[0];if(!a)return{ok:!1,stdout:"",stderr:`error: invalid stash commit (no parent)
|
|
713
|
-
`,exitCode:1};let c=await j(e,a),f=i.parents[2],l=
|
|
714
|
-
${y.map(
|
|
715
|
+
`,exitCode:1};let c=await j(e,a),f=i.parents[2],l=De(o),d=await Ge(e,l),u={a:"Updated upstream",b:"Stashed changes"};if(c.tree===i.tree){if(f){let R=await la(e,f);if(!R.ok)return{...R,messages:["Already up to date."]}}return{ok:!0,hasConflicts:!1,messages:["Already up to date."]}}let m=await Ft(e,c.tree,d,i.tree,u),h=await ce(e,d),p=await ce(e,m.resultTree),g=[];for(let[R,C]of p){let P=h.get(R);(!P||P.hash!==C.hash)&&g.push({path:R,type:"checkout",hash:C.hash,mode:parseInt(C.mode,8)})}for(let[R]of h)p.has(R)||g.push({path:R,type:"delete"});let w=new Map(l.map(R=>[R.path,R])),y=[],x=[];for(let R of g){let C=w.get(R.path),P=T(e.workTree,R.path);if(C){if(!await e.fs.exists(P))continue;let v=await e.fs.readFileBuffer(P);await ut("blob",v)!==C.hash&&y.push(R.path)}else R.type==="checkout"&&await e.fs.exists(P)&&x.push(R.path)}if(y.length>0||x.length>0){y.sort(da),x.sort(da);let R="";if(y.length>0&&(R+=`error: Your local changes to the following files would be overwritten by merge:
|
|
716
|
+
${y.map(C=>` ${C}`).join(`
|
|
715
717
|
`)}
|
|
716
718
|
Please commit your changes or stash them before you merge.
|
|
717
719
|
`),x.length>0&&(R+=`error: The following untracked working tree files would be overwritten by merge:
|
|
718
|
-
${x.map(
|
|
720
|
+
${x.map(C=>` ${C}`).join(`
|
|
719
721
|
`)}
|
|
720
722
|
Please move or remove them before you merge.
|
|
721
723
|
`),R+=`Aborting
|
|
722
|
-
`,f){let
|
|
724
|
+
`,f){let C=await la(e,f);C.ok||(R+=C.stderr)}return{ok:!1,stdout:"",stderr:R,exitCode:1}}await Me(e,g);let b=new Set(m.conflicts.map(R=>R.path)),k=new Set;for(let R of m.entries)R.stage>0&&k.add(R.path);let E=b.size>0;if(E){let R=[];for(let[C,P]of p){if(b.has(C)||k.has(C))continue;let v=w.get(C);R.push({path:C,mode:parseInt(P.mode,8),hash:P.hash,stage:0,stat:v?.stat??Ie()})}for(let C of m.entries)C.stage>0&&R.push(C);R.sort((C,P)=>Oe(C.path,P.path)||C.stage-P.stage),await ae(e,{version:2,entries:R})}else{let R=[...o.entries],C=new Set(R.map(P=>P.path));for(let[P,v]of p)h.has(P)||C.has(P)||R.push({path:P,mode:parseInt(v.mode,8),hash:v.hash,stage:0,stat:Ie()});R.sort((P,v)=>Oe(P.path,v.path)||P.stage-v.stage),await ae(e,{version:2,entries:R})}if(f){let R=await la(e,f);if(!R.ok)return{...R,messages:m.messages}}return{ok:!0,hasConflicts:E,messages:m.messages}}async function ma(e,t=0){let n=await Je(e,Yt);if(n.length===0)return`error: stash@{${t}} is not a valid reference`;let r=n.length-1-t;if(r<0||r>=n.length)return`error: stash@{${t}} is not a valid reference`;if(n.splice(r,1),n.length===0)await de(e,Yt),await Xr(e,Yt);else{await Tn(e,Yt,n);let o=n[n.length-1];o&&await X(e,Yt,o.newHash)}return null}async function zl(e){await de(e,Yt),await Xr(e,Yt)}ve();function Mo(e){if(e===void 0)return 0;let t=e.match(/^(?:stash@\{)?(\d+)\}?$/);if(t?.[1]!==void 0)return parseInt(t[1],10);let n=parseInt(e,10);return!Number.isNaN(n)&&n>=0?n:-1}async function $g(e,t){let n=t.oldHash?await oe(e,t.oldHash):"",r=t.newHash?await oe(e,t.newHash):"";return Pt({path:t.path,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode})}async function zn(e,t,n,r){return e?.hooks?.preStash?.({repo:t,action:n,ref:r})??null}async function Kn(e,t,n,r){await e?.hooks?.postStash?.({repo:t,action:n,ok:r})}function Vl(e,t){let n=e.command("stash",{description:"Stash the changes in a dirty working directory away",options:{message:J.string().alias("m").describe("Stash message"),"include-untracked":$().alias("u").describe("Also stash untracked files")},transformArgs:r=>{if(r[0]!=="save")return r;let o=r.slice(1),s=[],i=[];for(let a of o)a.startsWith("-")?s.push(a):i.push(a);return i.length>0?[...s,"-m",i.join(" ")]:s},handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=await zn(t,s,"push",null);if(ee(i))return{stdout:"",stderr:i.message??"",exitCode:1};let a=await Kl(s,o.env,r.message,r["include-untracked"]);return await Kn(t,s,"push",a.exitCode===0),a}});n.command("push",{description:"Save your local modifications to a new stash entry",options:{message:J.string().alias("m").describe("Stash message"),"include-untracked":$().alias("u").describe("Also stash untracked files")},handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=await zn(t,s,"push",null);if(ee(i))return{stdout:"",stderr:i.message??"",exitCode:1};let a=await Kl(s,o.env,r.message,r["include-untracked"]);return await Kn(t,s,"push",a.exitCode===0),a}}),n.command("pop",{description:"Remove a single stash entry and apply it on top of the current working tree",args:[q.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=await zn(t,s,"pop",r.stash??null);if(ee(i))return{stdout:"",stderr:i.message??"",exitCode:1};let a=await Sg(s,r.stash);return await Kn(t,s,"pop",a.exitCode===0),a}}),n.command("apply",{description:"Apply a stash entry on top of the current working tree",args:[q.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=await zn(t,s,"apply",r.stash??null);if(ee(i))return{stdout:"",stderr:i.message??"",exitCode:1};let a=await Tg(s,r.stash);return await Kn(t,s,"apply",a.exitCode===0),a}}),n.command("list",{description:"List the stash entries that you currently have",handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=await zn(t,s,"list",null);if(ee(i))return{stdout:"",stderr:i.message??"",exitCode:1};let a=await vg(s);return await Kn(t,s,"list",a.exitCode===0),a}}),n.command("drop",{description:"Remove a single stash entry from the list of stash entries",args:[q.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=await zn(t,s,"drop",r.stash??null);if(ee(i))return{stdout:"",stderr:i.message??"",exitCode:1};let a=await Hg(s,r.stash);return await Kn(t,s,"drop",a.exitCode===0),a}}),n.command("show",{description:"Show the changes recorded in a stash entry as a diff",args:[q.string().name("stash").describe("Stash reference (e.g. stash@{0})").optional()],handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=await zn(t,s,"show",r.stash??null);if(ee(i))return{stdout:"",stderr:i.message??"",exitCode:1};let a=await Ag(s,r.stash);return await Kn(t,s,"show",a.exitCode===0),a}}),n.command("clear",{description:"Remove all the stash entries",handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=await zn(t,s,"clear",null);if(ee(i))return{stdout:"",stderr:i.message??"",exitCode:1};let a=await Dg(s);return await Kn(t,s,"clear",a.exitCode===0),a}})}async function Kl(e,t,n,r){if(!await Z(e))return L(`You do not have the initial commit yet
|
|
723
725
|
`);let s=await K(e),i=Bt(s).sort();if(i.length>0)return{stdout:`${i.map(l=>`${l}: needs merge`).join(`
|
|
724
726
|
`)}
|
|
725
727
|
`,stderr:`error: could not write index
|
|
726
728
|
`,exitCode:1};let a;try{a=await ql(e,t,n,{includeUntracked:r})}catch(l){return I(l.message)}return a?{stdout:`Saved working directory and index state ${(await j(e,a)).message.trim()}
|
|
727
729
|
`,stderr:"",exitCode:0}:{stdout:`No local changes to save
|
|
728
|
-
`,stderr:"",exitCode:0}}async function
|
|
730
|
+
`,stderr:"",exitCode:0}}async function Sg(e,t){let n=Mo(t);if(n<0)return L(`error: '${t}' is not a valid stash reference`);let r=await Hr(e,n);if(!r)return L(`error: stash@{${n}} is not a valid reference`);let o=await ua(e,n);if(!o.ok){let f=o.messages?.length?`${o.messages.join(`
|
|
729
731
|
`)}
|
|
730
732
|
`:"";if(o.stdout)return{stdout:`${f}${o.stdout}The stash entry is kept in case you need it again.
|
|
731
733
|
`,stderr:o.stderr,exitCode:o.exitCode};let l=await rt(e);return{stdout:`${f}${l}The stash entry is kept in case you need it again.
|
|
@@ -735,27 +737,27 @@ Please move or remove them before you merge.
|
|
|
735
737
|
`,stderr:"",exitCode:1}}let s=await ma(e,n);if(s)return L(s);let i=o.messages.length>0?`${o.messages.join(`
|
|
736
738
|
`)}
|
|
737
739
|
`:"",a=t?`stash@{${n}}`:`refs/stash@{${n}}`,c=await rt(e);return{stdout:`${i}${c}Dropped ${a} (${r})
|
|
738
|
-
`,stderr:"",exitCode:0}}async function
|
|
740
|
+
`,stderr:"",exitCode:0}}async function Tg(e,t){let n=Mo(t);if(n<0)return L(`error: '${t}' is not a valid stash reference`);let r=await ua(e,n);if(!r.ok){let a=r.messages?.length?`${r.messages.join(`
|
|
739
741
|
`)}
|
|
740
742
|
`:"",c=r.stdout;return c||(c=await rt(e)),{stdout:`${a}${c}`,stderr:r.stderr,exitCode:r.exitCode}}let o=r.messages.length>0?`${r.messages.join(`
|
|
741
743
|
`)}
|
|
742
|
-
`:"",s=await rt(e),i=r.hasConflicts?1:0;return{stdout:`${o}${s}`,stderr:"",exitCode:i}}async function
|
|
744
|
+
`:"",s=await rt(e),i=r.hasConflicts?1:0;return{stdout:`${o}${s}`,stderr:"",exitCode:i}}async function vg(e){let t=await Wl(e);return t.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${t.map(r=>`stash@{${r.index}}: ${r.message}`).join(`
|
|
743
745
|
`)}
|
|
744
|
-
`,stderr:"",exitCode:0}}async function
|
|
745
|
-
`,stderr:"",exitCode:0}}async function
|
|
746
|
+
`,stderr:"",exitCode:0}}async function Hg(e,t){let n=Mo(t);if(n<0)return L(`error: '${t}' is not a valid stash reference`);let r=await Hr(e,n);if(!r)return L(`error: stash@{${n}} is not a valid reference`);let o=await ma(e,n);return o?L(o):{stdout:`Dropped ${t?`stash@{${n}}`:`refs/stash@{${n}}`} (${r})
|
|
747
|
+
`,stderr:"",exitCode:0}}async function Ag(e,t){let n=Mo(t);if(n<0)return L(`error: '${t}' is not a valid stash reference`);let r=await Hr(e,n);if(!r)return L(`error: stash@{${n}} is not a valid reference`);let o=await j(e,r),s=o.parents[0];if(!s)return L("error: invalid stash commit (no parent)");let i=await j(e,s),a=await We(e,i.tree,o.tree),c="";for(let f of a)c+=await $g(e,f);return{stdout:c,stderr:"",exitCode:0}}async function Dg(e){return await zl(e),{stdout:"",stderr:"",exitCode:0}}se();Ce();ue();tt();function Yl(e,t){e.command("status",{description:"Show the working tree status",options:{short:$().alias("s").describe("Give the output in the short-format"),porcelain:$().describe("Give the output in a machine-parseable format"),branch:$().alias("b").describe("Show the branch in short-format output")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(!n.short&&!n.porcelain)return{stdout:await rt(s),stderr:"",exitCode:0};let i=await Q(s),a=await Z(s),c;i&&i.type==="symbolic"?c=Re(i.target):c="HEAD detached";let f=await K(s),l=Si(f),d=await $i(s,a,f,l),u=await Tt(s,f),m=[],h=[];for(let y of u)y.status==="untracked"?h.push(y.path):m.push({path:y.path,status:y.status});m.sort((y,x)=>Oe(y.path,x.path));let p=new Set(f.entries.map(y=>y.path)),g=Ti(h,p);return{stdout:Lg(c,d,m,l,g,n.branch),stderr:"",exitCode:0}}})}var Mg={"both modified":"UU","both added":"AA","both deleted":"DD","deleted by us":"DU","deleted by them":"UD","added by us":"AU","added by them":"UA",unmerged:"UU"};function jg(e){switch(e){case"new file":return"A";case"modified":return"M";case"deleted":return"D";case"renamed":return"R";default:return" "}}function Gg(e){switch(e){case"modified":return"M";case"deleted":return"D";default:return" "}}function Lg(e,t,n,r,o,s){let i=[];s&&(e==="HEAD detached"?i.push("## HEAD (no branch)"):i.push(`## ${e}`));let a=new Map(r.map(u=>[u.path,u])),c=new Map(t.map(u=>[u.path,u])),f=new Map(n.map(u=>[u.path,u])),l=new Set;for(let u of r)l.add(u.path);for(let u of t)l.add(u.path);for(let u of n)l.add(u.path);let d=[...l].sort();for(let u of d){let m=a.get(u);if(m){let y=Mg[m.status]??"UU";i.push(`${y} ${ws(u)}`);continue}let h=c.get(u),p=f.get(u),g=h?jg(h.status):" ",w=p?Gg(p.status):" ";if(h?.status==="renamed"&&h.displayPath){let y=h.displayPath.indexOf(" -> "),x=h.displayPath.slice(0,y),b=h.displayPath.slice(y+4);i.push(`${g}${w} ${ws(x)} -> ${ws(b)}`)}else i.push(`${g}${w} ${ws(u)}`)}for(let u of o)i.push(`?? ${ws(u)}`);return i.length===0?"":`${i.join(`
|
|
746
748
|
`)}
|
|
747
|
-
`}function ws(e){return!/[ \t"\\]/.test(e)&&!/[^\x20-\x7E]/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\t/g,"\\t").replace(/\n/g,"\\n")}"`}se();Ne();
|
|
748
|
-
Consider "git cherry-pick --quit" or "git worktree add".`):await
|
|
749
|
-
Consider "git merge --quit" or "git worktree add".`):await
|
|
749
|
+
`}function ws(e){return!/[ \t"\\]/.test(e)&&!/[^\x20-\x7E]/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\t/g,"\\t").replace(/\n/g,"\\n")}"`}se();Ne();Ce();ie();Fe();ue();ve();sn();function _g(e,t){return e?.type==="symbolic"?e.target.replace(/^refs\/heads\//,""):t??te}function Zl(e,t){e.command("switch",{description:"Switch branches",args:[q.string().name("branch-or-start-point").describe("Branch to switch to, or start-point for -c/-C").optional()],options:{create:J.string().alias("c").describe("Create and switch to a new branch"),forceCreate:J.string().alias("C").describe("Create/reset and switch to a branch"),detach:$().alias("d").describe("Detach HEAD at named commit"),orphan:J.string().describe("Create a new orphan branch"),guess:$().default(!0).describe("Guess branch from remote tracking")},handler:async(n,r,o)=>{let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s,a=n["branch-or-start-point"];if(n.orphan)return n.create||n.forceCreate?I("--orphan and -c/-C are incompatible"):n.detach?I("--orphan and --detach are incompatible"):Ug(i,n.orphan,r.env,t);if(n.detach){if(n.create||n.forceCreate)return I("--detach and -c/-C are incompatible");let l=a??"HEAD",d=await He(i,l,`invalid reference: ${l}`);return M(d)?d:Fg(i,l,d.hash,r.env,t)}if(n.create||n.forceCreate){let l=n.create||n.forceCreate,d=a??(o.passthrough.length>0?o.passthrough[0]:void 0);return Xl(i,l,!!n.forceCreate,d,r.env,t)}if(!a)return I("missing branch or commit argument");if(a==="-")return Ng(i,r.env,t);let c=`refs/heads/${a}`,f=await F(i,c);if(f)return Jl(i,a,c,f,r.env,t);if(n.guess!==!1){let l=await fo(i,a);if(l)return Xl(i,a,!1,l.startPoint,r.env,t,l.trackingRef)}return I(`invalid reference: ${a}`)}})}async function bs(e){return await Pe(e,"CHERRY_PICK_HEAD")?I(`cannot switch branch while cherry-picking
|
|
750
|
+
Consider "git cherry-pick --quit" or "git worktree add".`):await Pe(e,"MERGE_HEAD")?I(`cannot switch branch while merging
|
|
751
|
+
Consider "git merge --quit" or "git worktree add".`):await Pe(e,"REVERT_HEAD")?I(`cannot switch branch while reverting
|
|
750
752
|
Consider "git revert --quit" or "git worktree add".`):await Gt(e)?I(`cannot switch branch while rebasing
|
|
751
|
-
Consider "git rebase --quit" or "git worktree add".`):null}async function
|
|
752
|
-
${O}`,exitCode:0}}f=
|
|
753
|
+
Consider "git rebase --quit" or "git worktree add".`):null}async function Ng(e,t,n){let r=await bs(e);if(r)return r;let o=await so(e);return o?Jl(e,o.name,o.refName,o.hash,t,n):I("no previous branch")}async function Xl(e,t,n,r,o,s,i){let a=`refs/heads/${t}`,c=await F(e,a);if(c&&!n)return I(`a branch named '${t}' already exists`);let f;if(r){let P=await He(e,r,`invalid reference: ${r}`);if(M(P))return P;f=P.hash}else{let P=await Z(e);if(!P){let v=await Q(e),D=v?.type==="symbolic"?v.target.replace(/^refs\/heads\//,""):"";n&&c&&await de(e,a),await ze(e,"HEAD",a),await pt(e);let O=await yn(e);return await re(e,o,"HEAD",null,te,`checkout: moving from ${D} to ${t}`),{stdout:"",stderr:`Switched to a new branch '${t}'
|
|
754
|
+
${O}`,exitCode:0}}f=P}let l=await bs(e);if(l)return l;let d=await Z(e),u=await K(e);if(r){let P=jn(u);if(P)return P}let m=await j(e,f);if(d&&d!==f){let P=await j(e,d);if(P.tree!==m.tree){let v=await An(e,P.tree,m.tree,u);if(!v.success)return v.errorOutput??L("error: checkout would overwrite local changes");u={version:2,entries:v.newEntries},await ae(e,u),await Me(e,v.worktreeOps)}}let h=await Q(e),p="";h?.type==="direct"&&d&&(p=await ao(e,d,f));let g=_g(h,d);await X(e,a,f),await ze(e,"HEAD",a),await pt(e);let w=await yn(e),y=r??"HEAD";n&&c?c!==f&&await re(e,o,a,c,f,`branch: Reset to ${y}`):await re(e,o,a,null,f,`branch: Created from ${y}`),await re(e,o,"HEAD",d,f,`checkout: moving from ${g} to ${t}`);let x="";if(i){let P=i.replace(/^refs\/remotes\//,"").split("/"),v=P[0]??"",D=`refs/heads/${P.slice(1).join("/")}`,O=await he(e);O[`branch "${t}"`]={...O[`branch "${t}"`],remote:v,merge:D},await Ye(e,O),x=`branch '${t}' set up to track '${v}/${P.slice(1).join("/")}'.
|
|
753
755
|
`}else r&&(x=await co(e,t,r));await s?.hooks?.postCheckout?.({repo:e,prevHead:d,newHead:f,isBranchCheckout:!0});let b=n&&c?`Switched to and reset branch '${t}'
|
|
754
756
|
`:`Switched to a new branch '${t}'
|
|
755
|
-
`,k=p+b+w+x,E="";r&&(E=await ir(e,m.tree,u));let R=await he(e),
|
|
756
|
-
${u}`,exitCode:0}}se();ie();Kr();ue();Fs();function ed(e,t){e.command("tag",{description:"Create, list, or delete tags",args:[q.string().name("name").describe("Tag name to create or delete").optional(),q.string().name("commit").describe("Commit to tag (defaults to HEAD)").optional()],options:{annotate
|
|
757
|
+
`,k=p+b+w+x,E="";r&&(E=await ir(e,m.tree,u));let R=await he(e),C=await bn(e,R,t);return C&&(E+=or(C)),{stdout:E,stderr:k,exitCode:0}}async function Jl(e,t,n,r,o,s){let i=await bs(e);return i||ar(e,t,n,r,o,s)}async function Fg(e,t,n,r,o){let s=await bs(e);return s||Gn(e,n,r,o)}async function Ug(e,t,n,r){let o=await bs(e);if(o)return o;let s=`refs/heads/${t}`;if(await F(e,s))return I(`a branch named '${t}' already exists`);let a=await K(e),c=jn(a);if(c)return c;let f=await Z(e),l=await Q(e),d="";if(l?.type==="direct"&&f&&(d=await vi(e,f)),e.workTree){let m=f?(await j(e,f)).tree:null,h=await Ge(e,[]),p=await An(e,m,h,a);if(!p.success)return p.errorOutput??L("error: checkout would overwrite local changes");await Me(e,p.worktreeOps),await ae(e,{version:2,entries:p.newEntries})}else await ae(e,ja());await ze(e,"HEAD",s),await pt(e);let u=await yn(e);return await r?.hooks?.postCheckout?.({repo:e,prevHead:f,newHead:te,isBranchCheckout:!0}),{stdout:"",stderr:`${d}Switched to a new branch '${t}'
|
|
758
|
+
${u}`,exitCode:0}}se();ie();Kr();ue();Fs();function ed(e,t){e.command("tag",{description:"Create, list, or delete tags",args:[q.string().name("name").describe("Tag name to create or delete").optional(),q.string().name("commit").describe("Commit to tag (defaults to HEAD)").optional()],options:{annotate:$().alias("a").describe("Make an annotated tag object"),message:J.string().alias("m").describe("Tag message"),delete:$().alias("d").describe("Delete a tag"),force:$().alias("f").describe("Replace an existing tag"),list:$().alias("l").describe("List tags matching pattern")},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o;if(n.delete){if(!n.name)return I("tag name required");let i=`refs/tags/${n.name}`,a=await F(s,i);return a?(await de(s,i),{stdout:`Deleted tag '${n.name}' (was ${Y(a)})
|
|
757
759
|
`,stderr:"",exitCode:0}):L(`error: tag '${n.name}' not found.
|
|
758
|
-
`)}if(n.list
|
|
760
|
+
`)}if(n.list)return Ql(s,n.name||void 0);if(n.name){let i=n.commit,a;if(i){let d=await vt(s,i,`Failed to resolve '${i}' as a valid ref.`);if(M(d))return d;a=d}else if(a=await Z(s),!a)return I("Failed to resolve 'HEAD' as a valid ref.");let c=`refs/tags/${n.name}`;if(await F(s,c)&&!n.force)return I(`tag '${n.name}' already exists`);if(n.annotate||n.message){if(!n.message)return I("no tag message specified (use -m)");let d=await Qe(s,r.env);if(M(d))return d;let u=At(n.message),m=dc({type:"tag",object:a,objectType:"commit",name:n.name,tagger:d,message:u}),h=await Se(s,"tag",m);await X(s,c,h)}else await X(s,c,a);return{stdout:"",stderr:"",exitCode:0}}return Ql(s)}})}async function Ql(e,t){let n=await ge(e,"refs/tags");if(n.length===0)return{stdout:"",stderr:"",exitCode:0};let r=n.map(o=>o.name.replace("refs/tags/",""));return t&&(r=r.filter(o=>Jn(t,o,0)===0)),r.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${r.join(`
|
|
759
761
|
`)}
|
|
760
|
-
`,stderr:"",exitCode:0}}var
|
|
761
|
-
`,exitCode:1};if(this.hooks?.beforeCommand){let s=await this.hooks.beforeCommand({command:r,args:t.slice(1),fs:n.fs,cwd:n.cwd,env:n.env});if(ee(s))return{stdout:"",stderr:s.message??"",exitCode:1}}let o=await this.inner.execute(t,n);return this.hooks?.afterCommand&&await this.hooks.afterCommand({command:r,args:t.slice(1),result:o}),o})};function
|
|
762
|
+
`,stderr:"",exitCode:0}}var Bg={init:e=>wl(e),clone:(e,t)=>Vf(e,t),fetch:(e,t)=>dl(e,t),pull:(e,t)=>Tl(e,t),push:(e,t)=>vl(e,t),add:(e,t)=>Dc(e,t),blame:(e,t)=>pf(e,t),commit:(e,t)=>Yf(e,t),status:(e,t)=>Yl(e,t),log:(e,t)=>kl(e,t),branch:(e,t)=>wf(e,t),tag:(e,t)=>ed(e,t),checkout:(e,t)=>yf(e,t),diff:(e,t)=>il(e,t),reset:(e,t)=>Ml(e,t),merge:(e,t)=>Pl(e,t),"cherry-pick":(e,t)=>Af(e,t),revert:(e,t)=>_l(e,t),rebase:(e,t)=>Sl(e,t),mv:(e,t)=>Cl(e,t),rm:(e,t)=>Nl(e,t),remote:(e,t)=>Al(e,t),config:(e,t)=>el(e,t),show:(e,t)=>Fl(e,t),stash:(e,t)=>Vl(e,t),"rev-parse":(e,t)=>Ll(e,t),"ls-files":(e,t)=>xl(e,t),clean:(e,t)=>Df(e,t),switch:(e,t)=>Zl(e,t),restore:(e,t)=>Gl(e,t),reflog:(e,t)=>Hl(e,t),repack:(e,t)=>hl(e,t),gc:(e,t)=>pl(e,t),bisect:(e,t)=>ef(e,t)};function td(e){let t=Uo("git",{description:"Git command"});for(let n of Object.values(Bg))n(t,e);return t}var jo=class{name="git";defaultFs;blocked;hooks;inner;locks=new WeakMap;async withLock(t,n){let r=this.locks.get(t)??Promise.resolve(),o,s=new Promise(i=>{o=i});this.locks.set(t,s),await r;try{return await n()}finally{o()}}constructor(t){this.defaultFs=t?.fs,this.hooks=t?.hooks,this.blocked=t?.disabled?.length?new Set(t.disabled):null;let n=t?.network,r={hooks:t?.hooks,credentialProvider:t?.credentials,identityOverride:t?.identity,fetchFn:typeof n=="object"?n.fetch:void 0,networkPolicy:n,resolveRemote:t?.resolveRemote,...t?.objectStore?{objectStore:t.objectStore}:{},...t?.refStore?{refStore:t.refStore}:{},...t?.config?{configOverrides:t.config}:{}};this.inner=td(r).toCommand()}exec=async(t,n)=>{let r=n?.fs??this.defaultFs;if(!r)throw new Error("No filesystem: pass `fs` in exec() options or in createGit()");let o=n?.cwd??"/",s=Wg(t),i=new Map;if(n?.env)for(let[a,c]of Object.entries(n.env))i.set(a,c);return this.execute(s,{fs:r,cwd:o,env:i,stdin:n?.stdin??""})};execute=(t,n)=>this.withLock(n.fs,async()=>{let r=t[0]??"";if(this.blocked?.has(r))return{stdout:"",stderr:`git: '${r}' is not available in this environment
|
|
763
|
+
`,exitCode:1};if(this.hooks?.beforeCommand){let s=await this.hooks.beforeCommand({command:r,args:t.slice(1),fs:n.fs,cwd:n.cwd,env:n.env});if(ee(s))return{stdout:"",stderr:s.message??"",exitCode:1}}let o=await this.inner.execute(t,n);return this.hooks?.afterCommand&&await this.hooks.afterCommand({command:r,args:t.slice(1),result:o}),o})};function Wg(e){let t=[],n="",r=0;for(;r<e.length;){let o=e[r];if(o==='"'){for(r++;r<e.length&&e[r]!=='"';){if(e[r]==="\\"&&r+1<e.length){let s=e[r+1];if(s==='"'||s==="\\"){n+=s,r+=2;continue}}n+=e[r],r++}r++}else if(o==="'"){for(r++;r<e.length&&e[r]!=="'";)n+=e[r],r++;r++}else o===" "||o===" "?(n.length>0&&(t.push(n),n=""),r++):(n+=o,r++)}return n.length>0&&t.push(n),t.length>0&&t[0]==="git"&&t.shift(),t}function qg(e){return new jo(e)}var nd=new TextEncoder,zg=new TextDecoder;function ln(e){let t=[];for(let n of e.split("/"))n==="."||n===""||(n===".."?t.pop():t.push(n));return"/"+t.join("/")}function Go(e){let t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}var ha=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:16877,mtime:new Date}),t)for(let[n,r]of Object.entries(t)){let o=ln(n);this.ensureParents(o),this.data.set(o,{type:"file",content:typeof r=="string"?nd.encode(r):r,mode:33188,mtime:new Date})}}ensureParents(t){let n=Go(t);n!=="/"&&(this.data.has(n)||(this.ensureParents(n),this.data.set(n,{type:"directory",mode:16877,mtime:new Date})))}resolve(t){let n="",r=new Set;for(let o of ln(t).slice(1).split("/")){n=`${n}/${o}`;let s=0,i=this.data.get(n);for(;i?.type==="symlink"&&s<40;){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, '${t}'`);r.add(n);let a=i.target;n=a.startsWith("/")?ln(a):ln(Go(n)+"/"+a),i=this.data.get(n),s++}if(s>=40)throw new Error(`ELOOP: too many levels of symbolic links, '${t}'`)}return n}resolveParent(t){let n=ln(t);if(n==="/")return"/";let r=n.slice(1).split("/");if(r.length<=1)return n;let o="",s=new Set;for(let i=0;i<r.length-1;i++){o=`${o}/${r[i]}`;let a=this.data.get(o),c=0;for(;a?.type==="symlink"&&c<40;){if(s.has(o))throw new Error(`ELOOP: too many levels of symbolic links, '${t}'`);s.add(o);let f=a.target;o=f.startsWith("/")?ln(f):ln(Go(o)+"/"+f),a=this.data.get(o),c++}}return`${o}/${r[r.length-1]}`}async readFile(t){return zg.decode(await this.readFileBuffer(t))}async readFileBuffer(t){let n=this.data.get(this.resolve(t));if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content}async writeFile(t,n){let r=this.resolve(t);this.ensureParents(r),this.data.set(r,{type:"file",content:typeof n=="string"?nd.encode(n):n,mode:33188,mtime:new Date})}async exists(t){try{return this.data.has(this.resolve(t))}catch{return!1}}async stat(t){let n=this.data.get(this.resolve(t));if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);return{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:n.type==="file"?n.content.byteLength:0,mtime:n.mtime}}async lstat(t){let n=this.resolveParent(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);return{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:r.type==="symlink",mode:r.mode,size:r.type==="file"?r.content.byteLength:r.type==="symlink"?r.target.length:0,mtime:r.mtime}}async mkdir(t,n){let r=ln(t);if(this.data.has(r)){if(this.data.get(r).type!=="directory")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let o=Go(r);if(o!=="/"&&!this.data.has(o))if(n?.recursive)await this.mkdir(o,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:16877,mtime:new Date})}async readdir(t){let n=this.resolve(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let o=n==="/"?"/":`${n}/`,s=new Set;for(let i of this.data.keys())if(i!==n&&i.startsWith(o)){let c=i.slice(o.length).split("/")[0];c&&s.add(c)}return[...s].sort()}async rm(t,n){let r=ln(t),o=this.data.get(r);if(!o){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(o.type==="directory"){if(!n?.recursive&&(await this.readdir(r)).length>0)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);let s=r==="/"?"/":`${r}/`;for(let i of[...this.data.keys()])i.startsWith(s)&&this.data.delete(i)}this.data.delete(r)}async readlink(t){let n=this.resolveParent(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async symlink(t,n){let r=ln(n);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParents(r),this.data.set(r,{type:"symlink",target:t,mode:40960,mtime:new Date})}};Sn();export{jo as Git,ha as MemoryFileSystem,eh as composeGitHooks,qg as createGit,Xn as findRepo,ee as isRejection};
|