just-git 1.5.6 → 1.5.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/dist/index.js +342 -338
- package/dist/repo/index.d.ts +137 -2
- package/dist/repo/index.js +19 -18
- package/dist/server/index.d.ts +1 -1
- package/dist/{writing-IwfRRrts.d.ts → writing-CF-eYohc.d.ts} +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var Ad=Object.defineProperty;var
|
|
2
|
-
`;break;case"t":r+=" ";break;case"b":r+="\b";break;default:r+="\\",r+=
|
|
3
|
-
`),o=0;for(;o<r.length;){let i=r[o].trim();if(!i||i.startsWith("#")||i.startsWith(";")){o++;continue}if(i.startsWith("[")){n=
|
|
4
|
-
`),o=0;for(;o<r.length;){let i=r[o].trim();if(!i||i.startsWith("#")||i.startsWith(";")){o++;continue}if(i.startsWith("[")){n=
|
|
5
|
-
`:n+="\\n";break;case" ":n+="\\t";break;case"\b":n+="\\b";break;default:n+=o}}return t?`"${n}"`:n}function
|
|
6
|
-
`)}
|
|
7
|
-
`}function
|
|
8
|
-
`),s=
|
|
1
|
+
var Ad=Object.defineProperty;var Ss=(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 Re=(e,t)=>()=>(e&&(t=e(e=0)),t);var Hd=(e,t)=>{for(var n in t)Ad(e,n,{get:t[n],enumerable:!0})};function Hs(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 H(...e){if(e.length===0)return".";let t=e.filter(n=>n!=="").join("/");return t===""?".":Hs(t)}function Ht(...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 Hs(t||".")}function tn(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 Br(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 st(e,t){let n=Hs(e),r=Hs(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,m=s.slice(f),u=[];for(let h=0;h<d;h++)u.push("..");for(let h of m)u.push(h);return u.join("/")||"."}var me=Re(()=>{"use strict"});function Jo(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 La(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 m=c[f+1];switch(l(),m){case"\\":r+="\\";break;case'"':r+='"';break;case"n":r+=`
|
|
2
|
+
`;break;case"t":r+=" ";break;case"b":r+="\b";break;default:r+="\\",r+=m;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 Ld(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=Jo(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:m}=La(l,r,o);a[f]=d,o+=m}continue}o++}return t}function Qo(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=Jo(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:m}=La(l,r,o);f in a?a[f].push(d):a[f]=[d],o+=m}continue}o++}return t}function ei(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
|
+
`:n+="\\n";break;case" ":n+="\\t";break;case"\b":n+="\\b";break;default:n+=o}}return t?`"${n}"`:n}function ti(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} = ${ei(s)}`)}return`${t.join(`
|
|
6
|
+
`)}
|
|
7
|
+
`}function ni(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=Jo(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 m=l.indexOf("=");(m===-1?l.toLowerCase():l.slice(0,m).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 Nd(e,t,n,r){let o=e.split(`
|
|
8
|
+
`),s=ni(o,t,n),i=` ${n} = ${ei(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 _d(e,t,n){let r=e.split(`
|
|
10
|
-
`),o=
|
|
11
|
-
`),found:!0})}async function
|
|
12
|
-
`),s=
|
|
13
|
-
`)}async function
|
|
10
|
+
`),o=ni(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 pe(e){let t=H(e.gitDir,"config");if(!await e.fs.exists(t))return{};let n=await e.fs.readFile(t);return Ld(n)}async function Ds(e){let t=H(e.gitDir,"config");return await e.fs.exists(t)?e.fs.readFile(t):""}async function Je(e,t){let n=H(e.gitDir,"config");await e.fs.writeFile(n,ti(t))}async function xe(e,t){let n=e.configOverrides,r=n?.locked?.[t];if(r!==void 0)return r;let o=await pe(e),{section:s,key:i}=Wr(t),a=o[s]?.[i];return a!==void 0?a:n?.defaults?.[t]}async function ri(e,t,n){let r=await Ds(e),{section:o,key:s}=Wr(t),i=Nd(r,o,s,n),a=H(e.gitDir,"config");await e.fs.writeFile(a,i)}async function Na(e,t){let n=e.configOverrides,r=n?.locked?.[t];if(r!==void 0)return[r];let o=await Ds(e);if(o){let i=Qo(o),{section:a,key:c}=Wr(t),f=i[a]?.[c];if(f&&f.length>0)return f}let s=n?.defaults?.[t];return s!==void 0?[s]:[]}function Fd(e,t,n,r){let o=e.split(`
|
|
12
|
+
`),s=ni(o,t,n),i=` ${n} = ${ei(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 _a(e,t,n){let r=await Ds(e),{section:o,key:s}=Wr(t),i=Fd(r,o,s,n),a=H(e.gitDir,"config");await e.fs.writeFile(a,i)}async function Fa(e,t){let n=await Ds(e),{section:r,key:o}=Wr(t),s=_d(n,r,o);if(!s.found)return!1;let i=H(e.gitDir,"config");return await e.fs.writeFile(i,s.text),!0}function Wr(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 Be=Re(()=>{"use strict";me()});function Ms(e,t){return Ua(e,t,"author")}function qr(e,t){return Ua(e,t,"committer")}async function Ua(e,t,n){let r=Ud[n],o=e.identityOverride,{timestamp:s,timezone:i}=Bd(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 xe(e,"user.name")??o?.name,c=t.get(r.email)??await xe(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,97 +18,97 @@ 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 en(e,t){try{let n=await Wr(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 Bd(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 Ud,Tn=Re(()=>{"use strict";qe();Ud={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 vn(e){let t="";for(let n=0;n<20;n++)t+=Ua[e[n]];return t}function qr(e,t){let n="";for(let r=0;r<20;r++)n+=Ua[e[t+r]];return n}function At(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 ee,Ua,ht=Re(()=>{"use strict";ee="0000000000000000000000000000000000000000",Ua=(()=>{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 Ba(e){return e.length===4&&e.toLowerCase()===".git"}function Qn(e){if(e.length===0||e.includes("\0")||e.charCodeAt(0)===47||e.charCodeAt(e.length-1)===47)return!1;let t=e.split("/");for(let n of t)if(n.length===0||n==="."||n===".."||Ba(n))return!1;return!0}function Ms(e,t){return t===e?!1:e==="/"?t.startsWith("/")&&t.length>1:t.startsWith(e+"/")}function Wa(e){if(e.length===0||e.charCodeAt(0)===47)return!1;let t=e.split("/");for(let n of t)if(n===".."||Ba(n))return!1;return!0}var js=Re(()=>{"use strict"});function ri(e){return typeof e=="string"?qd.encode(e):e}function zd(){if(typeof globalThis.Bun<"u")return()=>{let e=new Bun.CryptoHasher("sha1"),t={update(n){return e.update(ri(n)),t},hex:()=>Promise.resolve(e.digest("hex"))};return t};try{let e=Is(["node","crypto"].join(":"));if(typeof e.createHash=="function")return()=>{let t=e.createHash("sha1"),n={update(r){return t.update(ri(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(ri(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 vn(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 Hn(e){return qa().update(e).hex()}var qd,qa,An,er=Re(()=>{"use strict";ht();qd=new TextEncoder;qa=zd(),An=qa});async function z(e){let t=v(e.gitDir,"index");if(!await e.fs.exists(t))return{version:si,entries:[]};let n=await e.fs.readFileBuffer(t);return Kd(n)}async function de(e,t){let n=v(e.gitDir,"index"),r=await Vd(t);await e.fs.writeFile(n,r)}function Ct(e,t){if(!Qn(t.path))throw new Error(`refusing to add unsafe path to index: '${t.path}'`);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(oi),{...e,entries:n}}function lt(e,t){return{...e,entries:e.entries.filter(n=>n.path!==t)}}function Gs(e,t,n=0){return e.entries.find(r=>r.path===t&&r.stage===n)}function Ht(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 Le(e){return e.entries.filter(t=>t.stage===0)}function Ka(){return{version:si,entries:[]}}function Ls(e){let t=[...e].sort(oi);return{version:si,entries:t}}function Se(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}function Kd(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=0,r=t.getUint32(n);if(n+=4,r!==za)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=vn(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 Vd(e){let t=new TextEncoder,n=[...e.entries].sort(oi),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,za),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=At(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 Hn(f),d=At(l);return i.set(d,c),i}function oi(e,t){return e.path<t.path?-1:e.path>t.path?1:e.stage-t.stage}var za,si,Ce=Re(()=>{"use strict";ht();js();me();er();za=1145655875,si=2});var Yd,Ns,Va=Re(()=>{"use strict";Yd=new Set(["tree","commit","tag"]),Ns=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(!Yd.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 ii(e){let t=4294967295;for(let n=0;n<e.byteLength;n++)t=Ya[(t^e[n])&255]^t>>>8;return(t^4294967295)>>>0}var Ya,Xa=Re(()=>{"use strict";Ya=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;Ya[e]=t}});function oc(e){let t=sc(e);return rc(e.subarray(t,-4),{i:2})}function li(e){let t=sc(e),n={i:2},r=rc(e.subarray(t),n),o=nc(n.p);return{result:r,bytesConsumed:t+o+4}}var qt,Er,Xd,Za,Ja,Zd,Qa,ec,Jd,fi,zr,Kr,tc,Qd,eu,ai,Wt,ci,nc,tu,tn,rc,sc,ic=Re(()=>{"use strict";qt=Uint8Array,Er=Uint16Array,Xd=Int32Array,Za=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]),Ja=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]),Zd=new qt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Qa=(e,t)=>{let n=new Er(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:ec}=Qa(Za,2);ec[28]=258;({b:Jd}=Qa(Ja,0)),fi=new Er(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,fi[e]=((t&65280)>>8|(t&255)<<8)>>1}zr=(e,t,n)=>{let r=e.length,o=0,s=new Er(t);for(;o<r;++o)e[o]&&++s[e[o]-1];let i=new Er(t);for(o=1;o<t;++o)i[o]=i[o-1]+s[o-1]<<1;let a;if(n){a=new Er(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[fi[d]>>c]=f}}else for(a=new Er(r),o=0;o<r;++o)e[o]&&(a[o]=fi[i[e[o]-1]++]>>15-e[o]);return a},Kr=new qt(288);for(let e=0;e<144;++e)Kr[e]=8;for(let e=144;e<256;++e)Kr[e]=9;for(let e=256;e<280;++e)Kr[e]=7;for(let e=280;e<288;++e)Kr[e]=8;tc=new qt(32);for(let e=0;e<32;++e)tc[e]=5;Qd=zr(Kr,9,1),eu=zr(tc,5,1),ai=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},ci=(e,t)=>{let n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},nc=e=>(e+7)/8|0,tu=(e,t,n)=>((t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new qt(e.subarray(t,n))),tn=(e,t)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(t||n[e]||"unknown inflate error")},rc=(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 E=Wt(e,d+1,3);if(d+=3,E)if(E==1)m=Qd,h=eu,p=9,g=5;else if(E==2){let R=Wt(e,d,31)+257,k=Wt(e,d+10,15)+4,C=R+Wt(e,d+5,31)+1;d+=14;let P=new qt(C),T=new qt(19);for(let A=0;A<k;++A)T[Zd[A]]=Wt(e,d+A*3,7);d+=k*3;let D=ai(T),O=(1<<D)-1,N=zr(T,D,1);for(let A=0;A<C;){let _=N[Wt(e,d,O)];d+=_&15;let F=_>>4;if(F<16)P[A++]=F;else{let U=0,L=0;for(F==16?(L=3+Wt(e,d,3),d+=2,U=P[A-1]):F==17?(L=3+Wt(e,d,7),d+=3):F==18&&(L=11+Wt(e,d,127),d+=7);L--;)P[A++]=U}}let H=P.subarray(0,R),S=P.subarray(R);p=ai(H),g=ai(S),m=zr(H,p,1),h=zr(S,g,1)}else tn(1);else{let R=nc(d)+4,k=e[R-4]|e[R-3]<<8,C=R+k;if(C>o){c&&tn(0);break}a&&f(u+k),n.set(e.subarray(R,C),u),t.b=u+=k,t.p=d=C*8,t.f=l;continue}if(d>w){c&&tn(0);break}}a&&f(u+131072);let y=(1<<p)-1,x=(1<<g)-1,b=d;for(;;b=d){let E=m[ci(e,d)&y],R=E>>4;if(d+=E&15,d>w){c&&tn(0);break}if(E||tn(2),R<256)n[u++]=R;else if(R==256){b=d,m=null;break}else{let k=R-254;if(R>264){let O=R-257,N=Za[O];k=Wt(e,d,(1<<N)-1)+ec[O],d+=N}let C=h[ci(e,d)&x],P=C>>4;C||tn(3),d+=C&15;let T=Jd[P];if(P>3){let O=Ja[P];T+=ci(e,d)&(1<<O)-1,d+=O}if(d>w){c&&tn(0);break}a&&f(u+131072);let D=u+k;if(u<T){let O=s-T,N=Math.min(T,D);for(O+u<0&&tn(3);u<N;++u)n[u]=r[O+u]}for(;u<D;++u)n[u]=n[u-T]}}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?tu(n,0,u):n.subarray(0,u)},sc=e=>(((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&tn(0,"invalid zlib data"),e[1]&32&&tn(0,"zlib dictionaries are not supported"),2)});async function nu(){let e;if(!(typeof document<"u"))try{e=Is(["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??li}}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:oc,inflateWithConsumed:li}}function di(){return ru??=nu()}async function kr(e){return await(await di()).deflateSync(e)}async function Rr(e){return await(await di()).inflateSync(e)}async function ac(e,t){let n=await di(),{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 ru,_s=Re(()=>{"use strict";ic();ru=null});async function pc(e,t){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==Fs)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${Fs.toString(16)})`);let o=n.getUint32(4);if(o!==hi)throw new Error(`Unsupported pack version: ${o}`);if(e.byteLength>=32){let f=qr(e,e.byteLength-20),l=An();l.update(e.subarray(0,e.byteLength-20));let d=await l.hex();if(d!==f)throw new Error(`pack checksum mismatch: expected ${f}, computed ${d}`)}let s=n.getUint32(8),i=[],a=12;for(let f=0;f<s;f++){let l=await ou(e,a);i.push(l),a=l.nextOffset}return(await iu(i,t)).map((f,l)=>({...f,offset:i[l].headerOffset,nextOffset:i[l].nextOffset}))}async function ou(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===Vr){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===pi&&(c=qr(e,t),t+=20);let{result:f,bytesConsumed:l}=await ac(e.subarray(t),s);return{headerOffset:n,typeNum:o,inflated:f,baseOffset:a,baseHash:c,nextOffset:t+l}}async function iu(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,i=0){if(i>cc)throw new Error(`delta chain depth ${i} exceeds limit of ${cc}`);let a=r[s];if(a)return a;let c=e[s];if(c.typeNum!==Vr&&c.typeNum!==pi){let m=su[c.typeNum];if(!m)throw new Error(`Unknown object type: ${c.typeNum}`);let h={type:m,content:c.inflated,hash:await ui(m,c.inflated)};return r[s]=h,h}if(c.typeNum===Vr){let m=n.get(c.baseOffset);if(m===void 0)throw new Error(`OFS_DELTA base not found at offset ${c.baseOffset}`);let h=await o(m,i+1),p=Yr(h.content,c.inflated),g={type:h.type,content:p,hash:await ui(h.type,p)};return r[s]=g,g}let f=await au(e,r,c.baseHash,o),l;if(f!==void 0)l=await o(f,i+1);else if(t){let m=await t(c.baseHash);m&&(l=m)}if(!l)throw new Error(`REF_DELTA base not found for hash ${c.baseHash}`);let d=Yr(l.content,c.inflated),u={type:l.type,content:d,hash:await ui(l.type,d)};return r[s]=u,u}for(let s=0;s<e.length;s++)await o(s);return r}async function au(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!==Vr&&s.typeNum!==pi&&(await r(o)).hash===n)return o}}function Yr(e,t){let n=0,{value:r,newPos:o}=fc(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}=fc(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 gc(e){let t=[],n=new Uint8Array(12),r=new DataView(n.buffer);r.setUint32(0,Fs),r.setUint32(4,hi),r.setUint32(8,e.length),t.push(n);for(let o of e){let s=hc[o.type],i=await kr(o.content);t.push(mi(s,o.content.byteLength)),t.push(i)}return wc(t)}async function Us(e){let t=[],n=new Map,r=new Uint8Array(12),o=new DataView(r.buffer);o.setUint32(0,Fs),o.setUint32(4,hi),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=mi(Vr,a.delta.byteLength),d=cu(s-f),u=await kr(a.delta);t.push(l,d,u),s+=l.byteLength+d.byteLength+u.byteLength}else{let l=hc[a.type],d=mi(l,a.content.byteLength),u=await kr(a.content);t.push(d,u),s+=d.byteLength+u.byteLength}i.push({hash:a.hash,offset:c,nextOffset:s})}return{data:await wc(t),entries:i}}async function wc(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=An();o.update(n.subarray(0,r));let s=await o.hex();return n.set(At(s),r),n}function cu(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 mi(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 fc(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 ui(e,t){let n=fu.encode(`${e} ${t.byteLength}\0`),r=An();return r.update(n),r.update(t),r.hex()}var Fs,hi,lc,dc,uc,mc,Vr,pi,su,hc,cc,fu,xr=Re(()=>{"use strict";ht();er();_s();Fs=1346454347,hi=2,lc=1,dc=2,uc=3,mc=4,Vr=6,pi=7,su={[lc]:"commit",[dc]:"tree",[uc]:"blob",[mc]:"tag"},hc={commit:lc,tree:dc,blob:uc,tag:mc};cc=50;fu=new TextEncoder});async function Ec(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,bc),c+=4,a.setUint32(c,yc),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(At(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=An();d.update(i.subarray(0,c));let u=await d.hex();return i.set(At(u),c),i}async function kc(e){let n=(await pc(e)).map(o=>({hash:o.hash,offset:o.offset,crc:ii(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return Ec(n,r)}async function Rc(e,t){let n=t.map(o=>({hash:o.hash,offset:o.offset,crc:ii(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return Ec(n,r)}var bc,yc,zt,Bs=Re(()=>{"use strict";ht();er();Xa();xr();bc=4285812579,yc=2,zt=class{fanout;hashes;offsets;largeOffsets;count;constructor(t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(n.getUint32(0)!==bc)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==yc)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=At(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=At(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 lu,du,uu,xc,Xr,Cc=Re(()=>{"use strict";ht();Bs();xr();_s();lu=6,du=7,uu={1:"commit",2:"tree",3:"blob",4:"tag"},xc=50,Xr=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,0)}get objectCount(){return this.index.objectCount}async readAt(t,n){if(n>xc)throw new Error(`delta chain depth ${n} exceeds limit of ${xc}`);let r=this.data,o=t,s=r[o++],i=s>>4&7,a=s&15,c=4;for(;s&128;)s=r[o++],a|=(s&127)<<c,c+=7;if(i===lu){let d=r[o++],u=d&127;for(;d&128;)u+=1,d=r[o++],u=(u<<7)+(d&127);let m=await Rr(r.subarray(o)),h=await this.readAt(t-u,n+1);return{type:h.type,content:Yr(h.content,m)}}if(i===du){let d=qr(r,o);o+=20;let u=await Rr(r.subarray(o)),m=this.index.lookup(d);if(m===null)throw new Error(`REF_DELTA base ${d} not found in pack`);let h=await this.readAt(m,n+1);return{type:h.type,content:Yr(h.content,u)}}let f=uu[i];if(!f)throw new Error(`Unknown pack object type: ${i}`);let l=await Rr(r.subarray(o));if(l.byteLength!==a)throw new Error(`Pack inflate size mismatch at offset ${t}: got ${l.byteLength}, expected ${a}`);return{type:f,content:l}}}});function wi(e,t){let n=mu.encode(`${e} ${t.byteLength}\0`),r=new Uint8Array(n.byteLength+t.byteLength);return r.set(n),r.set(t,n.byteLength),r}function pu(e,t){let n=t.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${e}: no null byte in header`);let r=hu.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 gi(e,t){return v(e,"objects",t.slice(0,2),t.slice(2))}var mu,hu,Cr,bi=Re(()=>{"use strict";ht();Va();Bs();Cc();xr();_s();me();er();mu=new TextEncoder,hu=new TextDecoder;Cr=class{constructor(t,n,r){this.fs=t;this.gitDir=n;this.cache=new Ns(r),this.packDir=v(n,"objects","pack")}packs=[];loadedPackNames=new Set;discoverPromise=null;cache;packDir;async write(t,n){let r=wi(t,n),o=await Hn(r),s=gi(this.gitDir,o);if(await this.fs.exists(s))return o;let i=v(this.gitDir,"objects",o.slice(0,2));return await this.fs.mkdir(i,{recursive:!0}),await this.fs.writeFile(s,await kr(r)),o}async read(t){let n=this.cache.get(t);if(n)return n;let r=gi(this.gitDir,t);if(await this.fs.exists(r)){let o=await this.fs.readFileBuffer(r),s=await Rr(o),i=await Hn(s);if(i!==t)throw new Error(`corrupt loose object ${t}: SHA-1 mismatch (computed ${i})`);let a=pu(t,s);return this.cache.set(t,a),a}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(gi(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 n=new DataView(t.buffer,t.byteOffset,t.byteLength),r=n.getUint32(0);if(r!==1346454347)throw new Error(`invalid pack signature: 0x${r.toString(16)} (expected 0x5041434b)`);let o=n.getUint32(4);if(o!==2)throw new Error(`unsupported pack version: ${o}`);let s=n.getUint32(8);if(s===0)return 0;let i=t.subarray(t.byteLength-20),a=vn(i),c=await Hn(t.subarray(0,t.byteLength-20));if(c!==a)throw new Error(`pack checksum mismatch: expected ${a}, computed ${c}`);await this.fs.mkdir(this.packDir,{recursive:!0});let f=`pack-${a}`,l=v(this.packDir,`${f}.pack`);await this.fs.writeFile(l,t);let d=await kc(t),u=v(this.packDir,`${f}.idx`);await this.fs.writeFile(u,d),this.loadedPackNames.add(f);let m=new zt(d);return this.packs.push({name:f,index:m,reader:new Xr(t,m)}),s}async ingestPackStream(t){let n=[];for await(let o of t)n.push(o);if(n.length===0)return 0;let r=await gc(n);return this.ingestPack(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=v(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=v(this.packDir,`${t.name}.pack`),r=await this.fs.readFileBuffer(n);return t.reader=new Xr(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=v(this.packDir,`${r}.pack`);if(!await this.fs.exists(o))continue;let s=await this.fs.readFileBuffer(v(this.packDir,n));this.loadedPackNames.add(r),this.packs.push({name:r,index:new zt(s),reader:null})}}}});function Zr(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 Jr(e){return`${e.name} <${e.email}> ${e.timestamp} ${e.timezone}`}var yi=Re(()=>{"use strict"});function nn(e){let t=wu.decode(e),n=t.indexOf(`
|
|
21
|
+
`);return{name:a,email:c,timestamp:s,timezone:i}}async function nn(e,t){try{let n=await qr(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 Bd(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 Ud,Tn=Re(()=>{"use strict";Be();Ud={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 vn(e){let t="";for(let n=0;n<20;n++)t+=Ba[e[n]];return t}function zr(e,t){let n="";for(let r=0;r<20;r++)n+=Ba[e[t+r]];return n}function Dt(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 ee,Ba,ht=Re(()=>{"use strict";ee="0000000000000000000000000000000000000000",Ba=(()=>{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 Wa(e){return e.length===4&&e.toLowerCase()===".git"}function Qn(e){if(e.length===0||e.includes("\0")||e.charCodeAt(0)===47||e.charCodeAt(e.length-1)===47)return!1;let t=e.split("/");for(let n of t)if(n.length===0||n==="."||n===".."||Wa(n))return!1;return!0}function js(e,t){return t===e?!1:e==="/"?t.startsWith("/")&&t.length>1:t.startsWith(e+"/")}function qa(e){if(e.length===0||e.charCodeAt(0)===47)return!1;let t=e.split("/");for(let n of t)if(n===".."||Wa(n))return!1;return!0}var Gs=Re(()=>{"use strict"});function si(e){return typeof e=="string"?qd.encode(e):e}function zd(){if(typeof globalThis.Bun<"u")return()=>{let e=new Bun.CryptoHasher("sha1"),t={update(n){return e.update(si(n)),t},hex:()=>Promise.resolve(e.digest("hex"))};return t};try{let e=Ss(["node","crypto"].join(":"));if(typeof e.createHash=="function")return()=>{let t=e.createHash("sha1"),n={update(r){return t.update(si(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(si(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 vn(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 Hn(e){return za().update(e).hex()}var qd,za,An,er=Re(()=>{"use strict";ht();qd=new TextEncoder;za=zd(),An=za});async function z(e){let t=H(e.gitDir,"index");if(!await e.fs.exists(t))return{version:oi,entries:[]};let n=await e.fs.readFileBuffer(t);return Kd(n)}async function fe(e,t){let n=H(e.gitDir,"index"),r=await Vd(t);await e.fs.writeFile(n,r)}function Ct(e,t){if(!Qn(t.path))throw new Error(`refusing to add unsafe path to index: '${t.path}'`);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(ii),{...e,entries:n}}function lt(e,t){return{...e,entries:e.entries.filter(n=>n.path!==t)}}function Ls(e,t,n=0){return e.entries.find(r=>r.path===t&&r.stage===n)}function Mt(e){return e.entries.some(t=>t.stage>0)}function Wt(e){return[...new Set(e.entries.filter(t=>t.stage>0).map(t=>t.path))]}function Ne(e){return e.entries.filter(t=>t.stage===0)}function Va(){return{version:oi,entries:[]}}function Ns(e){let t=[...e].sort(ii);return{version:oi,entries:t}}function Se(){return{ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,uid:0,gid:0,size:0}}function Kd(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=0,r=t.getUint32(n);if(n+=4,r!==Ka)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),m=vn(d);n+=20;let u=t.getUint16(n);n+=2;let h=u>>12&3,p=u&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 R=62+g+1,x=Math.ceil(R/8)*8;n=c+x,i.push({path:w,mode:l,hash:m,stage:h,stat:f})}return{version:o,entries:i}}async function Vd(e){let t=new TextEncoder,n=[...e.entries].sort(ii),r=[],o=12;for(let m of n){let u=t.encode(m.path);r.push(u);let h=62+u.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,Ka),c+=4,a.setUint32(c,e.version),c+=4,a.setUint32(c,n.length),c+=4;for(let m=0;m<n.length;m++){let u=n[m],h=r[m],p=c;a.setUint32(c,u.stat.ctimeSeconds),a.setUint32(c+4,u.stat.ctimeNanoseconds),a.setUint32(c+8,u.stat.mtimeSeconds),a.setUint32(c+12,u.stat.mtimeNanoseconds),a.setUint32(c+16,u.stat.dev),a.setUint32(c+20,u.stat.ino),a.setUint32(c+24,u.mode),a.setUint32(c+28,u.stat.uid),a.setUint32(c+32,u.stat.gid),a.setUint32(c+36,u.stat.size),c+=40;let g=Dt(u.hash);i.set(g,c),c+=20;let w=Math.min(h.byteLength,4095),R=(u.stage&3)<<12|w;a.setUint16(c,R),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 Hn(f),d=Dt(l);return i.set(d,c),i}function ii(e,t){return e.path<t.path?-1:e.path>t.path?1:e.stage-t.stage}var Ka,oi,Ce=Re(()=>{"use strict";ht();Gs();me();er();Ka=1145655875,oi=2});var Yd,_s,Ya=Re(()=>{"use strict";Yd=new Set(["tree","commit","tag"]),_s=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(!Yd.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 ai(e){let t=4294967295;for(let n=0;n<e.byteLength;n++)t=Xa[(t^e[n])&255]^t>>>8;return(t^4294967295)>>>0}var Xa,Za=Re(()=>{"use strict";Xa=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;Xa[e]=t}});function ic(e){let t=oc(e);return sc(e.subarray(t,-4),{i:2})}function di(e){let t=oc(e),n={i:2},r=sc(e.subarray(t),n),o=rc(n.p);return{result:r,bytesConsumed:t+o+4}}var zt,Er,Xd,Ja,Qa,Zd,ec,tc,Jd,li,Kr,Vr,nc,Qd,eu,ci,qt,fi,rc,tu,rn,sc,oc,ac=Re(()=>{"use strict";zt=Uint8Array,Er=Uint16Array,Xd=Int32Array,Ja=new zt([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]),Qa=new zt([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]),Zd=new zt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ec=(e,t)=>{let n=new Er(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:tc}=ec(Ja,2);tc[28]=258;({b:Jd}=ec(Qa,0)),li=new Er(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,li[e]=((t&65280)>>8|(t&255)<<8)>>1}Kr=(e,t,n)=>{let r=e.length,o=0,s=new Er(t);for(;o<r;++o)e[o]&&++s[e[o]-1];let i=new Er(t);for(o=1;o<t;++o)i[o]=i[o-1]+s[o-1]<<1;let a;if(n){a=new Er(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 m=d|(1<<l)-1;d<=m;++d)a[li[d]>>c]=f}}else for(a=new Er(r),o=0;o<r;++o)e[o]&&(a[o]=li[i[e[o]-1]++]>>15-e[o]);return a},Vr=new zt(288);for(let e=0;e<144;++e)Vr[e]=8;for(let e=144;e<256;++e)Vr[e]=9;for(let e=256;e<280;++e)Vr[e]=7;for(let e=280;e<288;++e)Vr[e]=8;nc=new zt(32);for(let e=0;e<32;++e)nc[e]=5;Qd=Kr(Vr,9,1),eu=Kr(nc,5,1),ci=e=>{let t=e[0];for(let n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},qt=(e,t,n)=>{let r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},fi=(e,t)=>{let n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},rc=e=>(e+7)/8|0,tu=(e,t,n)=>((t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new zt(e.subarray(t,n))),rn=(e,t)=>{let n=["unexpected EOF","invalid block type","invalid length/literal","invalid distance"];throw new Error(t||n[e]||"unknown inflate error")},sc=(e,t,n,r)=>{let o=e.length,s=r?r.length:0;if(!o||t.f&&!t.l)return n||new zt(0);let i=!n,a=i||t.i!=2,c=t.i;i&&(n=new zt(o*3));let f=R=>{let x=n.length;if(R>x){let b=new zt(Math.max(x*2,R));b.set(n),n=b}},l=t.f||0,d=t.p||0,m=t.b||0,u=t.l,h=t.d,p=t.m,g=t.n,w=o*8;do{if(!u){l=qt(e,d,1);let y=qt(e,d+1,3);if(d+=3,y)if(y==1)u=Qd,h=eu,p=9,g=5;else if(y==2){let E=qt(e,d,31)+257,k=qt(e,d+10,15)+4,C=E+qt(e,d+5,31)+1;d+=14;let P=new zt(C),I=new zt(19);for(let D=0;D<k;++D)I[Zd[D]]=qt(e,d+D*3,7);d+=k*3;let v=ci(I),T=(1<<v)-1,N=Kr(I,v,1);for(let D=0;D<C;){let _=N[qt(e,d,T)];d+=_&15;let F=_>>4;if(F<16)P[D++]=F;else{let U=0,L=0;for(F==16?(L=3+qt(e,d,3),d+=2,U=P[D-1]):F==17?(L=3+qt(e,d,7),d+=3):F==18&&(L=11+qt(e,d,127),d+=7);L--;)P[D++]=U}}let S=P.subarray(0,E),A=P.subarray(E);p=ci(S),g=ci(A),u=Kr(S,p,1),h=Kr(A,g,1)}else rn(1);else{let E=rc(d)+4,k=e[E-4]|e[E-3]<<8,C=E+k;if(C>o){c&&rn(0);break}a&&f(m+k),n.set(e.subarray(E,C),m),t.b=m+=k,t.p=d=C*8,t.f=l;continue}if(d>w){c&&rn(0);break}}a&&f(m+131072);let R=(1<<p)-1,x=(1<<g)-1,b=d;for(;;b=d){let y=u[fi(e,d)&R],E=y>>4;if(d+=y&15,d>w){c&&rn(0);break}if(y||rn(2),E<256)n[m++]=E;else if(E==256){b=d,u=null;break}else{let k=E-254;if(E>264){let T=E-257,N=Ja[T];k=qt(e,d,(1<<N)-1)+tc[T],d+=N}let C=h[fi(e,d)&x],P=C>>4;C||rn(3),d+=C&15;let I=Jd[P];if(P>3){let T=Qa[P];I+=fi(e,d)&(1<<T)-1,d+=T}if(d>w){c&&rn(0);break}a&&f(m+131072);let v=m+k;if(m<I){let T=s-I,N=Math.min(I,v);for(T+m<0&&rn(3);m<N;++m)n[m]=r[T+m]}for(;m<v;++m)n[m]=n[m-I]}}t.l=u,t.p=b,t.b=m,t.f=l,u&&(l=1,t.m=p,t.d=h,t.n=g)}while(!l);return m!=n.length&&i?tu(n,0,m):n.subarray(0,m)},oc=e=>(((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&rn(0,"invalid zlib data"),e[1]&32&&rn(0,"zlib dictionaries are not supported"),2)});async function nu(){let e;if(!(typeof document<"u"))try{e=Ss(["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??di}}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:ic,inflateWithConsumed:di}}function ui(){return ru??=nu()}async function kr(e){return await(await ui()).deflateSync(e)}async function Rr(e){return await(await ui()).inflateSync(e)}async function cc(e,t){let n=await ui(),{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 ru,Fs=Re(()=>{"use strict";ac();ru=null});async function gc(e,t){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(0);if(r!==Us)throw new Error(`Invalid pack signature: 0x${r.toString(16)} (expected 0x${Us.toString(16)})`);let o=n.getUint32(4);if(o!==pi)throw new Error(`Unsupported pack version: ${o}`);if(e.byteLength>=32){let f=zr(e,e.byteLength-20),l=An();l.update(e.subarray(0,e.byteLength-20));let d=await l.hex();if(d!==f)throw new Error(`pack checksum mismatch: expected ${f}, computed ${d}`)}let s=n.getUint32(8),i=[],a=12;for(let f=0;f<s;f++){let l=await ou(e,a);i.push(l),a=l.nextOffset}return(await iu(i,t)).map((f,l)=>({...f,offset:i[l].headerOffset,nextOffset:i[l].nextOffset}))}async function ou(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===Yr){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===gi&&(c=zr(e,t),t+=20);let{result:f,bytesConsumed:l}=await cc(e.subarray(t),s);return{headerOffset:n,typeNum:o,inflated:f,baseOffset:a,baseHash:c,nextOffset:t+l}}async function iu(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,i=0){if(i>fc)throw new Error(`delta chain depth ${i} exceeds limit of ${fc}`);let a=r[s];if(a)return a;let c=e[s];if(c.typeNum!==Yr&&c.typeNum!==gi){let u=su[c.typeNum];if(!u)throw new Error(`Unknown object type: ${c.typeNum}`);let h={type:u,content:c.inflated,hash:await mi(u,c.inflated)};return r[s]=h,h}if(c.typeNum===Yr){let u=n.get(c.baseOffset);if(u===void 0)throw new Error(`OFS_DELTA base not found at offset ${c.baseOffset}`);let h=await o(u,i+1),p=Xr(h.content,c.inflated),g={type:h.type,content:p,hash:await mi(h.type,p)};return r[s]=g,g}let f=await au(e,r,c.baseHash,o),l;if(f!==void 0)l=await o(f,i+1);else if(t){let u=await t(c.baseHash);u&&(l=u)}if(!l)throw new Error(`REF_DELTA base not found for hash ${c.baseHash}`);let d=Xr(l.content,c.inflated),m={type:l.type,content:d,hash:await mi(l.type,d)};return r[s]=m,m}for(let s=0;s<e.length;s++)await o(s);return r}async function au(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!==Yr&&s.typeNum!==gi&&(await r(o)).hash===n)return o}}function Xr(e,t){let n=0,{value:r,newPos:o}=lc(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}=lc(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 wc(e){let t=[],n=new Uint8Array(12),r=new DataView(n.buffer);r.setUint32(0,Us),r.setUint32(4,pi),r.setUint32(8,e.length),t.push(n);for(let o of e){let s=pc[o.type],i=await kr(o.content);t.push(hi(s,o.content.byteLength)),t.push(i)}return bc(t)}async function Bs(e){let t=[],n=new Map,r=new Uint8Array(12),o=new DataView(r.buffer);o.setUint32(0,Us),o.setUint32(4,pi),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=hi(Yr,a.delta.byteLength),d=cu(s-f),m=await kr(a.delta);t.push(l,d,m),s+=l.byteLength+d.byteLength+m.byteLength}else{let l=pc[a.type],d=hi(l,a.content.byteLength),m=await kr(a.content);t.push(d,m),s+=d.byteLength+m.byteLength}i.push({hash:a.hash,offset:c,nextOffset:s})}return{data:await bc(t),entries:i}}async function bc(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=An();o.update(n.subarray(0,r));let s=await o.hex();return n.set(Dt(s),r),n}function cu(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 hi(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 lc(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 mi(e,t){let n=fu.encode(`${e} ${t.byteLength}\0`),r=An();return r.update(n),r.update(t),r.hex()}var Us,pi,dc,uc,mc,hc,Yr,gi,su,pc,fc,fu,xr=Re(()=>{"use strict";ht();er();Fs();Us=1346454347,pi=2,dc=1,uc=2,mc=3,hc=4,Yr=6,gi=7,su={[dc]:"commit",[uc]:"tree",[mc]:"blob",[hc]:"tag"},pc={commit:dc,tree:uc,blob:mc,tag:hc};fc=50;fu=new TextEncoder});async function kc(e,t){let n=[...e].sort((u,h)=>u.hash<h.hash?-1:u.hash>h.hash?1:0),r=n.length,o=[];for(let u of n)u.offset>=2147483648&&o.push(BigInt(u.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,yc),c+=4,a.setUint32(c,Ec),c+=4;let f=new Uint32Array(256);for(let u of n){let h=parseInt(u.hash.slice(0,2),16);for(let p=h;p<256;p++)f[p]++}for(let u=0;u<256;u++)a.setUint32(c,f[u]),c+=4;for(let u of n)i.set(Dt(u.hash),c),c+=20;for(let u of n)a.setUint32(c,u.crc),c+=4;let l=0;for(let u of n)u.offset>=2147483648?a.setUint32(c,2147483648|l++):a.setUint32(c,u.offset),c+=4;for(let u of o)a.setBigUint64(c,u),c+=8;i.set(t,c),c+=20;let d=An();d.update(i.subarray(0,c));let m=await d.hex();return i.set(Dt(m),c),i}async function Rc(e){let n=(await gc(e)).map(o=>({hash:o.hash,offset:o.offset,crc:ai(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return kc(n,r)}async function xc(e,t){let n=t.map(o=>({hash:o.hash,offset:o.offset,crc:ai(e.subarray(o.offset,o.nextOffset))})),r=e.subarray(e.byteLength-20);return kc(n,r)}var yc,Ec,Kt,Ws=Re(()=>{"use strict";ht();er();Za();xr();yc=4285812579,Ec=2,Kt=class{fanout;hashes;offsets;largeOffsets;count;constructor(t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(n.getUint32(0)!==yc)throw new Error("Invalid pack index: bad magic");if(n.getUint32(4)!==Ec)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=Dt(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=Dt(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 m=d%2===0?this.hashes[f+(d>>1)]>>4&15:this.hashes[f+(d>>1)]&15,u=d%2===0?s[d>>1]>>4&15:s[d>>1]&15;if(m!==u){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 lu,du,uu,Cc,Zr,Pc=Re(()=>{"use strict";ht();Ws();xr();Fs();lu=6,du=7,uu={1:"commit",2:"tree",3:"blob",4:"tag"},Cc=50,Zr=class{constructor(t,n){this.data=t;this.index=n instanceof Kt?n:new Kt(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,0)}get objectCount(){return this.index.objectCount}async readAt(t,n){if(n>Cc)throw new Error(`delta chain depth ${n} exceeds limit of ${Cc}`);let r=this.data,o=t,s=r[o++],i=s>>4&7,a=s&15,c=4;for(;s&128;)s=r[o++],a|=(s&127)<<c,c+=7;if(i===lu){let d=r[o++],m=d&127;for(;d&128;)m+=1,d=r[o++],m=(m<<7)+(d&127);let u=await Rr(r.subarray(o)),h=await this.readAt(t-m,n+1);return{type:h.type,content:Xr(h.content,u)}}if(i===du){let d=zr(r,o);o+=20;let m=await Rr(r.subarray(o)),u=this.index.lookup(d);if(u===null)throw new Error(`REF_DELTA base ${d} not found in pack`);let h=await this.readAt(u,n+1);return{type:h.type,content:Xr(h.content,m)}}let f=uu[i];if(!f)throw new Error(`Unknown pack object type: ${i}`);let l=await Rr(r.subarray(o));if(l.byteLength!==a)throw new Error(`Pack inflate size mismatch at offset ${t}: got ${l.byteLength}, expected ${a}`);return{type:f,content:l}}}});function bi(e,t){let n=mu.encode(`${e} ${t.byteLength}\0`),r=new Uint8Array(n.byteLength+t.byteLength);return r.set(n),r.set(t,n.byteLength),r}function pu(e,t){let n=t.indexOf(0);if(n===-1)throw new Error(`Corrupt object ${e}: no null byte in header`);let r=hu.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 wi(e,t){return H(e,"objects",t.slice(0,2),t.slice(2))}var mu,hu,Cr,yi=Re(()=>{"use strict";ht();Ya();Ws();Pc();xr();Fs();me();er();mu=new TextEncoder,hu=new TextDecoder;Cr=class{constructor(t,n,r){this.fs=t;this.gitDir=n;this.cache=new _s(r),this.packDir=H(n,"objects","pack")}packs=[];loadedPackNames=new Set;discoverPromise=null;cache;packDir;async write(t,n){let r=bi(t,n),o=await Hn(r),s=wi(this.gitDir,o);if(await this.fs.exists(s))return o;let i=H(this.gitDir,"objects",o.slice(0,2));return await this.fs.mkdir(i,{recursive:!0}),await this.fs.writeFile(s,await kr(r)),o}async read(t){let n=this.cache.get(t);if(n)return n;let r=wi(this.gitDir,t);if(await this.fs.exists(r)){let o=await this.fs.readFileBuffer(r),s=await Rr(o),i=await Hn(s);if(i!==t)throw new Error(`corrupt loose object ${t}: SHA-1 mismatch (computed ${i})`);let a=pu(t,s);return this.cache.set(t,a),a}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(wi(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 n=new DataView(t.buffer,t.byteOffset,t.byteLength),r=n.getUint32(0);if(r!==1346454347)throw new Error(`invalid pack signature: 0x${r.toString(16)} (expected 0x5041434b)`);let o=n.getUint32(4);if(o!==2)throw new Error(`unsupported pack version: ${o}`);let s=n.getUint32(8);if(s===0)return 0;let i=t.subarray(t.byteLength-20),a=vn(i),c=await Hn(t.subarray(0,t.byteLength-20));if(c!==a)throw new Error(`pack checksum mismatch: expected ${a}, computed ${c}`);await this.fs.mkdir(this.packDir,{recursive:!0});let f=`pack-${a}`,l=H(this.packDir,`${f}.pack`);await this.fs.writeFile(l,t);let d=await Rc(t),m=H(this.packDir,`${f}.idx`);await this.fs.writeFile(m,d),this.loadedPackNames.add(f);let u=new Kt(d);return this.packs.push({name:f,index:u,reader:new Zr(t,u)}),s}async ingestPackStream(t){let n=[];for await(let o of t)n.push(o);if(n.length===0)return 0;let r=await wc(n);return this.ingestPack(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=H(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=H(this.packDir,`${t.name}.pack`),r=await this.fs.readFileBuffer(n);return t.reader=new Zr(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=H(this.packDir,`${r}.pack`);if(!await this.fs.exists(o))continue;let s=await this.fs.readFileBuffer(H(this.packDir,n));this.loadedPackNames.add(r),this.packs.push({name:r,index:new Kt(s),reader:null})}}}});function Jr(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 Qr(e){return`${e.name} <${e.email}> ${e.timestamp} ${e.timezone}`}var Ei=Re(()=>{"use strict"});function sn(e){let t=wu.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
|
-
`)){let l=f.indexOf(" ");if(l===-1)continue;let d=f.slice(0,l),
|
|
25
|
-
`))}var gu,wu,
|
|
24
|
+
`)){let l=f.indexOf(" ");if(l===-1)continue;let d=f.slice(0,l),m=f.slice(l+1);switch(d){case"tree":s=m;break;case"parent":i.push(m);break;case"author":a=Jr(m);break;case"committer":c=Jr(m);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 on(e){let t=[];t.push(`tree ${e.tree}`);for(let n of e.parents)t.push(`parent ${n}`);return t.push(`author ${Qr(e.author)}`),t.push(`committer ${Qr(e.committer)}`),t.push(""),t.push(e.message),gu.encode(t.join(`
|
|
25
|
+
`))}var gu,wu,wn=Re(()=>{"use strict";Ei();gu=new TextEncoder,wu=new TextDecoder});function Vt(e){let t=yu.decode(e),n=t.indexOf(`
|
|
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
|
-
`)){let l=f.indexOf(" ");if(l===-1)continue;let d=f.slice(0,l),
|
|
29
|
-
`))}var bu,yu,Pr=Re(()=>{"use strict";
|
|
28
|
+
`)){let l=f.indexOf(" ");if(l===-1)continue;let d=f.slice(0,l),m=f.slice(l+1);switch(d){case"object":s=m;break;case"type":i=m;break;case"tag":a=m;break;case"tagger":c=Jr(m);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 $c(e){let t=[];return t.push(`object ${e.object}`),t.push(`type ${e.objectType}`),t.push(`tag ${e.name}`),t.push(`tagger ${Qr(e.tagger)}`),t.push(""),t.push(e.message),bu.encode(t.join(`
|
|
29
|
+
`))}var bu,yu,Pr=Re(()=>{"use strict";Ei();bu=new TextEncoder,yu=new TextDecoder});async function pt(e,t){return Hn(bi(e,t))}async function He(e,t,n){let r=await e.objectStore.write(t,n);return e.hooks?.onObjectWrite?.({repo:e,type:t,hash:r}),r}async function ye(e,t){return e.objectStore.read(t)}async function Yt(e,t){return e.objectStore.exists(t)}async function qs(e,t){return e.objectStore.ingestPack(t)}async function Oc(e,t){return e.objectStore.findByPrefix(t)}function Te(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 Dn(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 se(e,t){let n=await ye(e,t);if(n.type!=="blob")throw new Error(`Expected blob for ${t}, got ${n.type}`);return Eu.decode(n.content)}async function Pt(e,t){let n=await ye(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 ye(e,t);if(n.type!=="commit")throw new Error(`Expected commit object for ${t}, got ${n.type}`);return sn(n.content)}async function Ic(e,t){let n=await ye(e,t);if(n.type!=="tag")throw new Error(`Expected tag object for ${t}, got ${n.type}`);return Vt(n.content)}async function ve(e,t){let n=t;for(let r=0;r<100;r++){let o=await ye(e,n);if(o.type==="commit")return n;if(o.type==="tag"){n=Vt(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 Eu,ce=Re(()=>{"use strict";yi();wn();Pr();er();Eu=new TextDecoder});function Sc(e){return typeof e=="string"?{type:"direct",hash:e}:e}var es,ki=Re(()=>{"use strict";es={REGULAR:"100644",EXECUTABLE:"100755",SYMLINK:"120000",DIRECTORY:"040000",SUBMODULE:"160000"}});function Ru(e,t,n){let r=0,o=!1,s=t;for(;s<e.length;s++){let a=e.charCodeAt(s);switch(a<128?ku[a]:0){case 1:break;case 2:if(r===46)return{len:-1,starConsumed:o};r=a;continue;case 3:if(r===64)return{len:-1,starConsumed:o};r=a;continue;case 4:return{len:-1,starConsumed:o};case 5:if(!n)return{len:-1,starConsumed:o};o=!0,r=a;continue;default:r=a;continue}break}let i=s-t;return i===0?{len:0,starConsumed:o}:e.charCodeAt(t)===46?{len:-1,starConsumed:o}:i>=Ri.length&&e.slice(s-Ri.length,s)===Ri?{len:-1,starConsumed:o}:{len:i,starConsumed:o}}function ts(e,t=0){if(e==="@"||e.length===0)return!1;let n=0,r=0,o=!!(t&2);for(;n<=e.length;){let{len:s,starConsumed:i}=Ru(e,n,o);if(s<0||s===0)return!1;i&&(o=!1),r++,n+=s+1}return!(e.charCodeAt(e.length-1)===46||!(t&1)&&r<2)}function bn(e){return!e||e.startsWith("-")?!1:ts(`refs/heads/${e}`,0)}function Tc(e){return e?ts(`refs/tags/${e}`,0):!1}async function Ac(e,t){return e.refStore.readRef(t)}async function B(e,t){let n=t;for(let r=0;r<vc;r++){let o=await Ac(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 Ac(e,"HEAD")}async function Y(e){return B(e,"HEAD")}async function Z(e,t,n){let r=e.hooks?await B(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 Xe(e,t,n){await e.refStore.writeRef(t,{type:"symbolic",target:n})}async function he(e,t){let n=e.hooks?await B(e,t):null;await e.refStore.deleteRef(t),await rs(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 Pe(e){return e.replace("refs/heads/","")}async function jn(e,t){let n=await Q(e);n&&n.type==="symbolic"?await Z(e,n.target,t):await Z(e,"HEAD",t)}async function Hc(e){if(e.refStore&&!(e.refStore instanceof Mn))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 ye(e,o.hash);if(s.type==="tag"){let i=Vt(s.content).object;for(let a=0;a<100;a++){let c=await ye(e,i);if(c.type!=="tag")break;i=Vt(c.content).object}n.push(`^${i}`)}}catch{}await e.fs.writeFile(H(e.gitDir,"packed-refs"),`${n.join(`
|
|
30
30
|
`)}
|
|
31
|
-
`);for(let o of t){let s=
|
|
31
|
+
`);for(let o of t){let s=H(e.gitDir,o.name);await e.fs.exists(s)&&await e.fs.rm(s)}await Dc(e,H(e.gitDir,"refs"));let r=H(e.gitDir,"refs");await e.fs.mkdir(r,{recursive:!0}),await e.fs.mkdir(H(r,"heads"),{recursive:!0}),await e.fs.mkdir(H(r,"tags"),{recursive:!0})}async function Dc(e,t){if(e.refStore&&!(e.refStore instanceof Mn)||!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 Dc(e,H(t,s));(await e.fs.readdir(t)).length===0&&await e.fs.rm(t,{recursive:!0})}var Ri,ku,xi,vc,Mn,we=Re(()=>{"use strict";ce();Pr();me();ze();Gn();ki();Ri=".lock",ku=[1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,5,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,4,4];xi="ref: ",vc=10,Mn=class{constructor(t,n){this.fs=t;this.gitDir=n}casLocks=new Map;async readRef(t){let n=H(this.gitDir,t);if(await this.fs.exists(n)){let s=(await this.fs.readFile(n)).trim();return s.startsWith(xi)?{type:"symbolic",target:s.slice(xi.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=Sc(n),o=H(this.gitDir,t);await ns(this.fs,o),r.type==="symbolic"?await this.fs.writeFile(o,`${xi}${r.target}
|
|
32
32
|
`):await this.fs.writeFile(o,`${r.hash}
|
|
33
|
-
`)}async deleteRef(t){let n=
|
|
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=
|
|
33
|
+
`)}async deleteRef(t){let n=H(this.gitDir,t);await this.fs.exists(n)&&await this.fs.rm(n),await this.removePackedRef(t)}async listRefs(t="refs"){let n=[],r=H(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<vc;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=H(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
|
+
`)){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=H(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=
|
|
37
|
-
`)){if(!s)continue;let i=Pu(s);i&&o.push(i)}return o}function
|
|
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=H(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 tr(e,t){let n=t;for(;;){let r=H(n,".git");if(await e.exists(r)&&(await e.stat(r)).isDirectory)return{fs:e,gitDir:r,workTree:n,objectStore:new Cr(e,r),refStore:new Mn(e,r)};if(await xu(e,n))return{fs:e,gitDir:n,workTree:null,objectStore:new Cr(e,n),refStore:new Mn(e,n)};let o=Cu(n);if(o===n)return null;n=o}}async function xu(e,t){let n=H(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=H(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 zs(e,t,n={}){let{bare:r=!1,initialBranch:o="main"}=n,s=r?t:H(t,".git"),i=r?null:t,a=H(s,"HEAD"),c=await e.exists(a);await e.mkdir(H(s,"objects"),{recursive:!0}),await e.mkdir(H(s,"refs","heads"),{recursive:!0}),await e.mkdir(H(s,"refs","tags"),{recursive:!0});let f={fs:e,gitDir:s,workTree:i,objectStore:new Cr(e,s),refStore:new Mn(e,s)};if(!c){await Xe(f,"HEAD",`refs/heads/${o}`);let l={core:{repositoryformatversion:"0",filemode:"true",bare:r?"true":"false",...r?{}:{logallrefupdates:"true"}}};await e.writeFile(H(s,"config"),ti(l))}return{ctx:f,reinit:c}}async function ns(e,t){let n=t.lastIndexOf("/");if(n>0){let r=t.slice(0,n);await e.mkdir(r,{recursive:!0})}}function Cu(e){let t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}var Gn=Re(()=>{"use strict";Be();yi();me();we()});function Ks(e,t){return H(e.gitDir,"logs",t)}function Pu(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),m=d.indexOf(" ");if(m<0)return null;let u=parseInt(d.slice(0,m),10),h=d.slice(m+1);return{oldHash:s,newHash:i,name:f,email:l,timestamp:u,tz:h,message:r}}async function et(e,t){let n=Ks(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
|
+
`)){if(!s)continue;let i=Pu(s);i&&o.push(i)}return o}function Mc(e){return`${e.oldHash} ${e.newHash} ${e.name} <${e.email}> ${e.timestamp} ${e.tz} ${e.message}`}async function Ln(e,t,n){let r=Ks(e,t);if(await ns(e.fs,r),n.length===0){await e.fs.writeFile(r,"");return}let o=`${n.map(Mc).join(`
|
|
38
38
|
`)}
|
|
39
|
-
`;await e.fs.writeFile(r,o)}async function Ze(e,t,n){let r=
|
|
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
|
|
41
|
-
`)){let s=Yu(o,t);s&&r.push(s)}return{patterns:r,src:n}}function Xu(e,t){let{pattern:n,patternLen:r,nowildcardLen:o,flags:s}=t;if(o===r)return e===n;if(s&Uc){let i=n.slice(1);return e.length>=i.length&&e.endsWith(i)}return on(n,e,2)===0}function Zu(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 on(r,a,2)===0}function Ii(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&Bc&&!t)){if(s.flags&Fc){if(s.base&&!e.startsWith(`${s.base}/`))continue;if(Xu(r,s))return s;continue}if(Zu(e,s))return s}}return null}function an(e,t,n){for(let r=e.dirPatterns.length-1;r>=0;r--){let o=e.dirPatterns[r],s=Ii(t,n,o);if(s)return s.flags&Ys?"not-ignored":"ignored"}if(e.excludeFile){let r=Ii(t,n,e.excludeFile);if(r)return r.flags&Ys?"not-ignored":"ignored"}if(e.globalExclude){let r=Ii(t,n,e.globalExclude);if(r)return r.flags&Ys?"not-ignored":"ignored"}return"undecided"}async function $r(e){let t={dirPatterns:[],excludeFile:null,globalExclude:null},n=v(e.gitDir,"info","exclude");try{let r=await e.fs.readFile(n);t.excludeFile=is(r,"",n)}catch{}try{let r=await xe(e,"core.excludesFile");if(r)try{let o=await e.fs.readFile(r);t.globalExclude=is(o,"",r)}catch{}}catch{}return t}function rr(e,t,n,r){let s=is(t,n===""?"":n,r);return{...e,dirPatterns:[...e.dirPatterns,s]}}var Fc,Uc,Bc,Ys,Zs=Re(()=>{"use strict";qe();me();os();Fc=1,Uc=4,Bc=8,Ys=16});async function gt(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=v(e.workTree,s.path),a;try{a=await mt(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 Nn(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 ot(e,e.workTree,"");for(let s of o)r.has(s)||n.push({path:s,status:"untracked"});return n.sort((s,i)=>Ie(s.path,i.path))}async function dt(e,t){if(!e.workTree)throw new Error("Cannot checkout in a bare repository");if(!Qn(t.path))throw new Error(`refusing to check out unsafe path '${t.path}'`);let n=await be(e,t.hash);if(n.type!=="blob")throw new Error(`Expected blob for ${t.path}, got ${n.type}`);let r=v(e.workTree,t.path);if(!Ms(e.workTree,r))throw new Error(`refusing to check out path outside worktree: '${t.path}'`);let o=r.lastIndexOf("/");if(o>0&&await e.fs.mkdir(r.slice(0,o),{recursive:!0}),t.mode!=null&&bn(t.mode)&&e.fs.symlink){let s=Qu.decode(n.content);if(!Wa(s))throw new Error(`refusing to create symlink with unsafe target '${s}'`);await mt(e.fs,r).then(()=>!0).catch(()=>!1)&&await e.fs.rm(r,{force:!0}),await e.fs.symlink(s,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 qc(e,t){let n=await Ke(e,t);for(let r of n)await dt(e,r)}async function cn(e,t,n){if(!e.workTree)throw new Error("Cannot stage in a bare repository");if(!Qn(n))throw new Error(`refusing to stage unsafe path '${n}'`);let r=v(e.workTree,n);if(!await e.fs.exists(r))throw new Error(`Path does not exist: ${n}`);let o=await mt(e.fs,r);if(o.isSymbolicLink&&e.fs.readlink){let f=await e.fs.readlink(r),l=Ju.encode(f),d=await He(e,"blob",l),u={path:n,mode:40960,hash:d,stage:0,stat:{...Se(),size:l.byteLength}};return{index:Ct(t,u),hash:d}}let s=await e.fs.readFileBuffer(r),i=await He(e,"blob",s),a=o.mode!=null?em(o.mode):33188,c={path:n,mode:a,hash:i,stage:0,stat:{...Se(),size:s.byteLength}};return{index:Ct(t,c),hash:i}}async function ot(e,t,n,r){let o=r?.skipIgnore??!1,s=null;if(!o){s=r?._ignore??await $r(e);let c=v(t,".gitignore");try{let f=await e.fs.readFile(c);s=rr(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=v(t,c),l=n?`${n}/${c}`:c,d=await mt(e.fs,f);if(d.isSymbolicLink){if(s&&an(s,l,!1)==="ignored")continue;i.push(l)}else if(d.isDirectory){if(s&&an(s,l,!0)==="ignored")continue;let u=await ot(e,f,l,{skipIgnore:o,_ignore:s??void 0});i.push(...u)}else if(d.isFile){if(s&&an(s,l,!1)==="ignored")continue;i.push(l)}}return i}function em(e){return e>511?e:e&73?33261:33188}async function sr(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 sr(e,Qt(t),n))}var Ju,Qu,tt=Re(()=>{"use strict";oe();Zs();Ce();ae();js();me();nr();Ae();Ju=new TextEncoder,Qu=new TextDecoder});function Si(e){return e.existsOnDisk&&e.indexHash===null}async function tm(e,t,n){let r=await Promise.all(t.map(h=>fe(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 ot(e,e.workTree,"",{skipIgnore:!0})):new Set,a=null,c=async()=>(a===null&&(a=e.workTree?new Set(await ot(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),N=u(1,h);g=O?.hash??null,y=O?.mode??null,w=N?.hash??null,x=N?.mode??null}else if(r.length>=3){let O=u(0,h),N=u(1,h),H=u(2,h);p=O?.hash??null,g=N?.hash??null,y=N?.mode??null,w=H?.hash??null,x=H?.mode??null}let E=o.get(h)?.hash??null,R=s.has(h)?1:0,k=i.has(h),C,P=async()=>C!==void 0?C:k?(C=!(await c()).has(h),C):(C=!1,!1),T,D=async()=>{if(T!==void 0)return T;if(!k||!e.workTree)return T=null,null;let O=v(e.workTree,h);try{T=await Nn(e.fs,O)}catch{T=null}return T};m.push({path:h,baseHash:p,headHash:g,remoteHash:w,indexHash:E,indexStage:R,existsOnDisk:k,isIgnoredOnDisk:P,getWorktreeHash:D,headMode:y,remoteMode:x})}return m}function Js(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 Qs(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 nm(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 rm(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=nm(s,i);for(let c of s.requirements){if(n.allowStagedChanges&&c==="INDEX_MUST_MATCH_HEAD")continue;let f=await sm(c,i,a);if(f){r.push({path:o,error:f});break}}if(n.stopAtFirstError&&r.length>0)break}return r}async function sm(e,t,n,r){switch(e){case"INDEX_MUST_NOT_EXIST":return t.indexHash!==null?"WOULD_OVERWRITE":Si(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 Si(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_OVERWRITTEN":null;case"NO_UNTRACKED_REMOVED":return Si(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_REMOVED":null}}function om(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:Se()}),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)=>Ie(c.path,f.path)||c.stage-f.stage),{newEntries:o,worktreeOps:s}}function eo(e,t){let n=t.actionHint??t.operationName,r=[];for(let{error:s,msg:i,fix:a}of im){let c=e.filter(f=>f.error===s).map(f=>f.path).sort();if(c.length>0){let f=c.map(l=>` ${l}`).join(`
|
|
39
|
+
`;await e.fs.writeFile(r,o)}async function Ze(e,t,n){let r=Ks(e,t);await ns(e.fs,r);let o=`${Mc(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 rs(e,t){let n=Ks(e,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function oe(e,t,n,r,o,s,i=!1){let a=await nn(e,t),c={oldHash:r??ee,newHash:o,...a,message:s};await Ze(e,n,c),i&&n!=="HEAD"&&await Ze(e,"HEAD",c)}var ze=Re(()=>{"use strict";ht();Tn();me();Gn();ht()});function $u(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 Ou(e,t){let n=await Oc(e,t);if(n.length===0)return null;if(n.length>1)throw new Ci(t);return n[0]}async function Iu(e,t){if(t==="HEAD"||t==="@")return B(e,"HEAD");if(jc.includes(t))return B(e,t);if(/^[0-9a-f]{40}$/.test(t))return await Yt(e,t)?t:null;if(/^[0-9a-f]{4,39}$/.test(t)){let s=await Ou(e,t);if(s)return s}if(t.startsWith("refs/")){let s=await B(e,t);if(s)return s}let n=await B(e,`refs/heads/${t}`);if(n)return n;let r=await B(e,`refs/tags/${t}`);if(r)return r;let o=await B(e,`refs/remotes/${t}`);return o||null}function Su(e){if(e==="HEAD"||e==="@")return"HEAD";for(let t of jc)if(e===t)return t;return e.startsWith("refs/")?e:`refs/heads/${e}`}async function Tu(e,t,n){let r=Su(t),o=await et(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 vu(e,t,n){if(n===""||n==="commit")try{return await ve(e,t)}catch{return null}if(n==="tree"){let o;try{o=await ve(e,t)}catch{return null}return(await j(e,o)).tree}return(await ye(e,t)).type!==n?null:t}async function Au(e,t,n){let r=t;n.some(s=>s.type==="tilde"||s.type==="caret")&&(r=await ve(e,r));for(let s of n)if(s.type==="peel"){if(!r)return null;r=await vu(e,r,s.target)}else if(s.type==="tilde")for(let i=0;i<s.n;i++){if(!r)return null;let a=await j(e,r);if(a.parents.length===0||(r=a.parents[0]??null,!r))return null}else{if(s.n===0)continue;if(!r)return null;let i=await j(e,r);if(s.n>i.parents.length||(r=i.parents[s.n-1]??null,!r))return null}return r}async function We(e,t){let{base:n,reflogIndex:r,suffixes:o}=$u(t),s;return r!==void 0?s=await Tu(e,n,r):s=await Iu(e,n),s?Au(e,s,o):null}function Vs(e){let t=e.indexOf(":");return t<0?null:{rev:e.slice(0,t)||"HEAD",path:e.slice(t+1)}}var jc,Ci,an=Re(()=>{"use strict";ce();ze();we();jc=["HEAD","FETCH_HEAD","ORIG_HEAD","MERGE_HEAD","CHERRY_PICK_HEAD","REBASE_HEAD"];Ci=class extends Error{constructor(n){super(`short object ID ${n} is ambiguous`);this.prefix=n}}});function mt(e,t){return e.lstat?e.lstat(t):e.stat(t)}function yn(e){return typeof e=="string"?e==="120000":e===40960}async function ss(e,t){if((await mt(e,t)).isSymbolicLink&&e.readlink){let r=await e.readlink(t);return Hu.encode(r)}return e.readFileBuffer(t)}async function Nn(e,t){let n=await ss(e,t);return pt("blob",n)}var Hu,nr=Re(()=>{"use strict";ce();Hu=new TextEncoder});function ju(e){return e.length===4&&e.toLowerCase()===".git"}function Gu(e,t){if(e.length===0)throw new Error("invalid tree entry: empty name");if(e.includes("/"))throw new Error(`invalid tree entry: name contains slash: '${e}'`);if(e.includes("\0"))throw new Error("invalid tree entry: name contains null byte");if(e==="."||e==="..")throw new Error(`invalid tree entry: '${e}'`);if(ju(e))throw new Error(`invalid tree entry: '${e}'`);if(!Mu.has(t))throw new Error(`invalid tree entry mode: '${t}' for '${e}'`)}function _n(e){let t=[],n=0;for(;n<e.byteLength;){let r=e.indexOf(32,n);if(r===-1)break;let o=Gc.decode(e.subarray(n,r)),s=e.indexOf(0,r+1);if(s===-1)break;let i=Gc.decode(e.subarray(r+1,s)),a=e.subarray(s+1,s+21),c=vn(a),f=o.padStart(6,"0");Gu(i,f),t.push({mode:f,name:i,hash:c}),n=s+21}return{type:"tree",entries:t}}function Lc(e){let t=[];for(let s of e.entries){let i=s.mode.replace(/^0+/,""),a=Du.encode(`${i} ${s.name}\0`),c=Dt(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 Du,Gc,Mu,Ys=Re(()=>{"use strict";ht();Du=new TextEncoder,Gc=new TextDecoder,Mu=new Set(["100644","100755","040000","120000","160000"])});async function Fe(e,t){return Nc(e,t,"")}async function Nc(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:Lu(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 Nc(e,a,c);r.push({mode:es.DIRECTORY,name:i,hash:f})}r.sort((i,a)=>{let c=i.mode===es.DIRECTORY?`${i.name}/`:i.name,f=a.mode===es.DIRECTORY?`${a.name}/`:a.name;return c<f?-1:c>f?1:0});let s=Lc({type:"tree",entries:r});return He(e,"tree",s)}async function Ke(e,t,n=""){let r=await ye(e,t);if(r.type!=="tree")throw new Error(`Expected tree object, got ${r.type}`);let o=_n(r.content),s=[];for(let i of o.entries){let a=n?`${n}/${i.name}`:i.name;if(i.mode===es.DIRECTORY){let c=await Ke(e,i.hash,a);s.push(...c)}else s.push({path:a,mode:i.mode,hash:i.hash})}return s}async function le(e,t){if(!t)return new Map;let n=await Ke(e,t);return new Map(n.map(r=>[r.path,r]))}async function Ve(e,t,n){let r=await le(e,t),o=await le(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)=>Ie(i.path,a.path))}function Lu(e){return e.toString(8).padStart(6,"0")}var Ae=Re(()=>{"use strict";ie();ce();Ys();ki()});function _c(e){return/^[a-zA-Z0-9]$/.test(e)}function Nu(e){return/^[a-zA-Z]$/.test(e)}function _u(e){return e>="0"&&e<="9"}function Pi(e){return e>="A"&&e<="Z"}function $i(e){return e>="a"&&e<="z"}function Fc(e){return/^\s$/.test(e)}function Fu(e){return e===" "||e===" "}function Ii(e){let t=e.charCodeAt(0);return t>=32&&t<=126}function Uu(e){return Ii(e)&&!Fc(e)}function Bu(e){return Ii(e)&&!_c(e)&&e!==" "}function Wu(e){let t=e.charCodeAt(0);return t<32||t===127}function qu(e){return/^[0-9a-fA-F]$/.test(e)}function os(e,t,n){return n?e.toLowerCase()===t.toLowerCase():e===t}function Oi(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(!os(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]==="/"&&Oi(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(!zu(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=Oi(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="",m=!0;for(;t<e.length&&(m||e[t]!=="]");){m=!1;let u=e[t];if(u==="\\"){if(t++,t>=e.length)return-1;u=e[t],os(c,u,s)&&(l=!0)}else if(u==="-"&&d&&t+1<e.length&&e[t+1]!=="]"){if(t++,u=e[t],u==="\\"){if(t++,t>=e.length)return-1;u=e[t]}let h=d,p=u;if(c>=h&&c<=p&&(l=!0),s){if($i(c)){let g=c.toUpperCase();g>=h&&g<=p&&(l=!0)}else if(Pi(c)){let g=c.toLowerCase();g>=h&&g<=p&&(l=!0)}}u=""}else if(u==="["&&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,u="[",os(c,u,s)&&(l=!0);else{let g=e.slice(h,h+p);Ku(g,c,s)&&(l=!0),u=""}}else os(c,u,s)&&(l=!0);d=u,t++}if(t>=e.length)return-1;if(t++,l===f)return 1;r++;break}default:{if(!os(c,a,s))return 1;r++,t++;break}}}return r>=n.length?0:1}function zu(e){return e==="*"||e==="?"||e==="["||e==="\\"}function Ku(e,t,n){switch(e){case"alnum":return _c(t);case"alpha":return Nu(t);case"blank":return Fu(t);case"cntrl":return Wu(t);case"digit":return _u(t);case"graph":return Uu(t);case"lower":return $i(t)||n&&Pi(t);case"print":return Ii(t);case"punct":return Bu(t);case"space":return Fc(t);case"upper":return Pi(t)||n&&$i(t);case"xdigit":return qu(t);default:return!1}}function cn(e,t,n=0){return Oi(e,0,t,0,n)===0?0:1}var is=Re(()=>{"use strict"});function qc(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 Vu(e){return qc(e)===e.length}function Yu(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|=Xs,o=o.slice(1)),o.length===0)return null;let s=o.length;o[s-1]==="/"&&(s--,o=o.slice(0,s),r|=Wc);let i=!1;for(let c=0;c<s;c++)if(o[c]==="/"){i=!0;break}i||(r|=Uc);let a=Math.min(qc(o),s);return o[0]==="*"&&Vu(o.slice(1))&&(r|=Bc),{pattern:o,patternLen:s,nowildcardLen:a,flags:r,base:t}}function as(e,t,n){let r=[];for(let o of e.split(`
|
|
41
|
+
`)){let s=Yu(o,t);s&&r.push(s)}return{patterns:r,src:n}}function Xu(e,t){let{pattern:n,patternLen:r,nowildcardLen:o,flags:s}=t;if(o===r)return e===n;if(s&Bc){let i=n.slice(1);return e.length>=i.length&&e.endsWith(i)}return cn(n,e,2)===0}function Zu(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 cn(r,a,2)===0}function Si(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&Wc&&!t)){if(s.flags&Uc){if(s.base&&!e.startsWith(`${s.base}/`))continue;if(Xu(r,s))return s;continue}if(Zu(e,s))return s}}return null}function fn(e,t,n){for(let r=e.dirPatterns.length-1;r>=0;r--){let o=e.dirPatterns[r],s=Si(t,n,o);if(s)return s.flags&Xs?"not-ignored":"ignored"}if(e.excludeFile){let r=Si(t,n,e.excludeFile);if(r)return r.flags&Xs?"not-ignored":"ignored"}if(e.globalExclude){let r=Si(t,n,e.globalExclude);if(r)return r.flags&Xs?"not-ignored":"ignored"}return"undecided"}async function $r(e){let t={dirPatterns:[],excludeFile:null,globalExclude:null},n=H(e.gitDir,"info","exclude");try{let r=await e.fs.readFile(n);t.excludeFile=as(r,"",n)}catch{}try{let r=await xe(e,"core.excludesFile");if(r)try{let o=await e.fs.readFile(r);t.globalExclude=as(o,"",r)}catch{}}catch{}return t}function rr(e,t,n,r){let s=as(t,n===""?"":n,r);return{...e,dirPatterns:[...e.dirPatterns,s]}}var Uc,Bc,Wc,Xs,Js=Re(()=>{"use strict";Be();me();is();Uc=1,Bc=4,Wc=8,Xs=16});async function gt(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=H(e.workTree,s.path),a;try{a=await mt(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 Nn(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 ot(e,e.workTree,"");for(let s of o)r.has(s)||n.push({path:s,status:"untracked"});return n.sort((s,i)=>Ie(s.path,i.path))}async function dt(e,t){if(!e.workTree)throw new Error("Cannot checkout in a bare repository");if(!Qn(t.path))throw new Error(`refusing to check out unsafe path '${t.path}'`);let n=await ye(e,t.hash);if(n.type!=="blob")throw new Error(`Expected blob for ${t.path}, got ${n.type}`);let r=H(e.workTree,t.path);if(!js(e.workTree,r))throw new Error(`refusing to check out path outside worktree: '${t.path}'`);let o=r.lastIndexOf("/");if(o>0&&await e.fs.mkdir(r.slice(0,o),{recursive:!0}),t.mode!=null&&yn(t.mode)&&e.fs.symlink){let s=Qu.decode(n.content);if(!qa(s))throw new Error(`refusing to create symlink with unsafe target '${s}'`);await mt(e.fs,r).then(()=>!0).catch(()=>!1)&&await e.fs.rm(r,{force:!0}),await e.fs.symlink(s,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 zc(e,t){let n=await Ke(e,t);for(let r of n)await dt(e,r)}async function ln(e,t,n){if(!e.workTree)throw new Error("Cannot stage in a bare repository");if(!Qn(n))throw new Error(`refusing to stage unsafe path '${n}'`);let r=H(e.workTree,n);if(!await e.fs.exists(r))throw new Error(`Path does not exist: ${n}`);let o=await mt(e.fs,r);if(o.isSymbolicLink&&e.fs.readlink){let f=await e.fs.readlink(r),l=Ju.encode(f),d=await He(e,"blob",l),m={path:n,mode:40960,hash:d,stage:0,stat:{...Se(),size:l.byteLength}};return{index:Ct(t,m),hash:d}}let s=await e.fs.readFileBuffer(r),i=await He(e,"blob",s),a=o.mode!=null?em(o.mode):33188,c={path:n,mode:a,hash:i,stage:0,stat:{...Se(),size:s.byteLength}};return{index:Ct(t,c),hash:i}}async function ot(e,t,n,r){let o=r?.skipIgnore??!1,s=null;if(!o){s=r?._ignore??await $r(e);let c=H(t,".gitignore");try{let f=await e.fs.readFile(c);s=rr(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=H(t,c),l=n?`${n}/${c}`:c,d=await mt(e.fs,f);if(d.isSymbolicLink){if(s&&fn(s,l,!1)==="ignored")continue;i.push(l)}else if(d.isDirectory){if(s&&fn(s,l,!0)==="ignored")continue;let m=await ot(e,f,l,{skipIgnore:o,_ignore:s??void 0});i.push(...m)}else if(d.isFile){if(s&&fn(s,l,!1)==="ignored")continue;i.push(l)}}return i}function em(e){return e>511?e:e&73?33261:33188}async function sr(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 sr(e,tn(t),n))}var Ju,Qu,tt=Re(()=>{"use strict";ie();Js();Ce();ce();Gs();me();nr();Ae();Ju=new TextEncoder,Qu=new TextDecoder});function Ti(e){return e.existsOnDisk&&e.indexHash===null}async function tm(e,t,n){let r=await Promise.all(t.map(h=>le(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 ot(e,e.workTree,"",{skipIgnore:!0})):new Set,a=null,c=async()=>(a===null&&(a=e.workTree?new Set(await ot(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()),m=(h,p)=>r[h]?.get(p),u=[];for(let h of d){let p=null,g=null,w=null,R=null,x=null;if(r.length===1){let T=m(0,h);w=T?.hash??null,x=T?.mode??null}else if(r.length===2){let T=m(0,h),N=m(1,h);g=T?.hash??null,R=T?.mode??null,w=N?.hash??null,x=N?.mode??null}else if(r.length>=3){let T=m(0,h),N=m(1,h),S=m(2,h);p=T?.hash??null,g=N?.hash??null,R=N?.mode??null,w=S?.hash??null,x=S?.mode??null}let y=o.get(h)?.hash??null,E=s.has(h)?1:0,k=i.has(h),C,P=async()=>C!==void 0?C:k?(C=!(await c()).has(h),C):(C=!1,!1),I,v=async()=>{if(I!==void 0)return I;if(!k||!e.workTree)return I=null,null;let T=H(e.workTree,h);try{I=await Nn(e.fs,T)}catch{I=null}return I};u.push({path:h,baseHash:p,headHash:g,remoteHash:w,indexHash:y,indexStage:E,existsOnDisk:k,isIgnoredOnDisk:P,getWorktreeHash:v,headMode:R,remoteMode:x})}return u}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 eo(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 nm(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 rm(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=nm(s,i);for(let c of s.requirements){if(n.allowStagedChanges&&c==="INDEX_MUST_MATCH_HEAD")continue;let f=await sm(c,i,a);if(f){r.push({path:o,error:f});break}}if(n.stopAtFirstError&&r.length>0)break}return r}async function sm(e,t,n,r){switch(e){case"INDEX_MUST_NOT_EXIST":return t.indexHash!==null?"WOULD_OVERWRITE":Ti(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 Ti(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_OVERWRITTEN":null;case"NO_UNTRACKED_REMOVED":return Ti(t)?await t.isIgnoredOnDisk()?null:"WOULD_LOSE_UNTRACKED_REMOVED":null}}function om(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,m=f.takeFrom==="head"?l.headMode:l.remoteMode,u=m?Number.parseInt(m,8):33188;o.push({path:c,mode:u,hash:d,stage:0,stat:Se()}),r.updateWorktree&&s.push({path:c,type:"checkout",hash:d,mode:u});break}case"DELETE":{r.updateWorktree&&l.existsOnDisk&&s.push({path:c,type:"delete"});break}case"SKIP":break}}return o.sort((c,f)=>Ie(c.path,f.path)||c.stage-f.stage),{newEntries:o,worktreeOps:s}}function to(e,t){let n=t.actionHint??t.operationName,r=[];for(let{error:s,msg:i,fix:a}of im){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 or(e,t,n,r){let o=await tm(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 rm(i,s,r);if(a.length>0)return{success:!1,newEntries:[],worktreeOps:[],errors:a,errorOutput:
|
|
46
|
+
`:"",exitCode:t.errorExitCode}}async function or(e,t,n,r){let o=await tm(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 rm(i,s,r);if(a.length>0)return{success:!1,newEntries:[],worktreeOps:[],errors:a,errorOutput:to(a,r)};let{newEntries:c,worktreeOps:f}=om(i,s,n,r);return{success:!0,newEntries:c,worktreeOps:f,errors:[],errorOutput:null}}async function De(e,t){if(!e.workTree)return;let n=e.workTree,r=[];for(let o of t){if(!Qn(o.path))throw new Error(`refusing to apply worktree operation on unsafe path '${o.path}'`);let s=H(n,o.path);if(!js(n,s))throw new Error(`refusing to apply worktree operation outside worktree: '${o.path}'`);o.type==="delete"?await mt(e.fs,s).then(()=>!0).catch(()=>!1)&&(await e.fs.rm(s),r.push(s)):o.type==="checkout"&&o.hash&&await dt(e,{path:o.path,hash:o.hash,mode:o.mode})}for(let o of r)await sr(e.fs,tn(o),n)}async function Fn(e,t,n,r){return or(e,[{label:"current",treeHash:t},{label:"target",treeHash:n}],r,{mergeFn:eo,updateWorktree:!0,reset:!1,errorExitCode:1,operationName:"checkout",actionHint:"switch branches"})}async function Kc(e,t,n,r){return or(e,[{label:"HEAD",treeHash:t},{label:"target",treeHash:n}],r,{mergeFn:eo,updateWorktree:!0,reset:!1,errorExitCode:1,operationName:"merge"})}async function kn(e,t,n){return or(e,[{label:"target",treeHash:t}],n,{mergeFn:Qs,updateWorktree:!0,reset:!0,errorExitCode:128,operationName:"reset"})}async function Or(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:Ne(n)},i=await or(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=G(c.join("")+`fatal: Could not reset index file to revision '${a}'.
|
|
49
|
-
`,128)),i}if(e.workTree&&o.size>0){let a=await
|
|
50
|
-
`,exitCode:128}}function G(e,t=1){return{stdout:"",stderr:e,exitCode:t}}async function W(e,t,n){if(n?.objectStore&&n?.refStore&&n?.gitDir)return{fs:e,gitDir:n.gitDir,workTree:n.workTree??t,objectStore:n.objectStore,refStore:n.refStore,...n};let r=await tr(e,t);return r?n?{...r,...n}:r:am}function M(e){return typeof e=="object"&&e!==null&&"exitCode"in e}function Ye(e){return e.workTree?null:cm}async function Qe(e){let t=await Y(e);return t||
|
|
51
|
-
`){return
|
|
49
|
+
`,128)),i}if(e.workTree&&o.size>0){let a=await le(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 im,Xt=Re(()=>{"use strict";ie();Ce();Gs();me();nr();Ae();tt();im=[{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 O(e){return{stdout:"",stderr:`fatal: ${e}
|
|
50
|
+
`,exitCode:128}}function G(e,t=1){return{stdout:"",stderr:e,exitCode:t}}async function W(e,t,n){if(n?.objectStore&&n?.refStore&&n?.gitDir)return{fs:e,gitDir:n.gitDir,workTree:n.workTree??t,objectStore:n.objectStore,refStore:n.refStore,...n};let r=await tr(e,t);return r?n?{...r,...n}:r:am}function M(e){return typeof e=="object"&&e!==null&&"exitCode"in e}function Ye(e){return e.workTree?null:cm}async function Qe(e){let t=await Y(e);return t||O("your current branch does not have any commits yet")}function Rn(e,t,n=`fatal: Exiting because of an unresolved conflict.
|
|
51
|
+
`){return Mt(e)?G(`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 wt(e,t,n){let r=await
|
|
55
|
-
`);return t===-1?e:e.slice(0,t)}function
|
|
54
|
+
`+n,128):null}async function wt(e,t,n){let r=await We(e,t);return r||O(n??`bad revision '${t}'`)}async function je(e,t,n){let r=await We(e,t);if(!r)return O(n??`bad revision '${t}'`);try{let o=await ve(e,r),s=await j(e,o);return{hash:o,commit:s}}catch{return O(n??`bad revision '${t}'`)}}async function nt(e,t){try{return await qr(e,t)}catch(n){return O(n.message)}}async function dn(e,t){try{return await Ms(e,t)}catch(n){return O(n.message)}}function Un(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 Ie(e,t){return e<t?-1:e>t?1:0}function ut(e,t){return e.workTree?st(e.workTree,t):""}function X(e){return e.slice(0,7)}function ue(e){let t=e.indexOf(`
|
|
55
|
+
`);return t===-1?e:e.slice(0,t)}function Zt(e){return O(`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
|
|
57
|
+
'git <command> [<revision>...] -- [<file>...]'`)}function jt(e,t,n,r=!1){return`[${e}${r?" (root-commit)":""} ${X(t)}] ${ue(n)}`}async function Bn(e,t,n){if(!await B(e,n.operationRef))return n.noOpError;let o=await B(e,"ORIG_HEAD")??await Y(e);if(!o)return O(`There is no ${n.operationName} to abort (ORIG_HEAD missing).`);let s=await Y(e),i=await j(e,o),a=await z(e),c=await Or(e,i.tree,a,n.origHeadAsTargetRev?o:void 0);if(!c.success)return c.errorOutput;if(await jn(e,o),await fe(e,{version:2,entries:c.newEntries}),await De(e,c.worktreeOps),s&&((await Q(e))?.type==="symbolic"||s!==o)){let d=n.origHeadAsTargetRev?o:"HEAD";await oe(e,t,"HEAD",s,o,`reset: moving to ${d}`)}return await n.clearState(e),{stdout:"",stderr:"",exitCode:0}}async function bt(e,t,n,r,o,s){let i=on({type:"commit",tree:t,parents:n,author:r,committer:o,message:s}),a=await He(e,"commit",i);return await jn(e,a),a}function $t(e){let t=e.split(`
|
|
58
58
|
`).filter(o=>!o.startsWith("#")).map(o=>o.trimEnd());for(;t.length>0&&t[0]==="";)t.shift();for(;t.length>0&&t[t.length-1]==="";)t.pop();if(t.length===0)return"";let n=[],r=!1;for(let o of t)o===""?(r||n.push(o),r=!0):(n.push(o),r=!1);return n.join(`
|
|
59
59
|
`)+`
|
|
60
|
-
`}function
|
|
60
|
+
`}function Gt(e){return e.endsWith(`
|
|
61
61
|
`)?e:`${e}
|
|
62
|
-
`}var am,cm,
|
|
62
|
+
`}var am,cm,ie=Re(()=>{"use strict";Tn();Ce();ce();wn();me();ze();we();Gn();an();Xt();am=O("not a git repository (or any of the parent directories): .git"),cm=O("this operation must be run in a work tree")});var Jc={};Hd(Jc,{CommitHeap:()=>Wn,countAheadBehind:()=>Di,findOrphanedCommits:()=>Mi,walkCommits:()=>Lt});async function*Lt(e,t,n){if(n?.topoOrder){yield*hm(e,t,n);return}let r=await Zc(e,n?.exclude),o=new Set(r),s=new Wn,i=n?.shallowBoundary,a=n?.limit,c=0,f=Array.isArray(t)?t:[t];for(let l of f)o.has(l)||s.push(await Ir(e,l));for(;s.size>0;){let l=s.pop();if(o.has(l.hash))continue;if(o.add(l.hash),yield l,a!==void 0&&++c>=a)return;if(i?.has(l.hash))continue;let d=n?.firstParent?l.commit.parents.slice(0,1):l.commit.parents;for(let m of d)if(!o.has(m))try{s.push(await Ir(e,m))}catch{}}}async function*hm(e,t,n){let r=await Zc(e,n?.exclude),o=new Set(r),s=new Wn,i=n?.shallowBoundary,a=Array.isArray(t)?t:[t];for(let u of a)o.has(u)||s.push(await Ir(e,u));let c=[],f=new Map;for(;s.size>0;){let u=s.pop();if(o.has(u.hash)||(o.add(u.hash),f.set(u.hash,c.length),c.push(u),i?.has(u.hash)))continue;let h=n?.firstParent?u.commit.parents.slice(0,1):u.commit.parents;for(let p of h)if(!o.has(p))try{s.push(await Ir(e,p))}catch{}}let l=c.length;if(l===0)return;let d=new Int32Array(l);for(let u of c){let h=n?.firstParent?u.commit.parents.slice(0,1):u.commit.parents;for(let p of h){let g=f.get(p);g!==void 0&&(d[g]=(d[g]??0)+1)}}let m=[];for(let u=l-1;u>=0;u--)d[u]===0&&m.push(u);for(;m.length>0;){let u=m.pop();yield c[u];let h=n?.firstParent?c[u].commit.parents.slice(0,1):c[u].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&&m.push(g)}}}}async function Di(e,t,n){if(t===n)return{ahead:0,behind:0};let r=new Set;for await(let a of Lt(e,t))r.add(a.hash);let o=new Set;for await(let a of Lt(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 Mi(e,t,n){let r=n?.maxCount??25,o=await ge(e,"refs"),s=[];for(let l of o)try{s.push(await ve(e,l.hash))}catch{}n?.targetHash&&s.push(n.targetHash);let i=new Set;if(s.length>0)for await(let l of Lt(e,s))i.add(l.hash);if(i.has(t))return[];let a=[],c=new Set,f=new Wn;for(f.push(await Ir(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:ue(l.commit.message)});for(let d of l.commit.parents)c.has(d)||f.push(await Ir(e,d))}}return a}async function Zc(e,t){if(!t||t.length===0)return new Set;let n=new Set;for await(let r of Lt(e,t))n.add(r.hash);return n}async function Ir(e,t){return{hash:t,commit:await j(e,t)}}var Wn,ar=Re(()=>{"use strict";ie();ce();we();Wn=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 Vo=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 Sa(e){return new Vo({_kind:"arg",type:e,required:!0})}function Ta(){return Sa("string")}function va(){return Sa("number")}var Ts=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 Yo=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})}repeatable(){return new e({...this._def,repeatable:!0,default:[]})}};function Aa(e){return new Yo({_kind:"option",type:e})}function Ha(){return Aa("string")}function Da(){return Aa("number")}var V={string:Ha,number:Da};function $(){return new Ts}var q={string:Ta,number:va};function Dd(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+=`
|
|
63
63
|
Not all git options are supported. Run 'git <command> --help' for available options.`,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=`git: '${e.path.replace(/^git /,"")}' is not a git command.`;return e.suggestions.length>0&&(t+=` Did you mean ${e.suggestions.map(n=>`"${n}"`).join(" or ")}?`),t+=`
|
|
64
|
-
Run 'git help' for available commands.`,t}}}function
|
|
64
|
+
Run 'git help' for available commands.`,t}}}function Xo(e){return e.map(Dd).join(`
|
|
65
65
|
`)+`
|
|
66
|
-
`}function Md(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
|
|
67
|
-
`)}function jd(e,t){let n=Object.entries(e);if(n.length===0)return[];let r=[];for(let[i,a]of n){let c=
|
|
68
|
-
Maybe you wanted to say 'git add .'?`,exitCode:0};let l=await z(s),d=[],
|
|
66
|
+
`}function Md(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 vs(e,t,n){let r=n??Math.min(Math.max(1,Math.floor(e.length/2)),3);return t.map(s=>({candidate:s,distance:Md(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 Ma(e,t,n,r){let o=[],s=new Map,i=new Map;for(let[m,u]of Object.entries(e)){let h=Ur(m);s.set(h,{key:m,def:u}),u.short&&i.set(u.short,{key:m,def:u})}let a={},c=[],f=[],l=0;for(;l<n.length;){let m=n[l];if(m==="--"){for(l++;l<n.length;)f.push(n[l]),l++;break}if(m.startsWith("--")){let u=m.indexOf("="),h,p;u!==-1?(h=m.slice(2,u),p=m.slice(u+1)):h=m.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:vs(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 R=Fr(w,g.def.type,g.key,o);R!==void 0&&(g.def.repeatable?(Array.isArray(a[g.key])||(a[g.key]=[]),a[g.key].push(R)):a[g.key]=R),l++;continue}if(m.startsWith("-")&&m.length>1){let u=m.slice(1);for(let h=0;h<u.length;h++){let p=u[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=u.slice(h+1),R=w.length>0?w:n[++l];if(R===void 0){o.push({type:"missing_value",name:g.key});break}let x=Fr(R,g.def.type,g.key,o);x!==void 0&&(g.def.repeatable?(Array.isArray(a[g.key])||(a[g.key]=[]),a[g.key].push(x)):a[g.key]=x);break}l++;continue}c.push(m),l++}let d=0;for(let m=0;m<t.length;m++){let u=t[m],h=u.name??`arg${m}`;if(u.variadic){let p=c.slice(d);p.length>0?a[h]=p.map(g=>Fr(g,u.type,h,o)):u.required?o.push({type:"missing_required",name:h,kind:"arg"}):u.default!==void 0?a[h]=u.default:a[h]=[],d=c.length}else{let p=c[d];p!==void 0?(a[h]=Fr(p,u.type,h,o),d++):u.required?o.push({type:"missing_required",name:h,kind:"arg"}):u.default!==void 0&&(a[h]=u.default)}}if(d<c.length)for(let m=d;m<c.length;m++)o.push({type:"unexpected_positional",value:c[m],maxPositionals:t.length});for(let[m,u]of Object.entries(e))if(a[m]===void 0){if(u._kind==="flag")a[m]=u.default??(u.counted?0:!1);else if(u._kind==="option"){let h=u;if(h.env&&r?.[h.env]!==void 0){let p=Fr(r[h.env],h.type,m,o);p!==void 0&&(a[m]=p)}a[m]===void 0&&(h.required&&h.default===void 0?o.push({type:"missing_required",name:m,kind:"option"}):h.default!==void 0&&(a[m]=h.default))}}return o.length>0?{ok:!1,errors:o}:{ok:!0,args:a,passthrough:f}}function Fr(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 Ur(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function yr(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=jd(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(`
|
|
67
|
+
`)}function jd(e,t){let n=Object.entries(e);if(n.length===0)return[];let r=[];for(let[i,a]of n){let c=Ur(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.repeatable&&d.push("(repeatable)"),f.required&&d.push("(required)"),f.default!==void 0&&!f.repeatable&&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 ja(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e))t[n]=r._def;return t}function Ga(e){return e?e.map(t=>t._def):[]}var As=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,ja(n.options),Ga(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=Ur(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(!this.handler&&o&&!o.startsWith("-")){let s=vs(o,[...this.children.keys()]);return{stdout:"",stderr:Xo([{type:"unknown_command",path:`${this.fullPath} ${o}`,suggestions:s}]),exitCode:1}}if(Gd(t))return{stdout:yr(this),stderr:"",exitCode:0};if(this.handler){let s=this.transformArgs?this.transformArgs([...t]):[...t],i=Ma(this.allOptions,this.args,s,r);if(!i.ok)return{stdout:"",stderr:Xo(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}}}return{stdout:yr(this),stderr:"",exitCode:0}}};function Zo(e,t){return new As(e,t.description,ja(t.options),Ga(t.args),t.examples??[],t.handler,t.transformArgs)}function Gd(e){return e.some(t=>t==="--help")}ie();Js();Ce();me();is();var ro=1,vi=2,no=4,Ai=8,cs=16,Yc=new Set(["*","?","[","\\"]),lm={glob:ro,literal:vi,icase:no,top:Ai,exclude:cs};function ir(e){for(let t=0;t<e.length;t++)if(Yc.has(e[t]))return!0;return!1}function dm(e){for(let t=0;t<e.length;t++)if(Yc.has(e[t]))return t;return e.length}function Vc(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=lm[l.trim()];d!==void 0&&(n|=d)}}}else r.startsWith(":/")?(n|=Ai,r=r.slice(2)):(r.startsWith(":!")||r.startsWith(":^"))&&(n|=cs,r=r.slice(2));n&vi&&n&ro&&(n&=~ro);let o;n&Ai||t===""?o=Vc(r):o=Vc(`${t}/${r}`);let s=!!(n&vi),i=s?!1:ir(o),a=s?o.length:dm(o);return{original:e,pattern:o,magic:n,hasWildcard:i,nowildcardLen:a}}function so(e,t){let{pattern:n,hasWildcard:r,magic:o,nowildcardLen:s}=e;if(n==="")return!0;if(!r){let a=!!(o&no),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&no){if(a.toLowerCase()!==c.toLowerCase())return!1}else if(a!==c)return!1}let i=0;return o&ro&&(i|=2),o&no&&(i|=1),cn(n,t,i)===0}function Ee(e,t){let n=!1,r=!1;for(let o of e)o.magic&cs?so(o,t)&&(r=!0):so(o,t)&&(n=!0);return n&&!r}tt();function Xc(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=Ye(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 z(s);return p=await Hi(s,p,a,"",c),n["dry-run"]||await fe(s,p),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}if(f.length===0)return{stdout:"",stderr:`Nothing specified, nothing added.
|
|
68
|
+
Maybe you wanted to say 'git add .'?`,exitCode:0};let l=await z(s),d=[],m=[];for(let p of f)ir(p)?m.push(p):d.push(p);let u=[];for(let p of d){let g=Ht(r.cwd,p),w=st(a,g);if((w==="."||w==="")&&(w=""),w.startsWith(".."))return O(`'${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}/`)),y=await mm(s,a,w,b);if(y){b&&((await r.fs.stat(g)).isDirectory?l=await Hi(s,l,g,w,c):l=(await ln(s,l,w)).index),u.push(y);continue}}if((await r.fs.stat(g)).isDirectory)l=await Hi(s,l,g,w,c);else{let b=l.entries.find(E=>E.path===w&&E.stage===0)?.hash,y=await ln(s,l,w);l=y.index,c.actions&&y.hash!==b&&c.actions.push(`add '${w}'
|
|
69
69
|
`)}}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}'
|
|
70
|
-
`);l={...l,entries:l.entries.filter(b=>b.path!==w&&!b.path.startsWith(`${w}/`))}}else return
|
|
71
|
-
${
|
|
70
|
+
`);l={...l,entries:l.entries.filter(b=>b.path!==w&&!b.path.startsWith(`${w}/`))}}else return O(`pathspec '${p}' did not match any files`)}if(u.length>0)return n["dry-run"]||await fe(s,l),G(`The following paths are ignored by one of your .gitignore files:
|
|
71
|
+
${u.join(`
|
|
72
72
|
`)}
|
|
73
73
|
hint: Use -f if you really want to add them.
|
|
74
74
|
hint: Disable this message with "git config set advice.addIgnoredFile false"
|
|
75
|
-
`);if(
|
|
75
|
+
`);if(m.length>0){let p=await um(s,r.cwd,l,m,c);if(p.error)return p.error;l=p.index}return n["dry-run"]||await fe(s,l),{stdout:c.actions?c.actions.join(""):"",stderr:"",exitCode:0}}})}async function um(e,t,n,r,o){let s=e.workTree,i=ut(e,t),a=r.map(d=>Ue(d,i)),c=new Array(a.length).fill(!1),f=d=>{for(let m=0;m<a.length;m++)a[m].hasWildcard&&so(a[m],d)&&(c[m]=!0)},l=[];for(let d of n.entries){if(d.stage>0||!Ee(a,d.path))continue;f(d.path);let m=H(s,d.path);if(await e.fs.exists(m)){let u=await ln(e,n,d.path);n=u.index,o?.actions&&u.hash!==d.hash&&o.actions.push(`add '${d.path}'
|
|
76
76
|
`)}else o?.actions&&o.actions.push(`remove '${d.path}'
|
|
77
|
-
`),l.push(d.path)}for(let d of l)n=lt(n,d);if(!o?.updateOnly){let d=new Set(n.entries.map(
|
|
78
|
-
`),n=(await
|
|
77
|
+
`),l.push(d.path)}for(let d of l)n=lt(n,d);if(!o?.updateOnly){let d=new Set(n.entries.map(u=>u.path)),m=await ot(e,s,"",{skipIgnore:o?.skipIgnore});for(let u of m){if(d.has(u)||!Ee(a,u))continue;f(u),o?.actions&&o.actions.push(`add '${u}'
|
|
78
|
+
`),n=(await ln(e,n,u)).index}}for(let d=0;d<a.length;d++){let m=a[d];if(!c[d]&&!(m.magic&cs))return{index:n,error:O(`pathspec '${m.original}' did not match any files`)}}return{index:n}}async function Hi(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=H(i,f.path);if(await e.fs.exists(l)){let d=f.stage>0,m=await ln(e,t,f.path);t=m.index,o?.actions&&(d||m.hash!==f.hash)&&o.actions.push(`add '${f.path}'
|
|
79
79
|
`)}else o?.actions&&o.actions.push(`remove '${f.path}'
|
|
80
80
|
`),a.push(f.path)}for(let f of a)t=lt(t,f);if(!o?.updateOnly){let f=new Set(t.entries.map(d=>d.path)),l=await ot(e,n,r===""?"":r,{skipIgnore:o?.skipIgnore});for(let d of l){if(f.has(d))continue;o?.actions&&o.actions.push(`add '${d}'
|
|
81
|
-
`),t=(await
|
|
82
|
-
`);return{termBad:n[0]??"bad",termGood:n[1]??"good"}}async function oo(e){let t=(await
|
|
83
|
-
`)}async function io(e){let t=await
|
|
81
|
+
`),t=(await ln(e,t,d)).index}}return t}async function mm(e,t,n,r){let o=await $r(e);try{let i=await e.fs.readFile(H(t,".gitignore"));o=rr(o,i,"",H(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=H(t,a);if(fn(o,a,!0)==="ignored")return a;try{let f=await e.fs.readFile(H(c,".gitignore"));o=rr(o,f,a,H(c,".gitignore"))}catch{}}if(!r){let i=await e.fs.stat(H(t,n)).then(a=>a.isDirectory).catch(()=>!1);if(fn(o,n,i)==="ignored")return n}return null}ie();ie();ar();ce();me();we();async function $e(e,t){let n=H(e.gitDir,t);return await e.fs.exists(n)?e.fs.readFile(n):null}async function Me(e,t,n){await e.fs.writeFile(H(e.gitDir,t),n)}async function be(e,t){let n=H(e.gitDir,t);await e.fs.exists(n)&&await e.fs.rm(n)}async function fs(e){await he(e,"MERGE_HEAD"),await he(e,"ORIG_HEAD"),await be(e,"MERGE_MSG"),await be(e,"MERGE_MODE"),await be(e,"SQUASH_MSG")}async function Nt(e){await he(e,"CHERRY_PICK_HEAD"),await he(e,"ORIG_HEAD"),await be(e,"MERGE_MSG")}async function Ot(e){await he(e,"REVERT_HEAD"),await he(e,"ORIG_HEAD"),await be(e,"MERGE_MSG")}async function cr(e){for(let t of["CHERRY_PICK_HEAD","REVERT_HEAD","MERGE_HEAD","ORIG_HEAD"])await he(e,t);await be(e,"MERGE_MSG"),await be(e,"MERGE_MODE"),await be(e,"SQUASH_MSG")}var ji="DETACH_POINT";async function Qc(e,t){await e.fs.writeFile(H(e.gitDir,ji),t)}async function yt(e){let t=H(e.gitDir,ji);await e.fs.exists(t)&&await e.fs.rm(t)}async function ls(e){let t=H(e.gitDir,ji);return await e.fs.exists(t)?(await e.fs.readFile(t))?.trim()??null:null}me();we();async function It(e){let t=await $e(e,"BISECT_START");return t!=null&&t.trim().length>0}async function ds(e){let t=await $e(e,"BISECT_TERMS");if(!t)return{termBad:"bad",termGood:"good"};let n=t.trim().split(`
|
|
82
|
+
`);return{termBad:n[0]??"bad",termGood:n[1]??"good"}}async function oo(e){let t=(await $e(e,"BISECT_START"))?.trim()??"",{termBad:n,termGood:r}=await ds(e),o=await B(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 $e(e,"BISECT_HEAD")!=null||await e.fs.exists(H(e.gitDir,"BISECT_HEAD")),f=await e.fs.exists(H(e.gitDir,"BISECT_FIRST_PARENT"));return{startRef:t,badHash:o,goodHashes:s,skipHashes:i,termBad:n,termGood:r,noCheckout:c,firstParent:f}}async function St(e,t){let n=await $e(e,"BISECT_LOG")??"";await Me(e,"BISECT_LOG",n+t+`
|
|
83
|
+
`)}async function io(e){let t=await ge(e,"refs/bisect");for(let r of t)await he(e,r.name);await be(e,"BISECT_EXPECTED_REV"),await be(e,"BISECT_ANCESTORS_OK"),await be(e,"BISECT_LOG"),await be(e,"BISECT_TERMS"),await be(e,"BISECT_NAMES"),await be(e,"BISECT_FIRST_PARENT"),await be(e,"BISECT_HEAD"),await be(e,"BISECT_START");let n=H(e.gitDir,"refs","bisect");if(await e.fs.exists(n))try{await e.fs.rm(n,{recursive:!0})}catch{}}async function ef(e,t,n,r,o){let s=[],i=new Map;for await(let g of Lt(e,t,{exclude:n})){let w=o?g.commit.parents.slice(0,1):g.commit.parents;s.push({hash:g.hash,subject:ue(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,R=[g.hash],x=0;for(;x<R.length;){let b=R[x++];if(w.has(b)||!c.has(b))continue;w.add(b);let y=i.get(b);if(y)for(let E of y)!w.has(E)&&c.has(E)&&R.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,R=Math.abs(2*w-a);R<d&&(d=R,l=g.hash)}let m=!1;if(d===a){m=!0;for(let g of s){let w=f.get(g.hash)??0,R=Math.abs(2*w-a);R<d&&(d=R,l=g.hash)}}let u=s.find(g=>g.hash===l),h=pm(a),p=gm(a);return{hash:u.hash,subject:u.subject,remaining:h,steps:p,found:!1,onlySkippedLeft:m}}function pm(e){return Math.floor((e-1)/2)}function gm(e){return e<=1?0:Math.ceil(Math.log2(e))}function tf(e){let t=e.badHash!=null,n=e.goodHashes.length;return!t&&n===0?`status: waiting for both ${e.termGood} and ${e.termBad} commits
|
|
84
84
|
`:t?n===0?`status: waiting for ${e.termGood} commit(s), ${e.termBad} commit known
|
|
85
85
|
`:"":`status: waiting for ${e.termBad} commit, ${n} ${e.termGood} commit(s) known
|
|
86
|
-
`}function
|
|
86
|
+
`}function nf(e){return`Bisecting: ${e.remaining} revision${e.remaining===1?"":"s"} left to test after this (roughly ${e.steps} step${e.steps===1?"":"s"})
|
|
87
87
|
[${e.hash}] ${e.subject}
|
|
88
|
-
`}async function
|
|
88
|
+
`}async function rf(e,t){let n=await j(e,t),r=ue(n.message),s=new Date(n.author.timestamp*1e3).toUTCString().replace("GMT","+0000"),i=`${t} is the first bad commit
|
|
89
89
|
`;return i+=`commit ${t}
|
|
90
90
|
`,i+=`Author: ${n.author.name} <${n.author.email}>
|
|
91
91
|
`,i+=`Date: ${s}
|
|
92
92
|
`,i+=`
|
|
93
93
|
`,i+=` ${r}
|
|
94
94
|
`,i+=`
|
|
95
|
-
`,i}
|
|
96
|
-
`),await e.fs.writeFile(
|
|
97
|
-
`),await e.fs.writeFile(
|
|
98
|
-
`),await e.fs.writeFile(
|
|
99
|
-
`),await e.fs.writeFile(
|
|
100
|
-
`),await e.fs.writeFile(
|
|
101
|
-
`),await e.fs.writeFile(
|
|
95
|
+
`,i}ie();ar();Be();Ce();ce();me();ze();we();ie();ar();Be();Ce();ce();me();ce();wn();me();function Sr(e){return H(e.gitDir,"rebase-merge")}async function _t(e){return e.fs.exists(Sr(e))}async function Et(e){let t=Sr(e);if(!await e.fs.exists(t))return null;let n=await e.fs.readFile(H(t,"head-name")),r=await e.fs.readFile(H(t,"orig-head")),o=await e.fs.readFile(H(t,"onto")),s=Number.parseInt(await e.fs.readFile(H(t,"msgnum")),10),i=Number.parseInt(await e.fs.readFile(H(t,"end")),10),a=await e.fs.exists(H(t,"git-rebase-todo"))?H(t,"git-rebase-todo"):H(t,"todo"),c=sf(await e.fs.readFile(a)),f=await e.fs.exists(H(t,"done"))?await e.fs.readFile(H(t,"done")):"",l=sf(f);return{headName:n.trim(),origHead:r.trim(),onto:o.trim(),todo:c,done:l,msgnum:s,end:i}}async function Gi(e,t){let n=Sr(e);await e.fs.mkdir(n,{recursive:!0}),await e.fs.writeFile(H(n,"head-name"),`${t.headName}
|
|
96
|
+
`),await e.fs.writeFile(H(n,"orig-head"),`${t.origHead}
|
|
97
|
+
`),await e.fs.writeFile(H(n,"onto"),`${t.onto}
|
|
98
|
+
`),await e.fs.writeFile(H(n,"msgnum"),`${String(t.msgnum)}
|
|
99
|
+
`),await e.fs.writeFile(H(n,"end"),`${String(t.end)}
|
|
100
|
+
`),await e.fs.writeFile(H(n,"git-rebase-todo"),co(t.todo)),await e.fs.writeFile(H(n,"done"),co(t.done)),await e.fs.writeFile(H(n,"interactive"),"")}async function cf(e){let t=Sr(e),n=await Et(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(H(t,"msgnum"),`${String(n.msgnum)}
|
|
101
|
+
`),await e.fs.writeFile(H(t,"git-rebase-todo"),co(n.todo)),await e.fs.writeFile(H(t,"done"),co(n.done))}async function Li(e){let t=Sr(e);await e.fs.exists(t)&&await e.fs.rm(t,{recursive:!0})}async function fo(e,t,n){let r=Sr(e),o=`@${n.timestamp} ${n.timezone}`;await e.fs.writeFile(H(r,"author-script"),`GIT_AUTHOR_NAME='${n.name}'
|
|
102
102
|
GIT_AUTHOR_EMAIL='${n.email}'
|
|
103
103
|
GIT_AUTHOR_DATE='${o}'
|
|
104
|
-
`),await e.fs.writeFile(
|
|
105
|
-
`)}function
|
|
104
|
+
`),await e.fs.writeFile(H(r,"stopped-sha"),`${t}
|
|
105
|
+
`)}function sf(e){let t=[];for(let n of e.split(`
|
|
106
106
|
`)){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 co(e){return e.length===0?"":`${e.map(t=>`pick ${t.hash} # ${t.subject}`).join(`
|
|
107
107
|
`)}
|
|
108
|
-
`}async function
|
|
109
|
-
`))l.push(
|
|
108
|
+
`}async function ff(e,t,n){let r=new Map,[o,s]=await Promise.all([of(e,t,r),of(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 af(e,r,n,i),left:await af(e,r,t,a)}}async function of(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 ao(e,i,n);for(let c of a.commit.parents)r.has(c)||o.push(c)}return r}async function af(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 ao(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 ao(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 ao(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 m=(o.get(d)??0)-1;o.set(d,m),m<=0&&i.push(d)}}return a.reverse(),a}async function ao(e,t,n){let r=n.get(t);if(r)return r;let o=await ye(e,t);if(o.type!=="commit")throw new Error(`Expected commit object, got ${o.type}`);let s={hash:t,commit:sn(o.content)};return n.set(t,s),s}we();ce();function Tr(e){let t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function wm(e,t){if(e.length===0)return;if(e.length===1)return e.shift();let n=Tr(t),r=0;for(let o=0;o<e.length;o++){let s=e[o];if(s&&Tr(s.path)===n){r=o;break}}return e.splice(r,1)[0]}var bm=50;async function it(e,t,n=bm){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 m=r.get(d);if(m&&m.length>0){let u=wm(m,l.path);u&&a.push({oldPath:u.path,newPath:l.path,oldHash:u.oldHash??d,newHash:d,similarity:100,oldMode:u.oldMode,newMode:l.newMode})}else c.push(l)}let f=[...r.values()].flat();if(f.length>0&&c.length>0){let l=await ym(e,f,c,n);if(l.length>0){let d=new Set(l.map(u=>u.oldPath)),m=new Set(l.map(u=>u.newPath));f=f.filter(u=>!d.has(u.path)),c=c.filter(u=>!m.has(u.path)),a.push(...l)}}if(f.length>0&&c.length>0){let l=await Rm(e,f,c,n);if(l.length>0){let d=new Set(l.map(u=>u.oldPath)),m=new Set(l.map(u=>u.newPath));f=f.filter(u=>!d.has(u.path)),c=c.filter(u=>!m.has(u.path)),a.push(...l)}}return{remaining:[...i,...f,...c],renames:a}}async function ym(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=Tr(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=Tr(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 m=await Pt(e,l.oldHash),u=await Pt(e,d.newHash),h=km(m,u);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 lf=107927;function lo(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))%lf;t.set(f,(t.get(f)??0)+n),n=0,r=0,o=0}if(n>0){let i=(r+Math.imul(o,97))%lf;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 Em(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 km(e,t){return e.length===0&&t.length===0?100:e.length===0||t.length===0?0:df(e.length,lo(e),t.length,lo(t))}function df(e,t,n,r){let o=Math.max(e,n),s=Math.min(e,n);if(s<o-s)return 0;let{srcCopied:i}=Em(t,r);return Math.floor(i*100/o)}async function Rm(e,t,n,r){let o=[];for(let l of t)if(l.oldHash){let d=await Pt(e,l.oldHash);o.push({size:d.length,chunks:lo(d)})}else o.push(null);let s=[];for(let l of n)if(l.newHash){let d=await Pt(e,l.newHash);s.push({size:d.length,chunks:lo(d)})}else s.push(null);let i=[];for(let l=0;l<t.length;l++){let d=t[l],m=o[l];if(!(!d||!m))for(let u=0;u<n.length;u++){let h=n[u],p=s[u];if(!h||!p)continue;let g=df(m.size,m.chunks,p.size,p.chunks);if(g>=r){let w=Tr(d.path)===Tr(h.path)?1:0;i.push({similarity:g,nameScore:w,delIdx:l,addIdx:u})}}}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:m}of i){if(a.has(d)||c.has(m))continue;a.add(d),c.add(m);let u=t[d],h=n[m];!u||!h||f.push({oldPath:u.path,newPath:h.path,oldHash:u.oldHash??"",newHash:h.newHash??"",similarity:l,oldMode:u.oldMode,newMode:h.newMode})}return f}function un(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),m=e.slice(0,o),u=e.slice(n-a),h=e.slice(o,o+l),p=t.slice(o,o+d);return o+a>0?`${m}{${h} => ${p}}${u}`:`${e} => ${t}`}Ae();tt();async function at(e,t){let n=await Q(e),r=await Y(e),o,s=!1;n&&n.type==="symbolic"?o=Pe(n.target):(s=!0,o="HEAD detached");let i=t?.index??await z(e),a=_i(i),c=t?.compareHash!==void 0?t.compareHash:r,f=t?.compareHash!==void 0?!t.compareHash:!r,l=await Ni(e,c,i,a),d=await gt(e,i),m=[],u=[];for(let g of d)g.status==="untracked"?u.push(g.path):m.push({path:g.path,status:g.status});m.sort((g,w)=>Ie(g.path,w.path));let h=new Set(i.entries.map(g=>g.path)),p=Fi(u,h);return xm(e,r,s,o,i,l,m,a,p,{fromCommit:t?.fromCommit,noWarn:t?.noWarn,isInitial:f})}function uf(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 ${X(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 ${X(r.hash)} # ${r.subject}`);e.push(' (use "git rebase --edit-todo" to view and edit)')}else e.push("No commands remaining.")}async function xm(e,t,n,r,o,s,i,a,c,f){let l=[],d=!1,m=await B(e,"CHERRY_PICK_HEAD"),u=await B(e,"REVERT_HEAD"),h=await B(e,"MERGE_HEAD"),p=!m&&!h,w=await _t(e)?await Et(e):null;if(n&&w){let C=X(w.onto);l.push(`interactive rebase in progress; onto ${C}`)}else if(n){let C=await ls(e);if(C){let P=t===C?"at":"from";l.push(`HEAD detached ${P} ${X(C)}`)}else l.push("Not currently on any branch.")}else l.push(`On branch ${r}`);if(!n&&!w){let C=await pe(e),P=await Jt(e,C,r);if(P){let I=fr(P,{abbreviated:f?.fromCommit});for(let v of I.trimEnd().split(`
|
|
109
|
+
`))l.push(v);d=!0}}if(d&&(w||m||u||h)&&l.push(""),w&&h)uf(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=Mt(o),P=await e.fs.exists(H(e.gitDir,"MERGE_MSG"));uf(l,w);let v=w.headName==="detached HEAD"?null:Pe(w.headName),T=X(w.onto),N=v?` branch '${v}' on '${T}'`:"";if(C)l.push(`You are currently rebasing${N}.`),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${N}.`),l.push(' (all conflicts fixed: run "git rebase --continue")');else{let S=N?`You are currently editing a commit while rebasing${N}.`:"You are currently editing a commit during a rebase.";l.push(S),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 m?(l.push(`You are currently cherry-picking commit ${X(m)}.`),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):u?(l.push(`You are currently reverting commit ${X(u)}.`),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 It(e)){let P=(await $e(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 R=f?.isInitial??!t;R&&(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 y=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(` ${mf(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(` ${Cm(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(y),l.push(' (use "git restore <file>..." to discard changes in working directory)');for(let C of i)l.push(` ${mf(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 k=s.length>0||!!h&&a.length===0;return!E&&d&&(f?.noWarn||k)&&l.push(""),!k&&!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)'):R?l.push('nothing to commit (create/copy files and use "git add" to track)'):l.push("nothing to commit, working tree clean")),`${l.join(`
|
|
110
110
|
`)}
|
|
111
|
-
`}async function
|
|
111
|
+
`}async function Ni(e,t,n,r){let o=new Set(r?.map(u=>u.path)),s=null;t&&(s=(await j(e,t)).tree);let i=await le(e,s),a=new Map(Ne(n).map(u=>[u.path,u])),c=[];for(let[u,h]of a){if(o.has(u))continue;let p=i.get(u);p?p.hash!==h.hash&&c.push({path:u,status:"modified",oldHash:p.hash,newHash:h.hash,oldMode:p.mode,newMode:h.mode.toString(8).padStart(6,"0")}):c.push({path:u,status:"added",newHash:h.hash,newMode:h.mode.toString(8).padStart(6,"0")})}for(let[u,h]of i)o.has(u)||a.has(u)||c.push({path:u,status:"deleted",oldHash:h.hash,oldMode:h.mode});let{remaining:f,renames:l}=await it(e,c),d={added:"new file",deleted:"deleted",modified:"modified"},m=[];for(let u of f){let h=d[u.status];h&&m.push({path:u.path,status:h})}for(let u of l)m.push({path:u.newPath,status:"renamed",displayPath:`${u.oldPath} -> ${u.newPath}`});return m.sort((u,h)=>Ie(u.path,h.path))}function _i(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)=>Ie(r.path,o.path))}function Fi(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 mf(e,t,n){return`${e}:`.padEnd(12)+(n??t)}function Cm(e,t){return`${e}:`.padEnd(17)+t}async function Jt(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 B(e,i);if(!c)return{upstream:a,ahead:0,behind:0,gone:!0};let f=await B(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 Di(e,f,c);return{upstream:a,ahead:l,behind:d,gone:!1}}function uo(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 fr(e,t){if(e.gone)return`Your branch is based on '${e.upstream}', but the upstream is gone.
|
|
112
112
|
(use "git branch --unset-upstream" to fixup)
|
|
113
113
|
`;if(e.ahead===0&&e.behind===0)return`Your branch is up to date with '${e.upstream}'.
|
|
114
114
|
`;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}.
|
|
@@ -118,17 +118,17 @@ GIT_AUTHOR_DATE='${o}'
|
|
|
118
118
|
`}let n=`Your branch and '${e.upstream}' have diverged,
|
|
119
119
|
and have ${e.ahead} and ${e.behind} different commits each, respectively.
|
|
120
120
|
`;return t?.abbreviated?n:n+` (use "git pull" if you want to integrate the remote branch with yours)
|
|
121
|
-
`}Ae();
|
|
121
|
+
`}Ae();Xt();tt();async function mo(e){let t=await et(e,"HEAD");for(let n=t.length-1;n>=0;n--){let r=t[n];if(!r)continue;let o=r.message.match(/^checkout: moving from (.+) to (.+)$/);if(o?.[1]){let s=o[1],i=`refs/heads/${s}`,a=await B(e,i);if(a)return{name:s,refName:i,hash:a}}}return null}async function xn(e){let t="";return await B(e,"CHERRY_PICK_HEAD")&&(t=`warning: cancelling a cherry picking in progress
|
|
122
122
|
`),await B(e,"REVERT_HEAD")&&(t+=`warning: cancelling a revert in progress
|
|
123
123
|
`),await cr(e),t}function Pm(e){let t=new Set,n=[];for(let r of e.entries)r.stage>0&&!t.has(r.path)&&(t.add(r.path),n.push(`${r.path}: needs merge`));return n.sort(),n.length>0?`${n.join(`
|
|
124
124
|
`)}
|
|
125
125
|
`:""}function qn(e){return e.entries.some(t=>t.stage>0)?{stdout:Pm(e),stderr:`error: you need to resolve your current index first
|
|
126
|
-
`,exitCode:1}:null}async function
|
|
126
|
+
`,exitCode:1}:null}async function ho(e,t,n,r){if(!e.workTree)return O("this operation must be run in a work tree");if(r)return $m(e,t,n,r);let o=await z(e),s=t.map(a=>Ue(a,n)),i=o.entries.filter(a=>a.stage===0&&Ee(s,a.path));if(i.length===0)return o.entries.some(c=>c.stage>0&&Ee(s,c.path))?G(`error: path '${t[0]}' is unmerged
|
|
127
127
|
`):G(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
128
|
-
`);for(let a of i)await dt(e,{path:a.path,hash:a.hash,mode:a.mode});return{stdout:"",stderr:"",exitCode:0}}async function $m(e,t,n,r){let o=await
|
|
129
|
-
`);for(let c of a){let f=o.get(c);f&&(await dt(e,{path:f.path,hash:f.hash,mode:f.mode}),s=Ct(s,{path:f.path,hash:f.hash,mode:parseInt(f.mode,8),stage:0,stat:Se()}))}return await
|
|
130
|
-
`);for(let f of c){let l=i.entries.find(
|
|
131
|
-
`)}return{stdout:"",stderr:"",exitCode:0}}async function lr(e,t,n){if(!e.workTree)return"";let r=await Ke(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=
|
|
128
|
+
`);for(let a of i)await dt(e,{path:a.path,hash:a.hash,mode:a.mode});return{stdout:"",stderr:"",exitCode:0}}async function $m(e,t,n,r){let o=await le(e,r),s=await z(e),i=t.map(c=>Ue(c,n)),a=[];for(let[c]of o)Ee(i,c)&&a.push(c);if(a.length===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
129
|
+
`);for(let c of a){let f=o.get(c);f&&(await dt(e,{path:f.path,hash:f.hash,mode:f.mode}),s=Ct(s,{path:f.path,hash:f.hash,mode:parseInt(f.mode,8),stage:0,stat:Se()}))}return await fe(e,s),{stdout:"",stderr:"",exitCode:0}}async function po(e,t,n,r,o){if(!e.workTree)return O("this operation must be run in a work tree");let s=o?.deleteOnMissing??!1,i=await z(e),a=t.map(f=>Ue(f,n)),c=new Set;for(let f of i.entries)Ee(a,f.path)&&c.add(f.path);if(c.size===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
130
|
+
`);for(let f of c){let l=i.entries.find(u=>u.path===f&&u.stage===r),d=!l&&i.entries.find(u=>u.path===f&&u.stage===0),m=l||d;if(m)await dt(e,{path:m.path,hash:m.hash,mode:m.mode});else if(s){let u=H(e.workTree,f);await e.fs.exists(u)&&await e.fs.rm(u)}else if(i.entries.some(h=>h.path===f&&h.stage>0))return G(`error: path '${f}' does not have ${r===2?"our":"their"} version
|
|
131
|
+
`)}return{stdout:"",stderr:"",exitCode:0}}async function lr(e,t,n){if(!e.workTree)return"";let r=await Ke(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=H(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 pt("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(`
|
|
132
132
|
`)}
|
|
133
133
|
`)}var hf=5;function Om(e){let t=e.length,n=t===1?"commit":"commits",r=t===1?"it":"them",o=t>hf?hf-1:t,i=e.slice(0,o).map(c=>` ${X(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
|
|
134
134
|
any of your branches:
|
|
@@ -141,10 +141,10 @@ to do so with:
|
|
|
141
141
|
|
|
142
142
|
git branch <new-branch-name> ${X(e[0].hash)}
|
|
143
143
|
|
|
144
|
-
`}async function
|
|
145
|
-
`}async function
|
|
146
|
-
`,exitCode:0};let a=await z(e),c=qn(a);if(c)return c;let f=await Y(e),d=(await j(e,r)).tree,
|
|
147
|
-
${p}`,exitCode:0}}async function zn(e,t,n,r,o){let s=await z(e),i=qn(s);if(i)return i;let a=await Y(e),c=await j(e,t),f=c.tree,l=null;if(a&&(l=(await j(e,a)).tree),l!==f){let x=await Fn(e,l,f,s);if(!x.success)return x.errorOutput??G("error: checkout would overwrite local changes");s={version:2,entries:x.newEntries},await
|
|
144
|
+
`}async function Ui(e,t){let n=await j(e,t);return`Previous HEAD position was ${X(t)} ${ue(n.message)}
|
|
145
|
+
`}async function go(e,t,n){let r=await Mi(e,t,{targetHash:n});return r.length>0?Om(r):t!==n?Ui(e,t):""}async function dr(e,t,n,r,o,s){let i=await Q(e);if(i?.type==="symbolic"&&i.target===n)return{stdout:"",stderr:`Already on '${t}'
|
|
146
|
+
`,exitCode:0};let a=await z(e),c=qn(a);if(c)return c;let f=await Y(e),d=(await j(e,r)).tree,m=null;if(f&&(m=(await j(e,f)).tree),m!==d){let x=await Fn(e,m,d,a);if(!x.success)return x.errorOutput??G("error: checkout would overwrite local changes");a={version:2,entries:x.newEntries},await fe(e,a),await De(e,x.worktreeOps)}let u="";i?.type==="direct"&&f&&(u=await go(e,f,r));let h=i?.type==="symbolic"?i.target.replace(/^refs\/heads\//,""):f??ee;await Xe(e,"HEAD",n),await yt(e);let p=await xn(e);await oe(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 lr(e,d,a),w=await pe(e),R=await Jt(e,w,t);return R&&(g+=fr(R)),{stdout:g,stderr:`${u}Switched to branch '${t}'
|
|
147
|
+
${p}`,exitCode:0}}async function zn(e,t,n,r,o){let s=await z(e),i=qn(s);if(i)return i;let a=await Y(e),c=await j(e,t),f=c.tree,l=null;if(a&&(l=(await j(e,a)).tree),l!==f){let x=await Fn(e,l,f,s);if(!x.success)return x.errorOutput??G("error: checkout would overwrite local changes");s={version:2,entries:x.newEntries},await fe(e,s),await De(e,x.worktreeOps)}let d=await Q(e),m=d?.type==="direct"&&a===t;if(await Z(e,"HEAD",t),!m){await Qc(e,t);let x=d?.type==="symbolic"?d.target.replace(/^refs\/heads\//,""):a??ee;await oe(e,n,"HEAD",a,t,`checkout: moving from ${x} to ${t}`)}let u=await xn(e);await r?.hooks?.postCheckout?.({repo:e,prevHead:a,newHead:t,isBranchCheckout:!1});let h=X(t),p=ue(c.message),g=d?.type==="direct",w="";return g&&a&&a!==t&&(w+=await go(e,a,t)),g||!o?.detachAdviceTarget?w+=`HEAD is now at ${h} ${p}
|
|
148
148
|
`:w=`Note: switching to '${o.detachAdviceTarget}'.
|
|
149
149
|
|
|
150
150
|
You are in 'detached HEAD' state. You can look around, make experimental
|
|
@@ -163,93 +163,93 @@ Or undo this operation with:
|
|
|
163
163
|
Turn off this advice by setting config variable advice.detachedHead to false
|
|
164
164
|
|
|
165
165
|
HEAD is now at ${h} ${p}
|
|
166
|
-
`,w+=
|
|
167
|
-
`}async function
|
|
168
|
-
`,stderr:"",exitCode:1};async function
|
|
169
|
-
`,exitCode:1};let i=r.rest??[],a=await W(o.fs,o.cwd,t);return M(a)?a:Am(a,o.env,t,s,i)}});Sm(n,t),Tm(n,t),Hm(n,t),Dm(n,t),jm(n,t),Gm(n,t),Nm(n,t),Fm(n,t),Um(n,t)}function Sm(e,t){e.command("start",{description:"Start bisecting",args:[q.string().name("revs").describe("Bad and good revisions").optional().variadic()],options:{"term-new":V.string().describe("Alternate term for new/bad"),"term-bad":V.string().describe("Alternate term for new/bad"),"term-old":V.string().describe("Alternate term for old/good"),"term-good":V.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=Ye(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 pf.has(a)?
|
|
170
|
-
`),await
|
|
166
|
+
`,w+=u,{stdout:await lr(e,f,s),stderr:w,exitCode:0}}async function Im(e,t){if(t.startsWith("refs/remotes/")){if(!await B(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 B(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 wo(e,t,n){let r=await Im(e,n);if(!r||await xe(e,"branch.autoSetupMerge")==="false")return"";let s=await pe(e),i=`branch "${t}"`;return s[i]||(s[i]={}),s[i].remote=r.remote,s[i].merge=`refs/heads/${r.branch}`,await Je(e,s),`branch '${t}' set up to track '${r.remote}/${r.branch}'.
|
|
167
|
+
`}async function bo(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 xe(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}ce();me();we();an();var pf=new Set(["help","start","skip","next","reset","visualize","view","replay","log","run","terms"]),ms={stdout:`You need to start by "git bisect start"
|
|
168
|
+
`,stderr:"",exitCode:1};async function Bi(e){let t=await $e(e,"BISECT_HEAD");if(t?.trim())return t.trim();let n=await Y(e);return n||O("no current commit")}function gf(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]
|
|
169
|
+
`,exitCode:1};let i=r.rest??[],a=await W(o.fs,o.cwd,t);return M(a)?a:Am(a,o.env,t,s,i)}});Sm(n,t),Tm(n,t),Hm(n,t),Dm(n,t),jm(n,t),Gm(n,t),Nm(n,t),Fm(n,t),Um(n,t)}function Sm(e,t){e.command("start",{description:"Start bisecting",args:[q.string().name("revs").describe("Bad and good revisions").optional().variadic()],options:{"term-new":V.string().describe("Alternate term for new/bad"),"term-bad":V.string().describe("Alternate term for new/bad"),"term-old":V.string().describe("Alternate term for old/good"),"term-good":V.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=Ye(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 pf.has(a)?O(`'${a}' is not a valid term`):pf.has(c)?O(`'${c}' is not a valid term`):a===c?O("'bad' and 'good' terms must be different"):wf(s,r.env,t,n.revs??[],a,c,n["no-checkout"]??!1,n["first-parent"]??!1)}})}async function wf(e,t,n,r,o,s,i,a){await It(e)&&await io(e);let c=await Q(e),f;if(c?.type==="symbolic"?f=c.target.replace(/^refs\/heads\//,""):f=await Y(e)??"HEAD",await Me(e,"BISECT_START",f+`
|
|
170
|
+
`),await Me(e,"BISECT_TERMS",`${o}
|
|
171
171
|
${s}
|
|
172
|
-
`),await
|
|
173
|
-
`),a&&await
|
|
174
|
-
`,exitCode:1}:
|
|
175
|
-
`,stderr:"",exitCode:0}}})}async function Mm(e,t,n,r){let o=(await
|
|
176
|
-
`,exitCode:1}}})}function Gm(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:
|
|
177
|
-
`)){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
|
|
178
|
-
`;let c=(await o(r,{cwd:s})).exitCode;if(c===125){let
|
|
179
|
-
`,{stdout:i,stderr:"",exitCode:0};if(h.exitCode!==0)return{stdout:i,stderr:h.stderr,exitCode:h.exitCode};continue}let f=await oo(e),l=c===0?f.termGood:f.termBad,d=await
|
|
180
|
-
`,{stdout:i,stderr:"",exitCode:0};if(d.exitCode!==0)return{stdout:i,stderr:d.stderr,exitCode:d.exitCode}}}function Fm(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
|
|
181
|
-
`,exitCode:1};let{termBad:i,termGood:a}=await
|
|
172
|
+
`),await Me(e,"BISECT_NAMES",`
|
|
173
|
+
`),a&&await Me(e,"BISECT_FIRST_PARENT",""),i){let m=await Y(e);m&&await Me(e,"BISECT_HEAD",m)}if(r.length>0){let m=r[0],u=await wt(e,m);if(M(u))return u;await Z(e,`refs/bisect/${o}`,u);let h=await j(e,u);await St(e,`# ${o}: [${u}] ${ue(h.message)}`);for(let p=1;p<r.length;p++){let g=r[p],w=await wt(e,g);if(M(w))return w;await Z(e,`refs/bisect/${s}-${w}`,w);let R=await j(e,w);await St(e,`# ${s}: [${w}] ${ue(R.message)}`)}}let l=r.map(m=>`'${m}'`),d=l.length>0?` ${l.join(" ")}`:"";return await St(e,`git bisect start${d}`),hs(e,t,n)}function Tm(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:vm(s,o.env,t,n,r.rev)}})}async function vm(e,t,n,r,o){if(!await It(e))return ms;let s=await ds(e),i=r==="bad"||r==="new"?s.termBad:s.termGood;return us(e,t,n,i,s,o)}async function Am(e,t,n,r,o){if(!await It(e))return ms;let s=await ds(e);return r!==s.termBad&&r!==s.termGood?{stdout:"",stderr:`error: unknown command: 'git bisect ${r}'
|
|
174
|
+
`,exitCode:1}:us(e,t,n,r,s,o[0])}async function us(e,t,n,r,o,s){let i;if(s){let f=await wt(e,s);if(M(f))return f;i=f}else{let f=await Bi(e);if(M(f))return f;i=f}let a=await j(e,i),c=ue(a.message);return r===o.termBad?await Z(e,`refs/bisect/${o.termBad}`,i):await Z(e,`refs/bisect/${o.termGood}-${i}`,i),await St(e,`# ${r}: [${i}] ${c}`),await St(e,`git bisect ${r} ${i}`),hs(e,t,n)}function Hm(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 It(s))return ms;let i=n.revs??[];if(i.length===0){let a=await Bi(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 wt(s,a);if(M(l))return l;c=l}await Z(s,`refs/bisect/skip-${c}`,c);let f=await j(s,c);await St(s,`# skip: [${c}] ${ue(f.message)}`),await St(s,`git bisect skip ${c}`)}return hs(s,r.env,t)}})}function Dm(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 It(s)?Mm(s,r.env,t,n.commit):{stdout:`We are not bisecting.
|
|
175
|
+
`,stderr:"",exitCode:0}}})}async function Mm(e,t,n,r){let o=(await $e(e,"BISECT_START"))?.trim()??"";if(await io(e),r){let s=await wt(e,r);return M(s)?s:zn(e,s,t,n)}if(o){let s=`refs/heads/${o}`,i=await B(e,s);if(i)return dr(e,o,s,i,t,n);let a=await We(e,o);if(a)return zn(e,a,t,n)}return{stdout:"",stderr:"",exitCode:0}}function jm(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 It(s)?{stdout:await $e(s,"BISECT_LOG")??"",stderr:"",exitCode:0}:{stdout:"",stderr:`error: We are not bisecting.
|
|
176
|
+
`,exitCode:1}}})}function Gm(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:H(r.cwd,n.logfile);if(!await r.fs.exists(i))return O(`cannot open '${n.logfile}': No such file or directory`);let a=await r.fs.readFile(i);return Lm(s,r.env,t,a)}})}async function Lm(e,t,n,r){await It(e)&&await io(e);let o={termBad:"bad",termGood:"good"},s="";for(let i of r.split(`
|
|
177
|
+
`)){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 m=l?l.split(/\s+/).map(u=>u.replace(/^'|'$/g,"")):[];d=await wf(e,t,n,m,"bad","good",!1,!1)}else if(f==="bad"||f==="new")d=await us(e,t,n,"bad",o,l||void 0);else if(f==="good"||f==="old")d=await us(e,t,n,"good",o,l||void 0);else if(f==="skip"){for(let m of l?l.split(/\s+/):[]){await Z(e,`refs/bisect/skip-${m}`,m);let u=await j(e,m);await St(e,`# skip: [${m}] ${ue(u.message)}`),await St(e,`git bisect skip ${m}`)}d=await hs(e,t,n)}else continue;if(d.exitCode!==0)return d;s+=d.stdout}return{stdout:s,stderr:"",exitCode:0}}function Nm(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 It(s))return ms;if(!r.exec)return O("bisect run requires shell execution support");let i=n.cmd.join(" ");return _m(s,r.env,t,i,r.exec,r.cwd)}})}async function _m(e,t,n,r,o,s){let i="";for(;;){i+=`running '${r}'
|
|
178
|
+
`;let c=(await o(r,{cwd:s})).exitCode;if(c===125){let m=await Bi(e);if(M(m))return m;await Z(e,`refs/bisect/skip-${m}`,m);let u=await j(e,m);await St(e,`# skip: [${m}] ${ue(u.message)}`),await St(e,`git bisect skip ${m}`);let h=await hs(e,t,n);if(i+=h.stdout,h.stdout.includes("is the first bad commit"))return i+=`bisect found first bad commit
|
|
179
|
+
`,{stdout:i,stderr:"",exitCode:0};if(h.exitCode!==0)return{stdout:i,stderr:h.stderr,exitCode:h.exitCode};continue}let f=await oo(e),l=c===0?f.termGood:f.termBad,d=await us(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
|
|
180
|
+
`,{stdout:i,stderr:"",exitCode:0};if(d.exitCode!==0)return{stdout:i,stderr:d.stderr,exitCode:d.exitCode}}}function Fm(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 It(s))return{stdout:"",stderr:`error: no terms defined
|
|
181
|
+
`,exitCode:1};let{termBad:i,termGood:a}=await ds(s);return n["term-good"]?{stdout:`${a}
|
|
182
182
|
`,stderr:"",exitCode:0}:n["term-bad"]?{stdout:`${i}
|
|
183
183
|
`,stderr:"",exitCode:0}:{stdout:`Your current terms are ${a} for the old state
|
|
184
184
|
and ${i} for the new state.
|
|
185
|
-
`,stderr:"",exitCode:0}}})}function Um(e,t){for(let n of["visualize","view"])e.command(n,{description:"Show remaining suspects in git log",handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=s;if(!await
|
|
186
|
-
`,exitCode:1};let{walkCommits:c}=await Promise.resolve().then(()=>(ar(),
|
|
187
|
-
`;return{stdout:f,stderr:"",exitCode:0}}})}async function
|
|
188
|
-
`,exitCode:1};if(o.found){let s=await
|
|
185
|
+
`,stderr:"",exitCode:0}}})}function Um(e,t){for(let n of["visualize","view"])e.command(n,{description:"Show remaining suspects in git log",handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);if(M(s))return s;let i=s;if(!await It(i))return ms;let a=await oo(i);if(!a.badHash||a.goodHashes.length===0)return{stdout:"",stderr:`error: need both bad and good commits to visualize
|
|
186
|
+
`,exitCode:1};let{walkCommits:c}=await Promise.resolve().then(()=>(ar(),Jc)),f="";for await(let l of c(i,a.badHash,{exclude:a.goodHashes}))f+=`${X(l.hash)} ${ue(l.commit.message)}
|
|
187
|
+
`;return{stdout:f,stderr:"",exitCode:0}}})}async function hs(e,t,n){let r=await oo(e);return!r.badHash||r.goodHashes.length===0?{stdout:tf(r),stderr:"",exitCode:0}:(await Me(e,"BISECT_ANCESTORS_OK",""),Bm(e,t,n,r))}async function Bm(e,t,n,r){let o=await ef(e,r.badHash,r.goodHashes,new Set(r.skipHashes),r.firstParent);if(!o)return{stdout:"",stderr:`error: no testable commits found
|
|
188
|
+
`,exitCode:1};if(o.found){let s=await rf(e,o.hash);return await St(e,`# first bad commit: [${o.hash}] ${o.subject}`),{stdout:s,stderr:"",exitCode:0}}if(o.onlySkippedLeft){let s=`There are only 'skip'ped commits left to test.
|
|
189
189
|
The first bad commit could be any of:
|
|
190
190
|
`;for(let i of r.skipHashes)s+=i+`
|
|
191
191
|
`;return r.badHash&&(s+=r.badHash+`
|
|
192
192
|
`),s+=`We cannot bisect more!
|
|
193
|
-
`,{stdout:s,stderr:"",exitCode:2}}if(r.noCheckout)await
|
|
194
|
-
`),{stdout:
|
|
193
|
+
`,{stdout:s,stderr:"",exitCode:2}}if(r.noCheckout)await Me(e,"BISECT_HEAD",o.hash);else{let s=await zn(e,o.hash,t,n);if(s.exitCode!==0)return s}return await Me(e,"BISECT_EXPECTED_REV",o.hash+`
|
|
194
|
+
`),{stdout:nf(o),stderr:"",exitCode:0}}ie();ce();function Ft(e){if(e.length===0)return[];let t=e.split(`
|
|
195
195
|
`);return t[t.length-1]===""&&t.pop(),t}function Rt(e){if(e.length===0)return[];let t=[],n=0;for(let r=0;r<e.length;r++)e[r]===`
|
|
196
|
-
`&&(t.push(e.slice(n,r+1)),n=r+1);return n<e.length&&t.push(e.slice(n)),t}var Wm=4,bf=1024,
|
|
196
|
+
`&&(t.push(e.slice(n,r+1)),n=r+1);return n<e.length&&t.push(e.slice(n)),t}var Wm=4,bf=1024,yo=100,Ro=0,Eo=1,vr=2;function qi(e){let t=1;for(;t*t<e;)t++;return t}function qm(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 zm(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 yf(e,t,n,r){t-n>yo&&(n=t-yo),r-t>yo&&(r=t+yo);let o=0,s=1;for(let c=1;t-c>=n;c++){let f=e[t-c];if(f===Ro)o++;else if(f===vr)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===Ro)i++;else if(f===vr)a++;else break}return i===0?!1:(i+=o,a+=s,a*Wm<a+i)}function Km(e,t,n,r,o,s,i,a,c,f){let l=new Uint8Array(t),d=new Uint8Array(r),m=Math.min(qi(t),bf);for(let g=s;g<=i;g++){let w=o[e[g]].len2;w===0?l[g]=Ro:w>=m?l[g]=vr:l[g]=Eo}let u=Math.min(qi(r),bf);for(let g=s;g<=a;g++){let w=o[n[g]].len1;w===0?d[g]=Ro:w>=u?d[g]=vr:d[g]=Eo}let h=[];for(let g=s;g<=i;g++)l[g]===Eo||l[g]===vr&&!yf(l,g,s,i)?h.push(g):c[g]=1;let p=[];for(let g=s;g<=a;g++)d[g]===Eo||d[g]===vr&&!yf(d,g,s,a)?p.push(g):f[g]=1;return{refIndex1:h,nreff1:h.length,refIndex2:p,nreff2:p.length}}var Kn=20,Ef=4,Vm=256,Ym=256,ko=2147483647;function kt(e,t){return e[t]??0}function Xm(e,t,n,r,o,s,i,a,c,f){let l=t-s,d=n-o,m=t-o,u=n-s,h=m-u&1,p=m,g=m,w=u,R=u;i[m]=t,a[u]=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 y=g;y>=p;y-=2){let E;kt(i,y-1)>=kt(i,y+1)?E=kt(i,y-1)+1:E=kt(i,y+1);let k=E,C=E-y;for(;E<n&&C<s&&e[E]===r[C];)E++,C++;if(E-k>Kn&&(b=!0),i[y]=E,h&&w<=y&&y<=R&&kt(a,y)<=E)return{i1:E,i2:C,minLo:!0,minHi:!0}}w>l?a[--w-1]=ko:++w,R<d?a[++R+1]=ko:--R;for(let y=R;y>=w;y-=2){let E;kt(a,y-1)<kt(a,y+1)?E=kt(a,y-1):E=kt(a,y+1)-1;let k=E,C=E-y;for(;E>t&&C>o&&e[E-1]===r[C-1];)E--,C--;if(k-E>Kn&&(b=!0),a[y]=E,!h&&p<=y&&y<=g&&E<=kt(i,y))return{i1:E,i2:C,minLo:!0,minHi:!0}}if(!c){if(b&&x>Vm){let y=0,E=null;for(let k=g;k>=p;k-=2){let C=k>m?k-m:m-k,P=kt(i,k),I=P-k,v=P-t+(I-o)-C;if(v>Ef*x&&v>y&&t+Kn<=P&&P<n&&o+Kn<=I&&I<s){let T=!0;for(let N=1;N<=Kn;N++)if(e[P-N]!==r[I-N]){T=!1;break}T&&(y=v,E={i1:P,i2:I,minLo:!0,minHi:!1})}}if(E)return E;y=0,E=null;for(let k=R;k>=w;k-=2){let C=k>u?k-u:u-k,P=kt(a,k),I=P-k,v=n-P+(s-I)-C;if(v>Ef*x&&v>y&&t<P&&P<=n-Kn&&o<I&&I<=s-Kn){let T=!0;for(let N=0;N<Kn;N++)if(e[P+N]!==r[I+N]){T=!1;break}T&&(y=v,E={i1:P,i2:I,minLo:!1,minHi:!0})}}if(E)return E}if(x>=f){let y=-1,E=-1;for(let P=g;P>=p;P-=2){let I=Math.min(kt(i,P),n),v=I-P;s<v&&(I=s+P,v=s),y<I+v&&(y=I+v,E=I)}let k=ko,C=ko;for(let P=R;P>=w;P-=2){let I=Math.max(t,kt(a,P)),v=I-P;v<o&&(I=o+P,v=o),I+v<k&&(k=I+v,C=I)}return n+s-k<y-(t+o)?{i1:E,i2:y-E,minLo:!0,minHi:!1}:{i1:C,i2:k-C,minLo:!1,minHi:!0}}}}}function zi(e,t,n,r,o,s,i,a,c,f,l,d,m,u){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=Xm(e,t,n,r,o,s,l,d,m,u);zi(e,t,h.i1,r,o,h.i2,i,a,c,f,l,d,h.minLo,u),zi(e,h.i1,n,r,h.i2,s,i,a,c,f,l,d,h.minHi,u)}}function Zm(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 kf=200,Rf=20,xf=100,Jm=1,Qm=21,eh=-30,th=6,nh=-4,rh=10,sh=24,oh=17,ih=23,ah=17,ch=60;function Wi(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>=kf)return kf}return-1}function Cf(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=Wi(e[n]));for(let o=n-1;o>=0&&(r.preIndent=Wi(e[o]),r.preIndent===-1);o--)if(r.preBlank+=1,r.preBlank===Rf){r.preIndent=0;break}for(let o=n+1;o<t&&(r.postIndent=Wi(e[o]),r.postIndent===-1);o++)if(r.postBlank+=1,r.postBlank===Rf){r.postIndent=0;break}return r}function Pf(e,t){e.preIndent===-1&&e.preBlank===0&&(t.penalty+=Jm),e.endOfFile&&(t.penalty+=Qm);let n=e.indent===-1?1+e.postBlank:0,r=e.preBlank+n;t.penalty+=eh*r,t.penalty+=th*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?rh:nh:o===e.preIndent||(e.postIndent!==-1&&e.postIndent>o?t.penalty+=s?oh:sh:t.penalty+=s?ah:ih))}function fh(e,t){let n=(e.effectiveIndent>t.effectiveIndent?1:0)-(e.effectiveIndent<t.effectiveIndent?1:0);return ch*n+(e.penalty-t.penalty)}function $f(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,m)=>t[d]===t[m];for(;;){if(a!==i){let d,m,u;do{for(d=a-i,m=-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(u=a,f>c&&(m=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&&(m=a)}}while(d!==a-i);if(a!==u)if(m!==-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=u;for(a-d-1>g&&(g=a-d-1),a-xf>g&&(g=a-xf);g<=a;g++){let w={effectiveIndent:0,penalty:0},R=Cf(n,r,g);Pf(R,w);let x=Cf(n,r,g-d);Pf(x,w),(h===-1||fh(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 Ki(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}=qm(e,t),{dstart:f,dend1:l,dend2:d}=zm(i,n,a,r);if(f>l)for(let m=f;m<r-(n-1-l);m++)s[m]=1;else if(f>d)for(let m=f;m<n-(r-1-d);m++)o[m]=1;else{let{refIndex1:m,nreff1:u,refIndex2:h,nreff2:p}=Km(i,n,a,r,c,f,l,d,o,s);if(u>0&&p>0){let g=new Array(u);for(let E=0;E<u;E++)g[E]=i[m[E]];let w=new Array(p);for(let E=0;E<p;E++)w[E]=a[h[E]];let R={},x={},b=u+p+3,y=Math.max(Ym,qi(b));zi(g,0,u,w,0,p,o,s,m,h,R,x,!1,y)}else if(u===0)for(let g=0;g<p;g++)s[h[g]]=1;else for(let g=0;g<u;g++)o[m[g]]=1;$f(o,i,e,n,s,r),$f(s,a,t,r,o,n)}}else n===0?s.fill(1):o.fill(1);return{changedOld:o,changedNew:s}}function ct(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}=Ki(e,t);return Zm(e,t,o,s)}var lh=3;function dh(e,t=lh){if(t=Math.max(0,t),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=>uh(e,a.start,a.end))}function uh(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 xo(e){return e?e.length<40?e:X(e):"0000000"}function Of(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 mh(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==="",m=e.isDeleted??s==="";if(o===s&&!f)return"";let u=[];if(Of(u,e,l,d,m,f),o!==s){if(a||c){let h=xo(a),p=xo(c);d||m||f?u.push(`index ${h}..${p}`):u.push(`index ${h}..${p} ${i||"100644"}`)}t&&n?u.push(`Binary files a/${r} and b/${l} differ`):d?u.push(`Binary files /dev/null and b/${l} differ`):m?u.push(`Binary files a/${r} and /dev/null differ`):u.push(`Binary files a/${r} and b/${l} differ`)}return`${u.join(`
|
|
197
197
|
`)}
|
|
198
|
-
`}function
|
|
198
|
+
`}function Tt(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=Te(n),d=Te(r);if(l||d)return mh(e,l,d);let m=Ft(n),u=Ft(r),h=n.length>0&&n.endsWith(`
|
|
199
199
|
`),p=r.length>0&&r.endsWith(`
|
|
200
|
-
`),g="\0NOEOL",w=
|
|
200
|
+
`),g="\0NOEOL",w=m;!h&&m.length>0&&(w=m.slice(),w[w.length-1]+=g);let R=u;!p&&u.length>0&&(R=u.slice(),R[R.length-1]+=g);let x=ct(w,R);if(!h||!p)for(let v of x)v.line.includes(g)&&(v.line=v.line.replace(g,""));let b=dh(x,e.contextLines);if(b.length===0&&!c)return"";let y=e.isNew??n==="",E=e.isDeleted??r==="",k=[];if(Of(k,e,f,y,E,c),b.length===0)return`${k.join(`
|
|
201
201
|
`)}
|
|
202
|
-
`;if(i||a){let
|
|
202
|
+
`;if(i||a){let v=xo(i),T=xo(a);y||E?k.push(`index ${v}..${T}`):c?k.push(`index ${v}..${T} ${o||"100644"}`):o&&s&&o!==s?k.push(`index ${v}..${T}`):k.push(`index ${v}..${T} ${o||"100644"}`)}let C=v=>v.includes(" ")?" ":"";y?(k.push("--- /dev/null"),k.push(`+++ b/${f}${C(f)}`)):E?(k.push(`--- a/${t}${C(t)}`),k.push("+++ /dev/null")):(k.push(`--- a/${t}${C(t)}`),k.push(`+++ b/${f}${C(f)}`));let P=m.length,I=u.length;for(let v of b){let T=v.oldCount===1?`${v.oldStart}`:`${v.oldStart},${v.oldCount}`,N=v.newCount===1?`${v.newStart}`:`${v.newStart},${v.newCount}`,S="",A=v.oldCount===0?v.oldStart-1:v.oldStart-2;for(let F=A;F>=0;F--){let U=m[F];if(U&&/^[a-zA-Z$_]/.test(U)){S=` ${U.trimEnd().slice(0,79)}`;break}}k.push(`@@ -${T} +${N} @@${S}`);let D=v.oldStart,_=v.newStart;for(let F of v.lines)switch(F.type){case"context":k.push(` ${F.content}`),(!h&&D===P||!p&&_===I)&&k.push("\"),D++,_++;break;case"delete":k.push(`-${F.content}`),!h&&D===P&&k.push("\"),D++;break;case"insert":k.push(`+${F.content}`),!p&&_===I&&k.push("\"),_++;break}}return`${k.join(`
|
|
203
203
|
`)}
|
|
204
|
-
`}
|
|
205
|
-
`)[0],boundary:i,previous:a}}
|
|
204
|
+
`}ce();Ae();async function Vn(e,t,n){return(await le(e,t)).get(n)?.hash??null}async function If(e,t,n,r){let o=await Ve(e,t,n);if(!o.find(c=>c.status==="added"&&c.path===r))return null;let{renames:i}=await it(e,o);return i.find(c=>c.newPath===r)?.oldPath??null}async function hh(e,t,n,r,o,s){let i=await Vn(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,Yn(t,n,w.currentLine,s+w.finalIdx,o[w.finalIdx],g,!1,void 0));return p}let a=await se(e,i),c=Ft(a),f=new Array(o.length),l=[...r],d=t,m=n,u=c;for(;l.length>0;){let p=await j(e,d);if(p.parents.length===0){for(let P of l)f[P.finalIdx]=Yn(d,m,P.currentLine,s+P.finalIdx,o[P.finalIdx],p,!0,void 0);break}let g=await Vn(e,p.tree,m),w=null,R=[];for(let P of p.parents){let I=await j(e,P),v=m,T=await Vn(e,I.tree,v);if(!T){let N=await If(e,I.tree,p.tree,m);N&&(v=N,T=await Vn(e,I.tree,v))}if(T&&(R.push({hash:P,path:v,blobHash:T}),T===g)){w={hash:P,path:v};break}}if(w){d=w.hash,m=w.path;continue}if(R.length===0){for(let P of l)f[P.finalIdx]=Yn(d,m,P.currentLine,s+P.finalIdx,o[P.finalIdx],p,!1,void 0);break}let x=R[0],b=await se(e,x.blobHash),y=Ft(b),E=ct(y,u),k=new Map;for(let P of E)P.type==="keep"&&k.set(P.newLineNo,P.oldLineNo);let C=[];for(let P of l){let I=k.get(P.currentLine);I!==void 0?C.push({finalIdx:P.finalIdx,currentLine:I}):f[P.finalIdx]=Yn(d,m,P.currentLine,s+P.finalIdx,o[P.finalIdx],p,!1,{hash:x.hash,path:x.path})}l=C,d=x.hash,m=x.path,u=y}let h=new Map;for(let p of r)f[p.finalIdx]&&h.set(p.finalIdx,f[p.finalIdx]);return h}async function Sf(e,t,n,r){let o=await j(e,t),s=await Vn(e,o.tree,n);if(!s)throw new Error(`no such path '${n}' in ${t.slice(0,7)}`);let i=await se(e,s),a=Ft(i),c=r?.startLine??1,f=r?.endLine??a.length,l=a.slice(c-1,f),d=new Array(l.length),m=l.map((g,w)=>({finalIdx:w,currentLine:c+w})),u=t,h=n,p=a;for(;m.length>0;){let g=await j(e,u);if(g.parents.length===0){for(let k of m)d[k.finalIdx]=Yn(u,h,k.currentLine,c+k.finalIdx,l[k.finalIdx],g,!0,void 0);break}let w=await Vn(e,g.tree,h),R=[],x=null;for(let k of g.parents){let C=await j(e,k),P=h,I=await Vn(e,C.tree,P);if(!I){let v=await If(e,C.tree,g.tree,h);v&&(P=v,I=await Vn(e,C.tree,P))}if(I){let v={hash:k,path:P,blobHash:I};if(R.push(v),I===w){x=v;break}}}if(x){u=x.hash,h=x.path;continue}if(R.length===0){for(let k of m)d[k.finalIdx]=Yn(u,h,k.currentLine,c+k.finalIdx,l[k.finalIdx],g,!1,void 0);break}if(R.length===1){let k=R[0],C=await se(e,k.blobHash),P=Ft(C),I=ct(P,p),v=new Map;for(let N of I)N.type==="keep"&&v.set(N.newLineNo,N.oldLineNo);let T=[];for(let N of m){let S=v.get(N.currentLine);S!==void 0?T.push({finalIdx:N.finalIdx,currentLine:S}):d[N.finalIdx]=Yn(u,h,N.currentLine,c+N.finalIdx,l[N.finalIdx],g,!1,{hash:k.hash,path:k.path})}m=T,u=k.hash,h=k.path,p=P;continue}let b=[];for(let k of R){let C=await se(e,k.blobHash),P=Ft(C),I=ct(P,p),v=new Map;for(let T of I)T.type==="keep"&&v.set(T.newLineNo,T.oldLineNo);b.push({info:k,newToOld:v})}let y=new Map;for(let k of m){let C=!1;for(let P=0;P<b.length;P++){let I=b[P],v=I.newToOld.get(k.currentLine);if(v!==void 0){let T=y.get(P);T||(T={info:I.info,lines:[]},y.set(P,T)),T.lines.push({finalIdx:k.finalIdx,currentLine:v}),C=!0;break}}C||(d[k.finalIdx]=Yn(u,h,k.currentLine,c+k.finalIdx,l[k.finalIdx],g,!1,{hash:R[0].hash,path:R[0].path}))}let E=y.get(0);for(let[k,C]of y){if(k===0)continue;let P=await hh(e,C.info.hash,C.info.path,C.lines,l,c);for(let[I,v]of P)d[I]=v}if(E&&E.lines.length>0){m=E.lines,u=E.info.hash,h=E.info.path;let k=await se(e,E.info.blobHash);p=Ft(k)}else break}return d}function Yn(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(`
|
|
205
|
+
`)[0],boundary:i,previous:a}}ie();ce();Ae();ce();me();function ph(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 gh(e,t){let n=ph(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 wh(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 m=r?`<${d.author.email}>`:d.author.name;m.length>c&&(c=m.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 m;n?m=d.boundary?`^${d.hash.slice(0,39)}`:d.hash:m=d.boundary?`^${d.hash.slice(0,7)}`:d.hash.slice(0,8);let u=a?` ${d.origPath.padEnd(f)}`:"";if(o)l.push(`${m}${u} ${String(d.finalLine).padStart(i)}) ${d.content}`);else{let h=r?`<${d.author.email}>`:d.author.name,p=gh(d.author.timestamp,d.author.timezone);l.push(`${m}${u} (${h.padEnd(c)} ${p} ${String(d.finalLine).padStart(i)}) ${d.content}`)}}return`${l.join(`
|
|
206
206
|
`)}
|
|
207
207
|
`}function bh(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(`
|
|
208
208
|
`)}
|
|
209
|
-
`}function yh(e,t,n){if(e.startsWith("/"))return st(n,e);let r=st(n,t);return r===""||r==="."?e:`${r}/${e}`}function Tf(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:V.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
|
|
209
|
+
`}function yh(e,t,n){if(e.startsWith("/"))return st(n,e);let r=st(n,t);return r===""||r==="."?e:`${r}/${e}`}function Tf(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:V.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 O("this operation must be run in a work tree");let a=await Qe(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 O("no file specified");let m=yh(d,r.cwd,i.workTree),u;if(l){let E=await wt(i,l);if(M(E))return E;u=await ve(i,E)}else u=a;let h=await j(i,u),p=await le(i,h.tree);if(!p.has(m))return O(`no such path ${m} in ${l??"HEAD"}`);let g=p.get(m).hash,w=await se(i,g);if(Te(w))return O(`cannot blame binary file '${m}'`);let R,x;if(n.lineRange){let E=n.lineRange,k=E.match(/^(\d+),(\d+)$/);if(k)R=parseInt(k[1],10),x=parseInt(k[2],10);else return O(`invalid -L range: '${E}'`)}let b;try{b=await Sf(i,u,m,{startLine:R,endLine:x})}catch(E){let k=E instanceof Error?E.message:String(E);return O(k)}let y;return n.porcelain||n.linePorcelain?y=bh(b,!!n.linePorcelain):y=wh(b,m,!!n.long,!!n.showEmail,!!n.suppress),{stdout:y,stderr:"",exitCode:0}}})}ie();Be();Tn();ie();var Eh=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],kh=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Cn(e,t){let n=Rh(t),r=new Date((e+n*60)*1e3),o=Eh[r.getUTCDay()],s=kh[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 Vi(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 Rh(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)}ce();Ae();var Co=new TextDecoder;function vf(e){if(e.length===0)return 0;let t=0;for(let n=0;n<e.length;n++)e[n]===`
|
|
210
210
|
`&&t++;return e[e.length-1]!==`
|
|
211
|
-
`&&t++,t}function Xn(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 Zn(e,t,n){let r=[],o=[],s=[];for(let a of t)if(a.status==="added"&&a.newHash&&a.newMode){let c=await Pt(e,a.newHash);Dn(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:vf(
|
|
211
|
+
`&&t++,t}function Xn(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 Zn(e,t,n){let r=[],o=[],s=[];for(let a of t)if(a.status==="added"&&a.newHash&&a.newMode){let c=await Pt(e,a.newHash);Dn(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:vf(Co.decode(c)),deletions:0}),o.push({path:a.path,mode:a.newMode})}else if(a.status==="deleted"&&a.oldHash&&a.oldMode){let c=await Pt(e,a.oldHash);Dn(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:vf(Co.decode(c))}),s.push({path:a.path,mode:a.oldMode})}else if(a.status==="modified"&&a.oldHash&&a.newHash){let c=await Pt(e,a.oldHash),f=await Pt(e,a.newHash);if(Dn(c)||Dn(f))r.push({path:a.path,sortKey:a.path,insertions:0,deletions:0,isBinary:!0,oldSize:c.byteLength,newSize:f.byteLength});else{let l=Rt(Co.decode(c)),d=Rt(Co.decode(f)),m=ct(l,d),u=0,h=0;for(let p of m)p.type==="insert"?u++:p.type==="delete"&&h++;r.push({path:a.path,sortKey:a.path,insertions:u,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=un(a.oldPath,a.newPath),f=0,l=0;if(a.similarity<100&&a.oldHash&&a.newHash){let d=await se(e,a.oldHash),m=await se(e,a.newHash);if(!Te(d)&&!Te(m)){let u=Rt(d),h=Rt(m),p=ct(u,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=un(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 mn(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: ${Cn(r.timestamp,r.timezone)}`),i)return a.join(`
|
|
212
212
|
`)+(a.length>0?`
|
|
213
|
-
`:"");let c=await Ve(e,t,n),{remaining:f,renames:l}=await it(e,c),{fileStats:d,modeLines:
|
|
213
|
+
`:"");let c=await Ve(e,t,n),{remaining:f,renames:l}=await it(e,c),{fileStats:d,modeLines:m}=await Zn(e,f,l),u=0,h=0;for(let g of d)u+=g.insertions,h+=g.deletions;let p=Xn(d.length,u,h);p&&a.push(p);for(let g of m)a.push(g);return a.join(`
|
|
214
214
|
`)+(a.length>0?`
|
|
215
|
-
`:"")}var xh=80;function Ch(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 ur(e,t=xh){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=Ch(p.path,c);let f=c,l=[],d=0,
|
|
215
|
+
`:"")}var xh=80;function Ch(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 ur(e,t=xh){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=Ch(p.path,c);let f=c,l=[],d=0,m=0,u=0;for(let p of e){let g=p.path.padEnd(f);if(p.isUnmerged){l.push(` ${g} | Unmerged`);continue}if(u++,d+=p.insertions,m+=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,R=String(w).padStart(s),x,b;if(r<=a)x=p.insertions,b=p.deletions;else{let k=I=>I===0?0:1+Math.floor(I*(a-1)/r),C=k(w),P=C<2&&p.insertions>0&&p.deletions>0?2:C;p.insertions<p.deletions?(x=k(p.insertions),b=P-x):(b=k(p.deletions),x=P-b)}let y="+".repeat(x)+"-".repeat(b),E=y?` ${y}`:"";l.push(` ${g} | ${R}${E}`)}let h=Xn(u,d,m);return h?l.push(h):e.some(p=>p.isUnmerged)&&l.push(" 0 files changed"),`${l.join(`
|
|
216
216
|
`)}
|
|
217
|
-
`}async function
|
|
218
|
-
`;return c}
|
|
217
|
+
`}async function hn(e,t,n){let r=await Ve(e,t,n),{remaining:o,renames:s}=await it(e,r);if(o.length===0&&s.length===0)return"";let{fileStats:i,modeLines:a}=await Zn(e,o,s);i.sort((f,l)=>f.sortKey<l.sortKey?-1:f.sortKey>l.sortKey?1:0);let c=ur(i);for(let f of a)c+=`${f}
|
|
218
|
+
`;return c}Be();Ce();ce();we();Xt();async function Ph(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 Pn(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 Ut(e,t,n){if(t===n)return[t];let r=await Ph(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 Pn(e,f,d)){l=!0;break}l||c.push(f)}return c.length<=1?c:$h(e,t,n,c)}async function $h(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(m){let u=c.get(m);if(u!==void 0)return u;let h=(await j(e,m)).committer.timestamp;return c.set(m,h),h}for(;l.length>0;){let m=0,u=await d(l[0].hash);for(let R=1;R<l.length;R++){let x=l[R],b=await d(x.hash),y=l[m];(b>u||b===u&&x.seq<y.seq)&&(m=R,u=b)}let h=l.splice(m,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 R of w.parents)l.push({hash:R,mask:g,seq:f++})}for(let m of r)s.has(m)||i.push(m);return i}async function mr(e,t,n){let r=await xe(e,"init.defaultBranch")??"main";return n===r?`Merge branch '${t}'
|
|
219
219
|
`:`Merge branch '${t}' into ${n}
|
|
220
|
-
`}async function
|
|
221
|
-
`;if(e.workTree){let f=await z(e),l=await
|
|
222
|
-
${c}`,stderr:"",exitCode:0}}
|
|
223
|
-
`);let
|
|
224
|
-
`);let b="";if(!f){let
|
|
225
|
-
'${
|
|
226
|
-
`:"";return G(`${
|
|
220
|
+
`}async function Po(e,t,n){let r=await j(e,t),o=await j(e,n),s=X(t),i=X(n),a=`Updating ${s}..${i}
|
|
221
|
+
`;if(e.workTree){let f=await z(e),l=await Kc(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 fe(e,{version:2,entries:l.newEntries}),await De(e,l.worktreeOps)}await jn(e,n);let c=await hn(e,r.tree,o.tree);return{stdout:`${a}Fast-forward
|
|
222
|
+
${c}`,stderr:"",exitCode:0}}ce();ze();we();function Af(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:V.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"?Pe(i.target):null,c=!!n.forceMove;if(n.move||c){let w,R;if(n.newName)w=n.name,R=n.newName;else if(n.name){if(!a)return O("not on any branch");w=a,R=n.name}else return O("branch name required");if(!bn(R))return O(`'${R}' is not a valid branch name`);let x=`refs/heads/${w}`,b=`refs/heads/${R}`,y=await B(s,x);if(!y)return O(`no branch named '${w}'`);if(await _t(s)&&(await Et(s))?.headName===x)return O(`branch ${x} is being rebased at ${s.workTree}`);let E=await B(s,b);if(E&&!c)return O(`a branch named '${R}' already exists`);E&&await he(s,b);let k=await et(s,x);await Z(s,b,y),await he(s,x),w===a&&await Xe(s,"HEAD",b),k.length>0&&await Ln(s,b,k);let C=`Branch: renamed ${x} to ${b}`;if(await oe(s,r.env,b,y,y,C),w===a){let v=await nn(s,r.env);await Ze(s,"HEAD",{oldHash:y,newHash:ee,...v,message:C}),await Ze(s,"HEAD",{oldHash:ee,newHash:y,...v,message:C})}let P=await pe(s),I=`branch "${w}"`;return P[I]&&(P[`branch "${R}"`]=P[I],delete P[I],await Je(s,P)),{stdout:"",stderr:"",exitCode:0}}let f=n.forceDelete;if(n.delete||f){if(!n.name)return O("branch name required");let w=n.name===a;if(!w&&!a&&await _t(s)&&(await Et(s))?.headName===`refs/heads/${n.name}`&&(w=!0),w)return G(`error: cannot delete branch '${n.name}' used by worktree at '${s.workTree}'
|
|
223
|
+
`);let R=`refs/heads/${n.name}`,x=await B(s,R);if(!x)return G(`error: branch '${n.name}' not found
|
|
224
|
+
`);let b="";if(!f){let y=await Y(s),k=(await pe(s))[`branch "${n.name}"`],C=k?.remote,P=k?.merge,I=null,v=null;if(C&&P&&(I=P.replace(/^refs\/heads\//,`refs/remotes/${C}/`),v=await B(s,I)),v&&I){if(!(x===v||await Pn(s,x,v))){let A=y!=null&&(x===y||await Pn(s,x,y))?`warning: not deleting branch '${n.name}' that is not yet merged to
|
|
225
|
+
'${I}', even though it is merged to HEAD
|
|
226
|
+
`:"";return G(`${A}error: the branch '${n.name}' is not fully merged
|
|
227
227
|
hint: If you are sure you want to delete it, run 'git branch -D ${n.name}'
|
|
228
228
|
hint: Disable this message with "git config set advice.forceDeleteBranch false"
|
|
229
|
-
`)}
|
|
230
|
-
'${
|
|
231
|
-
`)}else if(
|
|
229
|
+
`)}y!=null&&(x===y||await Pn(s,x,y))||(b=`warning: deleting branch '${n.name}' that has been merged to
|
|
230
|
+
'${I}', but not yet merged to HEAD
|
|
231
|
+
`)}else if(y&&x!==y&&!await Pn(s,x,y))return G(`error: the branch '${n.name}' is not fully merged
|
|
232
232
|
hint: If you are sure you want to delete it, run 'git branch -D ${n.name}'
|
|
233
233
|
hint: Disable this message with "git config set advice.forceDeleteBranch false"
|
|
234
|
-
`)}return await he(s,
|
|
235
|
-
`,stderr:b,exitCode:0}}if(n.setUpstreamTo){let w=n.setUpstreamTo,
|
|
236
|
-
`,exitCode:0}}if(n.name&&!n.remotes&&!n.all){if(!
|
|
234
|
+
`)}return await he(s,R),{stdout:`Deleted branch ${n.name} (was ${X(x)}).
|
|
235
|
+
`,stderr:b,exitCode:0}}if(n.setUpstreamTo){let w=n.setUpstreamTo,R=n.name||a;if(!R)return O("could not set upstream of HEAD when it does not point to any branch.");if(!await B(s,`refs/heads/${R}`))return O(`branch '${R}' does not exist`);let b=w.indexOf("/");if(b<0)return O(`the requested upstream branch '${w}' does not exist`);let y=w.slice(0,b),E=w.slice(b+1);if(!await B(s,`refs/remotes/${w}`))return O(`the requested upstream branch '${w}' does not exist`);let C=await pe(s),P=`branch "${R}"`;return C[P]||(C[P]={}),C[P].remote=y,C[P].merge=`refs/heads/${E}`,await Je(s,C),{stdout:"",stderr:`branch '${R}' set up to track '${w}'.
|
|
236
|
+
`,exitCode:0}}if(n.name&&!n.remotes&&!n.all){if(!bn(n.name))return O(`'${n.name}' is not a valid branch name`);let w=n.newName,R;if(w){let k=await je(s,w,`not a valid object name: '${w}'`);if(M(k))return k;R=k.hash}else if(R=await Y(s),!R)return O("Not a valid object name: 'HEAD'.");let x=`refs/heads/${n.name}`;if(await B(s,x))return O(`a branch named '${n.name}' already exists`);await Z(s,x,R);let y=w??"HEAD";await oe(s,r.env,x,null,R,`branch: Created from ${y}`);let E="";return w&&(E=await wo(s,n.name,w)),{stdout:"",stderr:E,exitCode:0}}let l=n.verbose||0,d=!n.remotes||n.all,m=n.remotes||n.all,u=[];if(d&&!a){let w=await Y(s);if(w){let R=await _t(s),x;if(R){let b=await Et(s);if(b?.headName){let y=Pe(b.headName);if(y==="detached HEAD"){let E=await ls(s);x=`(no branch, rebasing detached HEAD ${E?X(E):"(null)"})`}else x=`(no branch, rebasing ${y})`}else x="(no branch)"}else{let b=await ls(s);b?x=`(HEAD detached ${w===b?"at":"from"} ${X(b)})`:x="(no branch)"}u.push({displayName:x,hash:w,isCurrent:!0,branchName:null})}}if(d){let w=await ge(s,"refs/heads");for(let R of w){let x=Pe(R.name);u.push({displayName:x,hash:R.hash,isCurrent:x===a,branchName:x})}}if(m){let w=await ge(s,"refs/remotes");for(let R of w){let x=R.name.replace("refs/remotes/","");u.push({displayName:n.all?`remotes/${x}`:x,hash:R.hash,isCurrent:!1,branchName:null})}}if(u.length===0)return{stdout:"",stderr:"",exitCode:0};if(l===0)return{stdout:`${u.map(R=>R.isCurrent?`* ${R.displayName}`:` ${R.displayName}`).join(`
|
|
237
237
|
`)}
|
|
238
|
-
`,stderr:"",exitCode:0};let h=l>=1?await
|
|
238
|
+
`,stderr:"",exitCode:0};let h=l>=1?await pe(s):null,p=Math.max(...u.map(w=>w.displayName.length)),g=[];for(let w of u){let R=w.isCurrent?"* ":" ",x=w.displayName.padEnd(p),b=X(w.hash),y="";try{let k=await j(s,w.hash);y=ue(k.message)}catch{}let E="";if(h&&w.branchName){let k=await Jt(s,h,w.branchName);if(k){let C=uo(k,l>=2);C&&(E=` ${C}`)}}g.push(`${R}${x} ${b}${E} ${y}`)}return{stdout:`${g.join(`
|
|
239
239
|
`)}
|
|
240
|
-
`,stderr:"",exitCode:0}}})}function
|
|
241
|
-
`)}})}async function Ah(e,t,n){let r=await
|
|
242
|
-
${l}`,exitCode:0}}async function Dh(e,t,n,r,o=!1){if(!
|
|
240
|
+
`,stderr:"",exitCode:0}}})}function de(e){return e!=null&&typeof e=="object"&&"reject"in e&&e.reject===!0}var Oh=["preCommit","preMergeCommit","preCheckout","prePush","preFetch","preClone","prePull","preRebase","preReset","preCherryPick","preRevert","beforeCommand"],Ih=["commitMsg","mergeMsg"],Sh=["postCommit","postMerge","postCheckout","postPush","postFetch","postClone","postPull","postReset","postCherryPick","postRevert","afterCommand"],Th=["onRefUpdate","onRefDelete","onObjectWrite"];function vh(...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 Oh){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(de(a))return a}})}for(let r of Ih){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(de(a))return a}})}for(let r of Sh){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 Th){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}ie();Be();Ce();ce();ze();we();an();tt();function Df(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 O("--ours and --theirs are incompatible");if(n.detach&&(n.branch||n.forceBranch||n.orphan))return O("'--detach' cannot be used with '-b/-B/--orphan'");if(o.passthrough.length>0){if(n.detach)return O(`git checkout: --detach does not take a path argument '${o.passthrough[0]}'`);let m=ut(i,r.cwd),u=o.passthrough,h=null;if(a){if(n.ours||n.theirs)return O("cannot specify both a revision and --ours/--theirs");let p=await je(i,a,`invalid reference: ${a}`);if(M(p))return p;h=p.commit.tree}return n.ours||n.theirs?po(i,u,m,n.theirs?3:2):ho(i,u,m,h)}if(n.orphan)return n.branch?O("--orphan and -b are incompatible"):n.ours||n.theirs?O("--orphan and --ours/--theirs are incompatible"):a?Hh(i,a,r.env,t):O("you must specify a branch to checkout");if(n.detach){let m=a??"HEAD",u=await je(i,m,`invalid reference: ${m}`);return M(u)?u:Hf(i,m,u.hash,r.env,t)}if(!a)return O("you must specify a branch to checkout");if(n.branch||n.forceBranch)return Dh(i,a,r.env,t,!!n.forceBranch);if(a==="-")return Ah(i,r.env,t);let c=`refs/heads/${a}`,f=await B(i,c);if(f)return Mf(i,a,c,f,r.env,t);let l=await bo(i,a);if(l)return Mh(i,a,l.trackingRef,r.env,t);let d=await We(i,a);if(d){let m=await ve(i,d);return Hf(i,a,m,r.env,t)}if(i.workTree){let m=await z(i),u=Ls(m,a);if(u)return await dt(i,{path:u.path,hash:u.hash,mode:u.mode}),{stdout:"",stderr:"",exitCode:0}}return G(`error: pathspec '${a}' did not match any file(s) known to git
|
|
241
|
+
`)}})}async function Ah(e,t,n){let r=await mo(e);return r?Mf(e,r.name,r.refName,r.hash,t,n):O("no previous branch")}async function Hh(e,t,n,r){if(!bn(t))return O(`'${t}' is not a valid branch name`);let o=`refs/heads/${t}`;if(await B(e,o))return O(`a branch named '${t}' already exists`);let i=await z(e),a=qn(i);if(a)return a;let c=await Y(e),f=null;c&&(f=(await j(e,c)).tree),await Xe(e,"HEAD",o),await yt(e);let l=await xn(e);await r?.hooks?.postCheckout?.({repo:e,prevHead:c,newHead:ee,isBranchCheckout:!0});let d="";return f&&(d=await lr(e,f,i)),{stdout:d,stderr:`Switched to a new branch '${t}'
|
|
242
|
+
${l}`,exitCode:0}}async function Dh(e,t,n,r,o=!1){if(!bn(t))return O(`'${t}' is not a valid branch name`);let s=await r?.hooks?.preCheckout?.({repo:e,target:t,mode:"create-branch"});if(de(s))return G(s.message??"");let i=await Q(e),a=await Y(e),c=`refs/heads/${t}`,f=await B(e,c);if(f&&!o)return O(`a branch named '${t}' already exists`);if(o){let g=await z(e),w=qn(g);if(w)return w}a&&await Z(e,c,a),await Xe(e,"HEAD",c),await yt(e);let l=await xn(e),d=i?.type==="symbolic"?i.target.replace(/^refs\/heads\//,""):a??ee;a&&(f?f!==a&&await oe(e,n,c,f,a,"branch: Reset to HEAD"):await oe(e,n,c,null,a,"branch: Created from HEAD")),await oe(e,n,"HEAD",a,a??ee,`checkout: moving from ${d} to ${t}`),await r?.hooks?.postCheckout?.({repo:e,prevHead:a,newHead:a??ee,isBranchCheckout:!0});let m="";if(o&&a){let g=await z(e),w=await j(e,a);m=await lr(e,w.tree,g)}let u=await pe(e),h=await Jt(e,u,t);h&&(m+=fr(h));let p=f?`Switched to and reset branch '${t}'
|
|
243
243
|
`:`Switched to a new branch '${t}'
|
|
244
|
-
`;return{stdout:
|
|
245
|
-
${
|
|
244
|
+
`;return{stdout:m,stderr:`${p}${l}`,exitCode:0}}async function Mf(e,t,n,r,o,s){let i=await s?.hooks?.preCheckout?.({repo:e,target:t,mode:"switch"});return de(i)?G(i.message??""):dr(e,t,n,r,o,s)}async function Mh(e,t,n,r,o){let s=await o?.hooks?.preCheckout?.({repo:e,target:t,mode:"create-branch"});if(de(s))return G(s.message??"");let i=await B(e,n);if(!i)return O(`invalid reference: ${n}`);let a=`refs/heads/${t}`;await Z(e,a,i);let c=n.replace(/^refs\/remotes\//,"").split("/"),f=c[0]??"",l=`refs/heads/${c.slice(1).join("/")}`,d=await pe(e);d[`branch "${t}"`]={...d[`branch "${t}"`],remote:f,merge:l},await Je(e,d),await oe(e,r,a,null,i,`branch: Created from ${n}`);let m=await dr(e,t,a,i,r,o),u=c.slice(1).join("/");return m.stderr=`branch '${t}' set up to track '${f}/${u}'.
|
|
245
|
+
${m.stderr}`,m}async function Hf(e,t,n,r,o){let s=await o?.hooks?.preCheckout?.({repo:e,target:t,mode:"detach"});return de(s)?G(s.message??""):zn(e,n,r,o,{detachAdviceTarget:t})}ie();Be();Ce();ie();function Yi(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}=Ki(e,t);return jh(o,n,s,r)}function jh(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 Gh(e,t,n){let r=[];for(let c of Yi(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 Yi(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 m=r[a];if(m.oStart>l)break;l=Math.max(l,m.oStart+m.oLength),d.push(m),a++}if(d.length===1){if(c.abLength>0){let m=c.ab==="a"?e:n;o.push({stable:!0,buffer:c.ab,bufferStart:c.abStart,bufferLength:c.abLength,content:m.slice(c.abStart,c.abStart+c.abLength)})}}else{let m={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 R=w.oStart,x=R+w.oLength,b=w.abStart,y=b+w.abLength,E=m[w.ab];E.abMin=Math.min(b,E.abMin),E.abMax=Math.max(y,E.abMax),E.oMin=Math.min(R,E.oMin),E.oMax=Math.max(x,E.oMax)}let u=m.a.abMin+(f-m.a.oMin),h=m.a.abMax+(l-m.a.oMax),p=m.b.abMin+(f-m.b.oMin),g=m.b.abMax+(l-m.b.oMax);o.push({stable:!1,a:e.slice(u,h),o:t.slice(f,l),b:n.slice(p,g)})}s=l}return i(t.length),o}function Lh(e,t,n,r){let o=r?.excludeFalseConflicts??!0,s=Gh(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&&Gf(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"?jf(i):jf(Nh(i))}function ps(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=Lh(e,t,n,{conflictStyle:s}),d=!1,m=[];for(let u of l)u.type==="ok"?m.push(...u.lines):(d=!0,s==="diff3"?m.push(i,...u.a,a,...u.o,c,...u.b,f):m.push(i,...u.a,c,...u.b,f));return{conflict:d,result:m}}function Nh(e){let t=[];for(let n of e)n.type==="ok"?t.push(n):t.push(..._h(n));return t}function _h(e){let{a:t,b:n}=e;if(t.length===0||n.length===0)return[e];if(Gf(t,n))return[e];let r=Yi(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 jf(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 hr(e,t,n,r){let o=ps(vt(e),vt(t),vt(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(Xi);return(a[a.length-1]??"").startsWith(">>>>>>>")||!i?`${a.join(`
|
|
246
246
|
`)}
|
|
247
247
|
`:a.join(`
|
|
248
|
-
`)}function
|
|
249
|
-
`);if(t[t.length-1]==="")t.pop();else{let n=t[t.length-1]??"";t[t.length-1]=`${n}\0`}return t}function Yi(e){return e.endsWith("\0")?e.slice(0,-1):e}function Gf(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();ae();gn();me();nr();Ae();tt();fn();var vr=new TextDecoder,Jn=new TextEncoder,Lf={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function Ut(e,t,n,r,o){let{paths:s,baseMap:i,oursMap:a,theirsMap:c}=await Uh(e,t,n,r),f=await Wh(e,s,i,a,c,o);return qh(e,s,o,f)}async function gs(e,t,n,r){let o=await Ft(e,t,n),s=await j(e,t),i=await j(e,n);if(o.length===0)return{...await Ut(e,null,s.tree,i.tree,r),baseTree:null};if(o.length===1){let f=await j(e,o[0]);return{...await Ut(e,f.tree,s.tree,i.tree,r),baseTree:f.tree}}let a=await Kf(e,t,n,o,1);return{...await Ut(e,a,s.tree,i.tree,r),baseTree:a}}async function Uh(e,t,n,r){let o=await fe(e,t),s=await fe(e,n),i=await fe(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 E={path:f,stages:[m,h,p],pathnames:[f,f,f],filemask:g,matchMask:b,merged:{result:null,clean:!1},pathConflict:!1};if(Bh(E)){c.set(f,E);continue}c.set(f,E)}return{paths:c,baseMap:o,oursMap:s,theirsMap:i}}function Bh(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 Wh(e,t,n,r,o,s){let i={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[S,A]of n)r.has(S)||a.push({path:S,status:"deleted",oldHash:A.hash,oldMode:A.mode}),o.has(S)||c.push({path:S,status:"deleted",oldHash:A.hash,oldMode:A.mode});for(let[S,A]of r)n.has(S)||a.push({path:S,status:"added",newHash:A.hash,newMode:A.mode});for(let[S,A]of o)n.has(S)||c.push({path:S,status:"added",newHash:A.hash,newMode:A.mode});let f=await it(e,a),l=await it(e,c);if(f.renames.length===0&&l.renames.length===0)return i;let d=new Map,u=new Map;for(let S of f.renames)d.set(S.oldPath,S);for(let S of l.renames)u.set(S.oldPath,S);let m=new Set;for(let[S]of r)!n.has(S)&&o.has(S)&&m.add(S);let h=new Set,p=s?.a??"HEAD",g=s?.b??"theirs";function w(S,A,_=0){i.msgBuf.push({sortKey:S,subOrder:_,text:A})}for(let S of[...n.keys()].sort()){let A=d.get(S),_=u.get(S);if(!A&&!_)continue;let F=n.get(S);if(h.add(S),A&&_)if(h.add(A.newPath),h.add(_.newPath),A.newPath===_.newPath){let U=r.get(A.newPath),L=o.get(_.newPath);if(U.hash===L.hash)i.entries.push(xt(A.newPath,U));else{let K=Xi(t,A.newPath);K.stages=[{hash:F.hash,mode:F.mode},{hash:U.hash,mode:U.mode},{hash:L.hash,mode:L.mode}],K.pathnames=[S,A.newPath,_.newPath],K.filemask=7,K.merged={result:null,clean:!1}}}else{let U=r.get(A.newPath),L=o.get(_.newPath),K=await zf(e,F,U,L,s);K.conflict&&w(S,`Auto-merging ${S}`,-1),i.conflicts.push({path:S,reason:"rename-rename",oursPath:A.newPath,theirsPath:_.newPath}),w(S,`CONFLICT (rename/rename): ${S} renamed to ${A.newPath} in ${p} and to ${_.newPath} in ${g}.`),i.entries.push(xt(S,F,1)),i.entries.push(ft(A.newPath,U.mode,K.hash,2)),i.entries.push(ft(_.newPath,L.mode,K.hash,3)),i.worktreeBlobs.set(A.newPath,{hash:K.hash,mode:U.mode}),i.worktreeBlobs.set(_.newPath,{hash:K.hash,mode:L.mode})}else if(A){h.add(A.newPath);let U=o.get(S),L=r.get(A.newPath),K=m.has(A.newPath);if(U)if(K)await Wf(e,i,A.newPath,S,F,L,U,r,o,!1,s);else if(U.hash===F.hash&&L.hash===F.hash)i.entries.push(xt(A.newPath,L));else if(U.hash===F.hash)i.entries.push(xt(A.newPath,L));else if(L.hash===F.hash)i.entries.push(ft(A.newPath,L.mode,U.hash));else{let te=Xi(t,A.newPath);te.stages=[{hash:F.hash,mode:F.mode},{hash:L.hash,mode:L.mode},{hash:U.hash,mode:U.mode}],te.pathnames=[S,A.newPath,S],te.filemask=7,te.merged={result:null,clean:!1}}else{let te=o.get(A.newPath);if(i.conflicts.push({path:A.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:S}),w(A.newPath,`CONFLICT (rename/delete): ${S} renamed to ${A.newPath} in ${p}, but deleted in ${g}.`),te){i.conflicts.push({path:A.newPath,reason:"add-add"}),w(A.newPath,`Auto-merging ${A.newPath}`,0),w(A.newPath,`CONFLICT (add/add): Merge conflict in ${A.newPath}`,1),i.entries.push(xt(A.newPath,L,2)),i.entries.push(xt(A.newPath,te,3));let J=await Po(e,L.hash,te.hash,L.mode,s);i.worktreeBlobs.set(A.newPath,{hash:J,mode:L.mode})}else i.entries.push(ft(A.newPath,F.mode,F.hash,1)),i.entries.push(xt(A.newPath,L,2)),i.worktreeBlobs.set(A.newPath,{hash:L.hash,mode:L.mode}),L.hash!==F.hash&&w(A.newPath,`CONFLICT (modify/delete): ${A.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${A.newPath} left in tree.`,1)}}else if(_){h.add(_.newPath);let U=r.get(S),L=o.get(_.newPath),K=m.has(_.newPath);if(U)if(K)await Wf(e,i,_.newPath,S,F,U,L,r,o,!0,s);else if(U.hash===F.hash&&L.hash===F.hash)i.entries.push(xt(_.newPath,L));else if(U.hash===F.hash)i.entries.push(xt(_.newPath,L));else if(L.hash===F.hash)i.entries.push(ft(_.newPath,L.mode,U.hash));else{let te=Xi(t,_.newPath);te.stages=[{hash:F.hash,mode:F.mode},{hash:U.hash,mode:U.mode},{hash:L.hash,mode:L.mode}],te.pathnames=[S,S,_.newPath],te.filemask=7,te.merged={result:null,clean:!1}}else{let te=r.get(_.newPath);if(i.conflicts.push({path:_.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:S}),w(_.newPath,`CONFLICT (rename/delete): ${S} renamed to ${_.newPath} in ${g}, but deleted in ${p}.`),te){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(xt(_.newPath,te,2)),i.entries.push(xt(_.newPath,L,3));let J=await Po(e,te.hash,L.hash,te.mode,s);i.worktreeBlobs.set(_.newPath,{hash:J,mode:te.mode})}else i.entries.push(ft(_.newPath,F.mode,F.hash,1)),i.entries.push(xt(_.newPath,L,3)),i.worktreeBlobs.set(_.newPath,{hash:L.hash,mode:L.mode}),L.hash!==F.hash&&w(_.newPath,`CONFLICT (modify/delete): ${_.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${_.newPath} left in tree.`,1)}}}let y=new Set(f.renames.map(S=>S.newPath)),x=new Set(l.renames.map(S=>S.newPath)),b=Nf(n,r),E=Nf(n,o),R=_f(b,o,n),k=_f(E,r,n),C=Ff(f.renames,R),P=Ff(l.renames,k),T=Uf(C),D=Uf(P);for(let S of[...T.keys()])D.has(S)&&(T.delete(S),D.delete(S));let O=new Set(T.keys()),N=new Set(D.keys());if(D.size>0)for(let S of a){if(S.status!=="added"||y.has(S.path))continue;let A=Bf(S.path,D,O);if(!A)continue;if(t.has(A)||n.has(A)||r.has(A)||o.has(A)){if(r.has(A)){w(A,`CONFLICT (implicit dir rename): Existing file/dir at ${A} in the way of implicit directory rename(s) putting the following path(s) there: ${S.path}.`,1);continue}let U=r.get(S.path),L=o.get(A)??n.get(A);i.entries.push(ft(A,U.mode,U.hash,2)),L&&i.entries.push(ft(A,L.mode,L.hash,3)),i.worktreeBlobs.set(A,{hash:U.hash,mode:U.mode}),i.conflicts.push({path:A,reason:"add-add"}),w(A,`CONFLICT (file location): ${S.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${A}.`,1);let K=t.get(S.path);K&&(K.merged={result:null,clean:!0}),h.add(S.path);continue}let _=r.get(S.path);i.entries.push(ft(A,_.mode,_.hash,2)),i.worktreeBlobs.set(A,{hash:_.hash,mode:_.mode}),i.conflicts.push({path:A,reason:"directory-rename"}),w(A,`CONFLICT (file location): ${S.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${A}.`,1);let F=t.get(S.path);F&&(F.merged={result:null,clean:!0}),h.add(S.path)}if(T.size>0)for(let S of c){if(S.status!=="added"||x.has(S.path))continue;let A=Bf(S.path,T,N);if(!A)continue;if(t.has(A)||n.has(A)||r.has(A)||o.has(A)){if(o.has(A)){w(A,`CONFLICT (implicit dir rename): Existing file/dir at ${A} in the way of implicit directory rename(s) putting the following path(s) there: ${S.path}.`,1);continue}let U=o.get(S.path),L=r.get(A)??n.get(A);L&&i.entries.push(ft(A,L.mode,L.hash,2)),i.entries.push(ft(A,U.mode,U.hash,3)),i.worktreeBlobs.set(A,{hash:U.hash,mode:U.mode}),i.conflicts.push({path:A,reason:"add-add"}),w(A,`CONFLICT (file location): ${S.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${A}.`,1);let K=t.get(S.path);K&&(K.merged={result:null,clean:!0}),h.add(S.path);continue}let _=o.get(S.path);i.entries.push(ft(A,_.mode,_.hash,3)),i.worktreeBlobs.set(A,{hash:_.hash,mode:_.mode}),i.conflicts.push({path:A,reason:"directory-rename"}),w(A,`CONFLICT (file location): ${S.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${A}.`,1);let F=t.get(S.path);F&&(F.merged={result:null,clean:!0}),h.add(S.path)}let H=new Set(i.entries.map(S=>S.path));for(let S of H){let A=t.get(S);A&&(A.merged={result:null,clean:!0})}for(let S of h){if(H.has(S))continue;let A=t.get(S);if(!A||A.merged.clean)continue;A.filemask===7&&!A.pathConflict||(A.merged={result:null,clean:!0})}return i}function Nf(e,t){let n=new Set;for(let s of e.keys()){let i=Tt(s);for(;i;)n.add(i),i=Tt(i)}let r=new Set;for(let s of t.keys()){let i=Tt(s);for(;i;)r.add(i),i=Tt(i)}let o=new Set;for(let s of n)r.has(s)||o.add(s);return o}function _f(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=Tt(o)??"";e.has(s)&&r.add(s)}for(let o of[...r]){let s=Tt(o);for(;s;)e.has(s)&&!r.has(s)&&r.add(s),s=Tt(s)}return r}function Ff(e,t){let n=new Map;for(let r of e){let o=Tt(r.oldPath),s=Tt(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=Tt(o),s=Tt(s)}}return n}function Uf(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 Bf(e,t,n){let r=Tt(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=Tt(r)}let o=t.get("");return o!==void 0&&!n.has(o)?`${o}/${e}`:null}function Tt(e){let t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}async function Wf(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(ft(n,d.mode,d.hash)),t.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let h=await zf(e,o,s,i,l,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(d.hash===h.hash)t.entries.push(ft(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(xt(n,d,2)),t.entries.push(ft(n,i.mode,h.hash,3));let p=await Po(e,d.hash,h.hash,d.mode,l);t.worktreeBlobs.set(n,{hash:p,mode:d.mode})}else{t.entries.push(ft(n,s.mode,h.hash,2)),t.entries.push(xt(n,d,3));let p=await Po(e,h.hash,d.hash,s.mode,l);t.worktreeBlobs.set(n,{hash:p,mode:s.mode})}}async function zf(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(bn(t.mode)||bn(n.mode)||bn(r.mode))return{hash:n.hash,conflict:!0};let a=await se(e,t.hash),c=await se(e,n.hash),f=await se(e,r.hash);if(Te(c)||Te(f)||Te(a))return{hash:n.hash,conflict:!0};let l=St(a),d=St(c),u=St(f),m=o?.conflictStyle,h=hs(d,l,u,{conflictStyle:m});if(!h.conflict)return{hash:await Ji(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=hr(c,a,f,{a:w,b:y,markerSize:i??7,conflictStyle:m});return{hash:await He(e,"blob",Jn.encode(x)),conflict:!0}}async function Po(e,t,n,r,o){let s=await se(e,t),i=await se(e,n),a=hr(s,"",i,{a:o?.a??"HEAD",b:o?.b??"theirs",conflictStyle:o?.conflictStyle});return He(e,"blob",Jn.encode(a))}function xt(e,t,n=0){return ft(e,t.mode,t.hash,n)}function ft(e,t,n,r=0){return{path:e,mode:parseInt(t,8),hash:n,stage:r,stat:Se()}}async function qh(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(_e(m,h.merged.result.hash,h.merged.result.mode));continue}await zh(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(_e(m,h.hash,h.mode));l.sort((m,h)=>Ie(m.path,h.path));let u=await Fe(e,l);return{entries:o,conflicts:s,messages:f,resultTree:u}}async function zh(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(_e(a,d,c.mode,1)),r.push(_e(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(_e(a,d,c.mode,1)),r.push(_e(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(_e(a,u,f.mode));return}s(a,`Auto-merging ${a}`,0);let h=await se(e,u),p=await se(e,m);if(Te(h)||Te(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(_e(a,u,f.mode,2)),r.push(_e(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let g=St(""),w=St(h),y=St(p),x=hs(w,g,y,{conflictStyle:n?.conflictStyle});if(!x.conflict){let R=await Ji(e,x.result);r.push(_e(a,R,f.mode));return}o.push({path:a,reason:"add-add"}),s(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(_e(a,u,f.mode,2)),r.push(_e(a,m,l.mode,3));let b=hr(h,"",p,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),E=await He(e,"blob",Jn.encode(b));i.set(a,{hash:E,mode:f.mode});return}if(d!==null&&u!==null&&m!==null){if(u===d){r.push(_e(a,m,l.mode));return}if(m===d){r.push(_e(a,u,f.mode));return}if(u===m){r.push(_e(a,u,f.mode));return}if(s(a,`Auto-merging ${a}`,0),bn(c.mode)||bn(f.mode)||bn(l.mode)){o.push({path:a,reason:"content"}),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(_e(a,d,c.mode,1)),r.push(_e(a,u,f.mode,2)),r.push(_e(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let h=await se(e,d),p=await se(e,u),g=await se(e,m);if(Te(p)||Te(g)||Te(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(_e(a,d,c.mode,1)),r.push(_e(a,u,f.mode,2)),r.push(_e(a,m,l.mode,3)),i.set(a,{hash:u,mode:f.mode});return}let w=St(h),y=St(p),x=St(g),b=hs(y,w,x,{conflictStyle:n?.conflictStyle});if(b.conflict){let E=t.pathnames[1],R=t.pathnames[2],k=E!==a||R!==a,C={path:a,reason:"content"};k&&(E!==a&&(C.oursOrigPath=E),R!==a&&(C.theirsOrigPath=R)),o.push(C),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(_e(a,d,c.mode,1)),r.push(_e(a,u,f.mode,2)),r.push(_e(a,m,l.mode,3));let P=k?`${n?.a??"HEAD"}:${E}`:n?.a??"HEAD",T=k?`${n?.b??"theirs"}:${R}`:n?.b??"theirs",D=hr(p,h,g,{a:P,b:T,conflictStyle:n?.conflictStyle}),O=await He(e,"blob",Jn.encode(D));i.set(a,{hash:O,mode:f.mode})}else{let E=await Ji(e,b.result);r.push(_e(a,E,f.mode))}return}}var Kh=200;async function Kf(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>=Kh)m=f;else{let g=await Ft(e,c,d);g.length===0?m=null:g.length===1?m=(await j(e,g[0])).tree:m=await Kf(e,c,d,g,o+1)}let h=await Ut(e,m,f,u);f=await Vh(e,h,o);let p=rn({type:"commit",tree:f,parents:[c,d],author:Lf,committer:Lf,message:"merged common ancestors"});c=await He(e,"commit",p)}return f}async function Vh(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=vr.decode((await be(e,m.hash)).content),g=vr.decode((await be(e,h.hash)).content),w=u?vr.decode((await be(e,u.hash)).content):"",y=8+n*2,x=i.a??"Temporary merge branch 1",b=i.b??"Temporary merge branch 2",E=hr(p,w,g,{a:`${x}:${l}`,o:i.o,b:`${b}:${d}`,markerSize:y}),R=await He(e,"blob",Jn.encode(E));r.push({path:l,mode:m.mode,hash:R,stage:0,stat:Se()}),r.push({path:d,mode:h.mode,hash:R,stage:0,stat:Se()});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=vr.decode((await be(e,c.hash)).content),d=vr.decode((await be(e,f.hash)).content),u=a.reason==="content"?s(a.path,1):null,m=u?vr.decode((await be(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=hr(l,m,d,{a:w,o:i.o,b:y,markerSize:i.markerSize}),b=await He(e,"blob",Jn.encode(x));r.push({path:a.path,mode:c.mode,hash:b,stage:0,stat:Se()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((a,c)=>Ie(a.path,c.path)),Fe(e,r)}async function Ji(e,t){let n=t.map(Yi);if(n.length===0)return He(e,"blob",Jn.encode(""));let s=(t[t.length-1]??"").endsWith("\0")?n.join(`
|
|
248
|
+
`)}function vt(e){if(e==="")return[];let t=e.split(`
|
|
249
|
+
`);if(t[t.length-1]==="")t.pop();else{let n=t[t.length-1]??"";t[t.length-1]=`${n}\0`}return t}function Xi(e){return e.endsWith("\0")?e.slice(0,-1):e}function Gf(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();ce();wn();me();nr();Ae();tt();Xt();var Ar=new TextDecoder,Jn=new TextEncoder,Lf={name:"virtual",email:"virtual@merge",timestamp:0,timezone:"+0000"};async function Bt(e,t,n,r,o){let{paths:s,baseMap:i,oursMap:a,theirsMap:c}=await Uh(e,t,n,r),f=await Wh(e,s,i,a,c,o);return qh(e,s,o,f)}async function ws(e,t,n,r){let o=await Ut(e,t,n),s=await j(e,t),i=await j(e,n);if(o.length===0)return{...await Bt(e,null,s.tree,i.tree,r),baseTree:null};if(o.length===1){let f=await j(e,o[0]);return{...await Bt(e,f.tree,s.tree,i.tree,r),baseTree:f.tree}}let a=await Kf(e,t,n,o,1);return{...await Bt(e,a,s.tree,i.tree,r),baseTree:a}}async function Uh(e,t,n,r){let o=await le(e,t),s=await le(e,n),i=await le(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,m=i.get(f)??null,u=l?{hash:l.hash,mode:l.mode}:null,h=d?{hash:d.hash,mode:d.mode}:null,p=m?{hash:m.hash,mode:m.mode}:null,g=(l?1:0)|(d?2:0)|(m?4:0),w=l?.hash??null,R=d?.hash??null,x=m?.hash??null,b=0;w!==null&&w===R&&(b|=3),w!==null&&w===x&&(b|=5),R!==null&&R===x&&(b|=6);let y={path:f,stages:[u,h,p],pathnames:[f,f,f],filemask:g,matchMask:b,merged:{result:null,clean:!1},pathConflict:!1};if(Bh(y)){c.set(f,y);continue}c.set(f,y)}return{paths:c,baseMap:o,oursMap:s,theirsMap:i}}function Bh(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 Wh(e,t,n,r,o,s){let i={entries:[],conflicts:[],msgBuf:[],worktreeBlobs:new Map},a=[],c=[];for(let[A,D]of n)r.has(A)||a.push({path:A,status:"deleted",oldHash:D.hash,oldMode:D.mode}),o.has(A)||c.push({path:A,status:"deleted",oldHash:D.hash,oldMode:D.mode});for(let[A,D]of r)n.has(A)||a.push({path:A,status:"added",newHash:D.hash,newMode:D.mode});for(let[A,D]of o)n.has(A)||c.push({path:A,status:"added",newHash:D.hash,newMode:D.mode});let f=await it(e,a),l=await it(e,c);if(f.renames.length===0&&l.renames.length===0)return i;let d=new Map,m=new Map;for(let A of f.renames)d.set(A.oldPath,A);for(let A of l.renames)m.set(A.oldPath,A);let u=new Set;for(let[A]of r)!n.has(A)&&o.has(A)&&u.add(A);let h=new Set,p=s?.a??"HEAD",g=s?.b??"theirs";function w(A,D,_=0){i.msgBuf.push({sortKey:A,subOrder:_,text:D})}for(let A of[...n.keys()].sort()){let D=d.get(A),_=m.get(A);if(!D&&!_)continue;let F=n.get(A);if(h.add(A),D&&_)if(h.add(D.newPath),h.add(_.newPath),D.newPath===_.newPath){let U=r.get(D.newPath),L=o.get(_.newPath);if(U.hash===L.hash)i.entries.push(xt(D.newPath,U));else{let K=Zi(t,D.newPath);K.stages=[{hash:F.hash,mode:F.mode},{hash:U.hash,mode:U.mode},{hash:L.hash,mode:L.mode}],K.pathnames=[A,D.newPath,_.newPath],K.filemask=7,K.merged={result:null,clean:!1}}}else{let U=r.get(D.newPath),L=o.get(_.newPath),K=await zf(e,F,U,L,s);K.conflict&&w(A,`Auto-merging ${A}`,-1),i.conflicts.push({path:A,reason:"rename-rename",oursPath:D.newPath,theirsPath:_.newPath}),w(A,`CONFLICT (rename/rename): ${A} renamed to ${D.newPath} in ${p} and to ${_.newPath} in ${g}.`),i.entries.push(xt(A,F,1)),i.entries.push(ft(D.newPath,U.mode,K.hash,2)),i.entries.push(ft(_.newPath,L.mode,K.hash,3)),i.worktreeBlobs.set(D.newPath,{hash:K.hash,mode:U.mode}),i.worktreeBlobs.set(_.newPath,{hash:K.hash,mode:L.mode})}else if(D){h.add(D.newPath);let U=o.get(A),L=r.get(D.newPath),K=u.has(D.newPath);if(U)if(K)await Wf(e,i,D.newPath,A,F,L,U,r,o,!1,s);else if(U.hash===F.hash&&L.hash===F.hash)i.entries.push(xt(D.newPath,L));else if(U.hash===F.hash)i.entries.push(xt(D.newPath,L));else if(L.hash===F.hash)i.entries.push(ft(D.newPath,L.mode,U.hash));else{let te=Zi(t,D.newPath);te.stages=[{hash:F.hash,mode:F.mode},{hash:L.hash,mode:L.mode},{hash:U.hash,mode:U.mode}],te.pathnames=[A,D.newPath,A],te.filemask=7,te.merged={result:null,clean:!1}}else{let te=o.get(D.newPath);if(i.conflicts.push({path:D.newPath,reason:"rename-delete",deletedBy:"theirs",oldPath:A}),w(D.newPath,`CONFLICT (rename/delete): ${A} renamed to ${D.newPath} in ${p}, but deleted in ${g}.`),te){i.conflicts.push({path:D.newPath,reason:"add-add"}),w(D.newPath,`Auto-merging ${D.newPath}`,0),w(D.newPath,`CONFLICT (add/add): Merge conflict in ${D.newPath}`,1),i.entries.push(xt(D.newPath,L,2)),i.entries.push(xt(D.newPath,te,3));let J=await $o(e,L.hash,te.hash,L.mode,s);i.worktreeBlobs.set(D.newPath,{hash:J,mode:L.mode})}else i.entries.push(ft(D.newPath,F.mode,F.hash,1)),i.entries.push(xt(D.newPath,L,2)),i.worktreeBlobs.set(D.newPath,{hash:L.hash,mode:L.mode}),L.hash!==F.hash&&w(D.newPath,`CONFLICT (modify/delete): ${D.newPath} deleted in ${g} and modified in ${p}. Version ${p} of ${D.newPath} left in tree.`,1)}}else if(_){h.add(_.newPath);let U=r.get(A),L=o.get(_.newPath),K=u.has(_.newPath);if(U)if(K)await Wf(e,i,_.newPath,A,F,U,L,r,o,!0,s);else if(U.hash===F.hash&&L.hash===F.hash)i.entries.push(xt(_.newPath,L));else if(U.hash===F.hash)i.entries.push(xt(_.newPath,L));else if(L.hash===F.hash)i.entries.push(ft(_.newPath,L.mode,U.hash));else{let te=Zi(t,_.newPath);te.stages=[{hash:F.hash,mode:F.mode},{hash:U.hash,mode:U.mode},{hash:L.hash,mode:L.mode}],te.pathnames=[A,A,_.newPath],te.filemask=7,te.merged={result:null,clean:!1}}else{let te=r.get(_.newPath);if(i.conflicts.push({path:_.newPath,reason:"rename-delete",deletedBy:"ours",oldPath:A}),w(_.newPath,`CONFLICT (rename/delete): ${A} renamed to ${_.newPath} in ${g}, but deleted in ${p}.`),te){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(xt(_.newPath,te,2)),i.entries.push(xt(_.newPath,L,3));let J=await $o(e,te.hash,L.hash,te.mode,s);i.worktreeBlobs.set(_.newPath,{hash:J,mode:te.mode})}else i.entries.push(ft(_.newPath,F.mode,F.hash,1)),i.entries.push(xt(_.newPath,L,3)),i.worktreeBlobs.set(_.newPath,{hash:L.hash,mode:L.mode}),L.hash!==F.hash&&w(_.newPath,`CONFLICT (modify/delete): ${_.newPath} deleted in ${p} and modified in ${g}. Version ${g} of ${_.newPath} left in tree.`,1)}}}let R=new Set(f.renames.map(A=>A.newPath)),x=new Set(l.renames.map(A=>A.newPath)),b=Nf(n,r),y=Nf(n,o),E=_f(b,o,n),k=_f(y,r,n),C=Ff(f.renames,E),P=Ff(l.renames,k),I=Uf(C),v=Uf(P);for(let A of[...I.keys()])v.has(A)&&(I.delete(A),v.delete(A));let T=new Set(I.keys()),N=new Set(v.keys());if(v.size>0)for(let A of a){if(A.status!=="added"||R.has(A.path))continue;let D=Bf(A.path,v,T);if(!D)continue;if(t.has(D)||n.has(D)||r.has(D)||o.has(D)){if(r.has(D)){w(D,`CONFLICT (implicit dir rename): Existing file/dir at ${D} in the way of implicit directory rename(s) putting the following path(s) there: ${A.path}.`,1);continue}let U=r.get(A.path),L=o.get(D)??n.get(D);i.entries.push(ft(D,U.mode,U.hash,2)),L&&i.entries.push(ft(D,L.mode,L.hash,3)),i.worktreeBlobs.set(D,{hash:U.hash,mode:U.mode}),i.conflicts.push({path:D,reason:"add-add"}),w(D,`CONFLICT (file location): ${A.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${D}.`,1);let K=t.get(A.path);K&&(K.merged={result:null,clean:!0}),h.add(A.path);continue}let _=r.get(A.path);i.entries.push(ft(D,_.mode,_.hash,2)),i.worktreeBlobs.set(D,{hash:_.hash,mode:_.mode}),i.conflicts.push({path:D,reason:"directory-rename"}),w(D,`CONFLICT (file location): ${A.path} added in ${p} inside a directory that was renamed in ${g}, suggesting it should perhaps be moved to ${D}.`,1);let F=t.get(A.path);F&&(F.merged={result:null,clean:!0}),h.add(A.path)}if(I.size>0)for(let A of c){if(A.status!=="added"||x.has(A.path))continue;let D=Bf(A.path,I,N);if(!D)continue;if(t.has(D)||n.has(D)||r.has(D)||o.has(D)){if(o.has(D)){w(D,`CONFLICT (implicit dir rename): Existing file/dir at ${D} in the way of implicit directory rename(s) putting the following path(s) there: ${A.path}.`,1);continue}let U=o.get(A.path),L=r.get(D)??n.get(D);L&&i.entries.push(ft(D,L.mode,L.hash,2)),i.entries.push(ft(D,U.mode,U.hash,3)),i.worktreeBlobs.set(D,{hash:U.hash,mode:U.mode}),i.conflicts.push({path:D,reason:"add-add"}),w(D,`CONFLICT (file location): ${A.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${D}.`,1);let K=t.get(A.path);K&&(K.merged={result:null,clean:!0}),h.add(A.path);continue}let _=o.get(A.path);i.entries.push(ft(D,_.mode,_.hash,3)),i.worktreeBlobs.set(D,{hash:_.hash,mode:_.mode}),i.conflicts.push({path:D,reason:"directory-rename"}),w(D,`CONFLICT (file location): ${A.path} added in ${g} inside a directory that was renamed in ${p}, suggesting it should perhaps be moved to ${D}.`,1);let F=t.get(A.path);F&&(F.merged={result:null,clean:!0}),h.add(A.path)}let S=new Set(i.entries.map(A=>A.path));for(let A of S){let D=t.get(A);D&&(D.merged={result:null,clean:!0})}for(let A of h){if(S.has(A))continue;let D=t.get(A);if(!D||D.merged.clean)continue;D.filemask===7&&!D.pathConflict||(D.merged={result:null,clean:!0})}return i}function Nf(e,t){let n=new Set;for(let s of e.keys()){let i=At(s);for(;i;)n.add(i),i=At(i)}let r=new Set;for(let s of t.keys()){let i=At(s);for(;i;)r.add(i),i=At(i)}let o=new Set;for(let s of n)r.has(s)||o.add(s);return o}function _f(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=At(o)??"";e.has(s)&&r.add(s)}for(let o of[...r]){let s=At(o);for(;s;)e.has(s)&&!r.has(s)&&r.add(s),s=At(s)}return r}function Ff(e,t){let n=new Map;for(let r of e){let o=At(r.oldPath),s=At(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=At(o),s=At(s)}}return n}function Uf(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 Bf(e,t,n){let r=At(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=At(r)}let o=t.get("");return o!==void 0&&!n.has(o)?`${o}/${e}`:null}function At(e){let t=e.lastIndexOf("/");return t===-1?"":e.slice(0,t)}async function Wf(e,t,n,r,o,s,i,a,c,f=!1,l){let d=f?a.get(n):c.get(n),m=f?i:s;if(d.hash===m.hash){t.entries.push(ft(n,d.mode,d.hash)),t.msgBuf.push({sortKey:r,subOrder:0,text:`Auto-merging ${r}`});return}let h=await zf(e,o,s,i,l,f?{oursPath:r,theirsPath:n}:{oursPath:n,theirsPath:r},8);if(d.hash===h.hash)t.entries.push(ft(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(xt(n,d,2)),t.entries.push(ft(n,i.mode,h.hash,3));let p=await $o(e,d.hash,h.hash,d.mode,l);t.worktreeBlobs.set(n,{hash:p,mode:d.mode})}else{t.entries.push(ft(n,s.mode,h.hash,2)),t.entries.push(xt(n,d,3));let p=await $o(e,h.hash,d.hash,s.mode,l);t.worktreeBlobs.set(n,{hash:p,mode:s.mode})}}async function zf(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(yn(t.mode)||yn(n.mode)||yn(r.mode))return{hash:n.hash,conflict:!0};let a=await se(e,t.hash),c=await se(e,n.hash),f=await se(e,r.hash);if(Te(c)||Te(f)||Te(a))return{hash:n.hash,conflict:!0};let l=vt(a),d=vt(c),m=vt(f),u=o?.conflictStyle,h=ps(d,l,m,{conflictStyle:u});if(!h.conflict)return{hash:await Qi(e,h.result),conflict:!1};let p=o?.a??"HEAD",g=o?.b??"theirs",w=s?.oursPath?`${p}:${s.oursPath}`:p,R=s?.theirsPath?`${g}:${s.theirsPath}`:g,x=hr(c,a,f,{a:w,b:R,markerSize:i??7,conflictStyle:u});return{hash:await He(e,"blob",Jn.encode(x)),conflict:!0}}async function $o(e,t,n,r,o){let s=await se(e,t),i=await se(e,n),a=hr(s,"",i,{a:o?.a??"HEAD",b:o?.b??"theirs",conflictStyle:o?.conflictStyle});return He(e,"blob",Jn.encode(a))}function xt(e,t,n=0){return ft(e,t.mode,t.hash,n)}function ft(e,t,n,r=0){return{path:e,mode:parseInt(t,8),hash:n,stage:r,stat:Se()}}async function qh(e,t,n,r){let o=[...r.entries],s=[...r.conflicts],i=[...r.msgBuf],a=new Map(r.worktreeBlobs);function c(u,h,p=0){i.push({sortKey:u,subOrder:p,text:h})}for(let u of[...t.keys()].sort()){let h=t.get(u);if(h.merged.clean){h.merged.result?.hash&&o.push(_e(u,h.merged.result.hash,h.merged.result.mode));continue}await zh(e,h,n,o,s,c,a)}i.sort((u,h)=>(u.sortKey<h.sortKey?-1:u.sortKey>h.sortKey?1:0)||u.subOrder-h.subOrder);let f=i.map(u=>u.text),l=[],d=new Set;for(let u of o)u.stage===0&&(l.push(u),d.add(u.path));for(let[u,h]of a)d.has(u)||l.push(_e(u,h.hash,h.mode));l.sort((u,h)=>Ie(u.path,h.path));let m=await Fe(e,l);return{entries:o,conflicts:s,messages:f,resultTree:m}}async function zh(e,t,n,r,o,s,i){let a=t.path,[c,f,l]=t.stages,d=c?.hash??null,m=f?.hash??null,u=l?.hash??null;if(m===null&&u!==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(_e(a,d,c.mode,1)),r.push(_e(a,u,l.mode,3)),i.set(a,{hash:u,mode:l.mode});return}if(u===null&&m!==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(_e(a,d,c.mode,1)),r.push(_e(a,m,f.mode,2)),i.set(a,{hash:m,mode:f.mode});return}if(d===null&&m!==null&&u!==null){if(m===u){r.push(_e(a,m,f.mode));return}s(a,`Auto-merging ${a}`,0);let h=await se(e,m),p=await se(e,u);if(Te(h)||Te(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(_e(a,m,f.mode,2)),r.push(_e(a,u,l.mode,3)),i.set(a,{hash:m,mode:f.mode});return}let g=vt(""),w=vt(h),R=vt(p),x=ps(w,g,R,{conflictStyle:n?.conflictStyle});if(!x.conflict){let E=await Qi(e,x.result);r.push(_e(a,E,f.mode));return}o.push({path:a,reason:"add-add"}),s(a,`CONFLICT (add/add): Merge conflict in ${a}`,1),r.push(_e(a,m,f.mode,2)),r.push(_e(a,u,l.mode,3));let b=hr(h,"",p,{a:n?.a??"HEAD",b:n?.b??"theirs",conflictStyle:n?.conflictStyle}),y=await He(e,"blob",Jn.encode(b));i.set(a,{hash:y,mode:f.mode});return}if(d!==null&&m!==null&&u!==null){if(m===d){r.push(_e(a,u,l.mode));return}if(u===d){r.push(_e(a,m,f.mode));return}if(m===u){r.push(_e(a,m,f.mode));return}if(s(a,`Auto-merging ${a}`,0),yn(c.mode)||yn(f.mode)||yn(l.mode)){o.push({path:a,reason:"content"}),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(_e(a,d,c.mode,1)),r.push(_e(a,m,f.mode,2)),r.push(_e(a,u,l.mode,3)),i.set(a,{hash:m,mode:f.mode});return}let h=await se(e,d),p=await se(e,m),g=await se(e,u);if(Te(p)||Te(g)||Te(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(_e(a,d,c.mode,1)),r.push(_e(a,m,f.mode,2)),r.push(_e(a,u,l.mode,3)),i.set(a,{hash:m,mode:f.mode});return}let w=vt(h),R=vt(p),x=vt(g),b=ps(R,w,x,{conflictStyle:n?.conflictStyle});if(b.conflict){let y=t.pathnames[1],E=t.pathnames[2],k=y!==a||E!==a,C={path:a,reason:"content"};k&&(y!==a&&(C.oursOrigPath=y),E!==a&&(C.theirsOrigPath=E)),o.push(C),s(a,`CONFLICT (content): Merge conflict in ${a}`,1),r.push(_e(a,d,c.mode,1)),r.push(_e(a,m,f.mode,2)),r.push(_e(a,u,l.mode,3));let P=k?`${n?.a??"HEAD"}:${y}`:n?.a??"HEAD",I=k?`${n?.b??"theirs"}:${E}`:n?.b??"theirs",v=hr(p,h,g,{a:P,b:I,conflictStyle:n?.conflictStyle}),T=await He(e,"blob",Jn.encode(v));i.set(a,{hash:T,mode:f.mode})}else{let y=await Qi(e,b.result);r.push(_e(a,y,f.mode))}return}}var Kh=200;async function Kf(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],m=(await j(e,d)).tree,u=null;if(o>=Kh)u=f;else{let g=await Ut(e,c,d);g.length===0?u=null:g.length===1?u=(await j(e,g[0])).tree:u=await Kf(e,c,d,g,o+1)}let h=await Bt(e,u,f,m);f=await Vh(e,h,o);let p=on({type:"commit",tree:f,parents:[c,d],author:Lf,committer:Lf,message:"merged common ancestors"});c=await He(e,"commit",p)}return f}async function Vh(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,m=s(a.path,1),u=s(l,2),h=s(d,3);if(u&&h){let p=Ar.decode((await ye(e,u.hash)).content),g=Ar.decode((await ye(e,h.hash)).content),w=m?Ar.decode((await ye(e,m.hash)).content):"",R=8+n*2,x=i.a??"Temporary merge branch 1",b=i.b??"Temporary merge branch 2",y=hr(p,w,g,{a:`${x}:${l}`,o:i.o,b:`${b}:${d}`,markerSize:R}),E=await He(e,"blob",Jn.encode(y));r.push({path:l,mode:u.mode,hash:E,stage:0,stat:Se()}),r.push({path:d,mode:h.mode,hash:E,stage:0,stat:Se()});continue}else if(u){r.push({...u,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=Ar.decode((await ye(e,c.hash)).content),d=Ar.decode((await ye(e,f.hash)).content),m=a.reason==="content"?s(a.path,1):null,u=m?Ar.decode((await ye(e,m.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,R=h?`${g}:${a.theirsOrigPath??a.path}`:g,x=hr(l,u,d,{a:w,o:i.o,b:R,markerSize:i.markerSize}),b=await He(e,"blob",Jn.encode(x));r.push({path:a.path,mode:c.mode,hash:b,stage:0,stat:Se()})}else c?r.push({...c,stage:0}):f&&r.push({...f,stage:0})}return r.sort((a,c)=>Ie(a.path,c.path)),Fe(e,r)}async function Qi(e,t){let n=t.map(Xi);if(n.length===0)return He(e,"blob",Jn.encode(""));let s=(t[t.length-1]??"").endsWith("\0")?n.join(`
|
|
250
250
|
`):`${n.join(`
|
|
251
251
|
`)}
|
|
252
|
-
`;return He(e,"blob",Jn.encode(s))}function _e(e,t,n,r=0){let o=typeof n=="string"?parseInt(n,8):n;return{path:e,mode:o,hash:t,stage:r,stat:Se()}}function
|
|
252
|
+
`;return He(e,"blob",Jn.encode(s))}function _e(e,t,n,r=0){let o=typeof n=="string"?parseInt(n,8):n;return{path:e,mode:o,hash:t,stage:r,stat:Se()}}function Zi(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 gs(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}
|
|
253
253
|
${e.join(" ")}
|
|
254
254
|
Merge with strategy ort failed.
|
|
255
255
|
`;let c=e.map(l=>` ${l}`).join(`
|
|
@@ -274,13 +274,13 @@ ${i}
|
|
|
274
274
|
Please move or remove them before you ${n}.
|
|
275
275
|
`)}let s=r==="merge"?"Merge with strategy ort failed.":`fatal: ${r} failed`;return`${o.join("")}Aborting
|
|
276
276
|
${s}
|
|
277
|
-
`}async function $n(e,t,n,r){let o=await z(e),s=await
|
|
277
|
+
`}async function $n(e,t,n,r){let o=await z(e),s=await le(e,n);if(!r.skipStagedChangeCheck&&e.workTree){let h=new Map(Ne(o).map(g=>[g.path,g])),p=[];for(let[g,w]of h){let R=s.get(g);(!R||R.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 Ji(e,o,s);let w=r.operationName??"merge",R=r.callerCommand??"merge";return{ok:!1,stdout:"",stderr:gs(g,w,R,"local","staged"),exitCode:r.errorExitCode??2,failureKind:"staged"}}}if(e.workTree&&r.preflightOnewayCheck){let h=await or(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 Ji(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(),R=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&&R.length>0?x=qf(w,R,p,g):R.length>0?x=gs(R,p,g,"untracked","worktree"):x=gs(w,p,g,"local","worktree"),{ok:!1,stdout:"",stderr:x,exitCode:r.errorExitCode??2,failureKind:"worktree"}}}if(e.workTree){let h=await or(e,[{label:"current",treeHash:n},{label:"target",treeHash:t.resultTree}],o,{mergeFn:eo,updateWorktree:!0,reset:!1,errorExitCode:r.errorExitCode??2,operationName:r.operationName??"merge",allowStagedChanges:!!r.preflightOnewayCheck});if(!h.success){await Ji(e,o,s);let p=r.operationName??"merge",g=r.callerCommand??"merge",w=h.errors.filter(y=>y.error==="WOULD_OVERWRITE"||y.error==="NOT_UPTODATE_FILE").map(y=>y.path).sort(),R=h.errors.filter(y=>y.error==="WOULD_LOSE_UNTRACKED_OVERWRITTEN"||y.error==="WOULD_LOSE_UNTRACKED_REMOVED").map(y=>y.path).sort(),x=[];w.length>0&&x.push(gs(w,p,g,"local","worktree")),R.length>0&&x.push(gs(R,p,g,"untracked","worktree"));let b;return x.length>1?b=qf(w,R,p,g):b=x[0]??"",{ok:!1,stdout:"",stderr:b,exitCode:r.errorExitCode??2,failureKind:"worktree"}}await De(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)=>Ie(h.path,p.path)||h.stage-p.stage);let d={version:2,entries:l};await fe(e,d);let m=l.filter(h=>h.stage===0),u=await Fe(e,m);return{ok:!0,finalIndex:d,mergedTreeHash:u}}async function Ji(e,t,n){if(e.workTree)for(let r of t.entries){if(r.stage!==0||n.has(r.path))continue;let o=H(e.workTree,r.path);await e.fs.exists(o)||await dt(e,{path:r.path,hash:r.hash,mode:r.mode})}}ce();ze();we();Ae();Xt();function Vf(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:V.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 F=await t?.hooks?.preCherryPick?.({repo:s,mode:"abort",commitRef:null});if(de(F))return{stdout:"",stderr:F.message??"",exitCode:1};let U=await Xh(s,r.env);return U.exitCode===0&&await t?.hooks?.postCherryPick?.({repo:s,mode:"abort",commitHash:null,hadConflicts:!1}),U}if(n.continue){let F=await t?.hooks?.preCherryPick?.({repo:s,mode:"continue",commitRef:null});if(de(F))return{stdout:"",stderr:F.message??"",exitCode:1};let U=await Zh(s,r.env);if(U.exitCode===0){let L=await Y(s);await t?.hooks?.postCherryPick?.({repo:s,mode:"continue",commitHash:L,hadConflicts:!1})}return U}if(n.skip)return Yh(s,r.env);let i=n.commit;if(!i)return O("you must specify a commit to cherry-pick");let a=await t?.hooks?.preCherryPick?.({repo:s,mode:"pick",commitRef:i});if(de(a))return{stdout:"",stderr:a.message??"",exitCode:1};let c=await je(s,i);if(M(c))return c;let f=c.hash,l=c.commit,d=await Qe(s);if(M(d))return d;let m=await z(s);if(n.noCommit){let F=m.entries.filter(U=>U.stage>0);if(F.length>0){let K=F.slice(0,10).map(J=>`${J.path}: unmerged (${J.hash})`).join(`
|
|
278
278
|
`),te=F.length>10?`
|
|
279
279
|
...`:"";return G(`${K}${te}
|
|
280
280
|
error: your index file is unmerged.
|
|
281
281
|
fatal: cherry-pick failed
|
|
282
|
-
`,128)}}else{let F=
|
|
283
|
-
`);if(F)return F}let
|
|
282
|
+
`,128)}}else{let F=Rn(m,"Cherry-picking",`fatal: cherry-pick failed
|
|
283
|
+
`);if(F)return F}let u=await j(s,d),p=!!n["record-origin"]?Jh(l.message,f):l.message;if(s.workTree&&!n.noCommit){let F=await le(s,u.tree);if(Un(m,F))return G(`error: your local changes would be overwritten by cherry-pick.
|
|
284
284
|
hint: commit your changes or stash them to proceed.
|
|
285
285
|
fatal: cherry-pick failed
|
|
286
286
|
`,128)}if(l.parents.length>1){if(!n.mainline)return G(`error: commit ${f} is a merge but no -m option was given.
|
|
@@ -289,7 +289,7 @@ fatal: cherry-pick failed
|
|
|
289
289
|
fatal: cherry-pick failed
|
|
290
290
|
`,128)}else if(n.mainline)return G(`error: mainline was specified but commit is not a merge.
|
|
291
291
|
fatal: cherry-pick failed
|
|
292
|
-
`,128);let g;if(l.parents.length===0)g=await Fe(s,[]);else{let F=l.parents.length>1?n.mainline-1:0,U=l.parents[F];if(!U)throw new Error("unreachable: parent must exist");g=(await j(s,U)).tree}let w=X(f),
|
|
292
|
+
`,128);let g;if(l.parents.length===0)g=await Fe(s,[]);else{let F=l.parents.length>1?n.mainline-1:0,U=l.parents[F];if(!U)throw new Error("unreachable: parent must exist");g=(await j(s,U)).tree}let w=X(f),R=ue(l.message),x=await xe(s,"merge.conflictstyle")??"merge",b={a:"HEAD",b:R?`${w} (${R})`:w,conflictStyle:x},y=await Bt(s,g,u.tree,l.tree,b);if(y.conflicts.length===0&&y.resultTree===u.tree){if(n.noCommit)return{stdout:"",stderr:"",exitCode:0};await Z(s,"CHERRY_PICK_HEAD",f),await Z(s,"ORIG_HEAD",d),await Me(s,"MERGE_MSG",p);let F=y.messages.length>0?`${y.messages.join(`
|
|
293
293
|
`)}
|
|
294
294
|
`:"",U=await at(s,{fromCommit:!0});return{stdout:`${F}${U}`,stderr:`The previous cherry-pick is now empty, possibly due to conflict resolution.
|
|
295
295
|
If you wish to commit it anyway, use:
|
|
@@ -297,13 +297,13 @@ If you wish to commit it anyway, use:
|
|
|
297
297
|
git commit --allow-empty
|
|
298
298
|
|
|
299
299
|
Otherwise, please use 'git cherry-pick --skip'
|
|
300
|
-
`,exitCode:1}}let
|
|
300
|
+
`,exitCode:1}}let E=await $n(s,y,u.tree,{labels:b,errorExitCode:128,operationName:"merge",callerCommand:"cherry-pick",skipStagedChangeCheck:!0,preflightOnewayCheck:!!n.noCommit});if(!E.ok)return E;if(y.conflicts.length>0){let F=y.messages.join(`
|
|
301
301
|
`);return await t?.hooks?.postCherryPick?.({repo:s,mode:"pick",commitHash:null,hadConflicts:!0}),n.noCommit?{stdout:F?`${F}
|
|
302
302
|
`:"",stderr:`error: could not apply ${w}... ${ue(l.message)}
|
|
303
303
|
hint: after resolving the conflicts, mark the corrected paths
|
|
304
304
|
hint: with 'git add <paths>' or 'git rm <paths>'
|
|
305
305
|
hint: Disable this message with "git config set advice.mergeConflict false"
|
|
306
|
-
`,exitCode:1}:(await Z(s,"CHERRY_PICK_HEAD",f),await Z(s,"ORIG_HEAD",d),await
|
|
306
|
+
`,exitCode:1}:(await Z(s,"CHERRY_PICK_HEAD",f),await Z(s,"ORIG_HEAD",d),await Me(s,"MERGE_MSG",p),{stdout:F?`${F}
|
|
307
307
|
`:"",stderr:`error: could not apply ${w}... ${ue(l.message)}
|
|
308
308
|
hint: After resolving the conflicts, mark them with
|
|
309
309
|
hint: "git add/rm <pathspec>", then run
|
|
@@ -312,67 +312,67 @@ hint: You can instead skip this commit with "git cherry-pick --skip".
|
|
|
312
312
|
hint: To abort and get back to the state before "git cherry-pick",
|
|
313
313
|
hint: run "git cherry-pick --abort".
|
|
314
314
|
hint: Disable this message with "git config set advice.mergeConflict false"
|
|
315
|
-
`,exitCode:1})}let k=
|
|
316
|
-
`)[0]??"",
|
|
315
|
+
`,exitCode:1})}let k=E.mergedTreeHash;if(n.noCommit)return{stdout:"",stderr:"",exitCode:0};let C=await nt(s,r.env);if(M(C))return C;let P=await bt(s,k,[d],l.author,C,p);await Nt(s),await Ot(s);let I=await Q(s),v=p.split(`
|
|
316
|
+
`)[0]??"",T=I?.type==="symbolic"?I.target:"HEAD";await oe(s,r.env,T,d,P,`cherry-pick: ${v}`,I?.type==="symbolic");let N=I?.type==="symbolic"?Pe(I.target):"detached HEAD",S=u.tree,A=await mn(s,S,k,l.author,C,!0),D=jt(N,P,p),_=y.messages.length>0?`${y.messages.join(`
|
|
317
317
|
`)}
|
|
318
|
-
`:"";return await t?.hooks?.postCherryPick?.({repo:s,mode:"pick",commitHash:P,hadConflicts:!1}),{stdout:`${_}${
|
|
319
|
-
${
|
|
318
|
+
`:"";return await t?.hooks?.postCherryPick?.({repo:s,mode:"pick",commitHash:P,hadConflicts:!1}),{stdout:`${_}${D}
|
|
319
|
+
${A}`,stderr:"",exitCode:0}}})}async function Yh(e,t){if(!await B(e,"CHERRY_PICK_HEAD"))return G(`error: no cherry-pick in progress
|
|
320
320
|
fatal: cherry-pick failed
|
|
321
|
-
`,128);let r=await Y(e);if(!r)return
|
|
321
|
+
`,128);let r=await Y(e);if(!r)return O("unable to resolve HEAD");let o=await j(e,r),s=await z(e),i=await Or(e,o.tree,s,r);if(!i.success){let a=i.errorOutput;return{...a,stderr:a.stderr+`error: failed to skip the commit
|
|
322
322
|
fatal: cherry-pick failed
|
|
323
|
-
`}}return await
|
|
323
|
+
`}}return await fe(e,{version:2,entries:i.newEntries}),await De(e,i.worktreeOps),await oe(e,t,"HEAD",r,r,`reset: moving to ${r}`),await Nt(e),{stdout:"",stderr:"",exitCode:0}}async function Xh(e,t){return await B(e,"CHERRY_PICK_HEAD")?Bn(e,t,{operationRef:"CHERRY_PICK_HEAD",noOpError:G(`error: no cherry-pick or revert in progress
|
|
324
324
|
fatal: cherry-pick failed
|
|
325
|
-
`,128),operationName:"cherry-pick",clearState:
|
|
325
|
+
`,128),operationName:"cherry-pick",clearState:Nt,origHeadAsTargetRev:!0}):await B(e,"REVERT_HEAD")?Bn(e,t,{operationRef:"REVERT_HEAD",noOpError:G(`error: no cherry-pick or revert in progress
|
|
326
326
|
fatal: cherry-pick failed
|
|
327
|
-
`,128),operationName:"cherry-pick",clearState:
|
|
327
|
+
`,128),operationName:"cherry-pick",clearState:Ot,origHeadAsTargetRev:!0}):G(`error: no cherry-pick or revert in progress
|
|
328
328
|
fatal: cherry-pick failed
|
|
329
329
|
`,128)}async function Zh(e,t){let n=await B(e,"CHERRY_PICK_HEAD");if(!n)return G(`error: no cherry-pick or revert in progress
|
|
330
330
|
fatal: cherry-pick failed
|
|
331
|
-
`,128);let r=await z(e),o=
|
|
332
|
-
`,1);let a=await
|
|
331
|
+
`,128);let r=await z(e),o=Rn(r,"Committing");if(o)return o;let s=await j(e,n),i=await $e(e,"MERGE_MSG");if(!i)return G(`Aborting commit due to empty commit message.
|
|
332
|
+
`,1);let a=await $e(e,"SQUASH_MSG");a&&(i=a+i),i=$t(i);let c=Ne(r),f=await Fe(e,c),l=await Qe(e);if(M(l))return l;let m=(await j(e,l)).tree,u=await nt(e,t);if(M(u))return u;let h=Gt(i),p=await bt(e,f,[l],s.author,u,h);await Nt(e),await Ot(e),await be(e,"SQUASH_MSG");let g=await Q(e),w=ue(h),R=g?.type==="symbolic"?g.target:"HEAD";await oe(e,t,R,l,p,`commit (cherry-pick): ${w}`,g?.type==="symbolic");let x=g?.type==="symbolic"?Pe(g.target):"detached HEAD",b=await mn(e,m,f,s.author,u,!0);return{stdout:`${jt(x,p,i)}
|
|
333
333
|
${b}`,stderr:"",exitCode:0}}function Jh(e,t){let n=`(cherry picked from commit ${t})`,r=e.replace(/\n+$/,""),o=r.lastIndexOf(`
|
|
334
334
|
`),s=o===-1?r:r.slice(o+1);return/^\(cherry picked from commit [0-9a-f]+\)$/.test(s)?`${r}
|
|
335
335
|
${n}
|
|
336
336
|
`:`${r}
|
|
337
337
|
|
|
338
338
|
${n}
|
|
339
|
-
`}
|
|
339
|
+
`}ie();Be();Js();Ce();me();function Yf(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:V.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=Ye(s);if(i)return i;let a=s.workTree,c=n["dry-run"],f=n.force,l=n.directories,d=n.removeIgnored,m=n.onlyIgnored;if(!f&&!c&&await xe(s,"clean.requireForce")!=="false")return O("clean.requireForce defaults to true and neither -i, -n, nor -f given; refusing to clean");let u=await z(s),h=new Set(u.entries.map(k=>k.path)),p=ut(s,r.cwd),g=n.pathspec,w=g.length>0?g.map(k=>Ue(k,p)):null,R=n.exclude?[n.exclude]:[],x=await Xf(s,a,"",{trackedPaths:h,removeDirs:l,removeIgnored:d,onlyIgnored:m,extraExcludes:R}),b;w?b=x.filter(k=>Ee(w,k.path)):b=x,b.sort((k,C)=>k.path<C.path?-1:k.path>C.path?1:0);let y=[];if(c)for(let k of b){let C=k.isDir?`Would remove ${k.path}/`:`Would remove ${k.path}`;y.push(C)}else for(let k of b){let C=H(a,k.path);k.isDir?(await r.fs.rm(C,{recursive:!0}),y.push(`Removing ${k.path}/`)):(await r.fs.rm(C),y.push(`Removing ${k.path}`))}return{stdout:y.length>0?`${y.join(`
|
|
340
340
|
`)}
|
|
341
|
-
`:"",stderr:"",exitCode:0}}})}async function Xf(e,t,n,r){let o=[],s=!r.removeIgnored,i=null;if(s||r.onlyIgnored){i=r._ignore??await $r(e);let c=
|
|
342
|
-
`),l=
|
|
343
|
-
`)){let s=o.trim();s.length===40&&r.add(s)}return r}catch{return new Set}}async function ep(e,t){let n=
|
|
341
|
+
`:"",stderr:"",exitCode:0}}})}async function Xf(e,t,n,r){let o=[],s=!r.removeIgnored,i=null;if(s||r.onlyIgnored){i=r._ignore??await $r(e);let c=H(t,".gitignore");try{let f=await e.fs.readFile(c);i=rr(i,f,n,c)}catch{}if(!r._ignore&&r.extraExcludes.length>0){let f=r.extraExcludes.join(`
|
|
342
|
+
`),l=as(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=H(t,c),l=n?`${n}/${c}`:c,d=await e.fs.stat(f);if(d.isDirectory){let m=i&&fn(i,l,!0)==="ignored",u=Qh(r.trackedPaths,l),h=()=>Xf(e,f,l,{...r,_ignore:i??void 0});if(r.onlyIgnored){if(m&&!u){r.removeDirs&&o.push({path:l,isDir:!0});continue}let p=await h();!u&&r.removeDirs?p.length>0&&o.push({path:l,isDir:!0}):o.push(...p)}else if(u){let p=await h();o.push(...p)}else if(!(m&&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 m=i&&fn(i,l,!1)==="ignored";r.onlyIgnored?m&&o.push({path:l,isDir:!1}):m&&s||o.push({path:l,isDir:!1})}}return o}function Qh(e,t){let n=`${t}/`;for(let r of e)if(r.startsWith(n))return!0;return!1}ie();Be();Tn();Ce();ce();me();ze();we();Gn();ce();me();var bs=2147483647;async function Hr(e){let t=H(e.gitDir,"shallow");try{let n=await e.fs.readFile(t),r=new Set;for(let o of n.split(`
|
|
343
|
+
`)){let s=o.trim();s.length===40&&r.add(s)}return r}catch{return new Set}}async function ep(e,t){let n=H(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(`
|
|
344
344
|
`)+`
|
|
345
|
-
`)}async function $o(e){return(await Ar(e)).size>0}async function Hr(e,t,n){let r=n??await Ar(e);for(let o of t.shallow)r.add(o);for(let o of t.unshallow)r.delete(o);await ep(e,r)}async function Zf(e,t,n,r){if(n>=ws)return{shallow:[],unshallow:[...r]};let o=new Map,s=[];for(let f of t)!o.has(f)&&await Vt(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 Vt(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}}qe();Gn();ht();ae();var Io=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]),tp=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]),Oo=64,np=4,Qi=4096,Jf=65536,rp=127;function sp(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=ip(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])^Io[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<=Oo)continue;let h=[],p=m.length/Oo;for(let g=0;g<Oo;g++)h.push(m[Math.floor(g*p)]);c.set(u,h),s[u]=Oo}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 op(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=el(i,a,r),a=el(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])^Io[f>>>23],l++;f=f>>>0;let u=d,m=0,h=0;for(;u<o;){if(h<Qi){f^=tp[t[u-16]],f=((f<<8|t[u])^Io[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,E=s.byteLength-b,R=o-u;if(E>R&&(E=R),E<=h)break;let k=0;for(;k<E&&s[b+k]===t[u+k];)k++;if(k>h&&(h=k,m=b,h>=Qi))break}}if(h<np)c(2),l===0&&a++,i[a++]=t[u++],l++,l===rp&&(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>Jf?h-Jf: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<Qi){f=0;for(let y=-16;y<0;y++)f=(f<<8|t[u+y])^Io[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 Qf={blob:0,tree:1,commit:2,tag:3};function So(e,t){let n=t?.window??10,r=t?.depth??50,o=e.slice().sort((f,l)=>{let d=Qf[f.type]??99,u=Qf[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 E=op(x,l.content,b);E&&(!u||E.byteLength<u.byteLength)&&(u=E,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(sp(l.content)),c.push(l.hash)}return i}function ip(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 el(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}xr();ge();ae();gn();Pr();Vs();async function ap(e,t,n,r,o){let s=o??r,i=new Set;for(let l of n)await bs(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 ys(e,l,i,f,c,r);return{count:c.length,objects:cp(c)}}async function Dr(e,t,n,r,o){let{count:s,objects:i}=await ap(e,t,n,r,o);return{count:s,objects:fp(e,i)}}async function*cp(e){for(let t of e)yield t}async function*fp(e,t){for await(let n of t){let r=await be(e,n.hash);yield{hash:n.hash,type:n.type,content:r.content}}}async function Mr(e){let t=[];for await(let n of e.objects)t.push(n);return t}async function bs(e,t,n,r){if(n.has(t)||(n.add(t),!await Vt(e,t)))return;let o=await be(e,t);switch(o.type){case"commit":{let s=nn(o.content);if(await bs(e,s.tree,n,r),!r?.has(t))for(let i of s.parents)await bs(e,i,n,r);break}case"tree":{let s=_n(o.content);for(let i of s.entries)await bs(e,i.hash,n,r);break}case"tag":{let s=Kt(o.content);await bs(e,s.object,n,r);break}case"blob":break}}async function ys(e,t,n,r,o,s){if(r.has(t)||n.has(t))return;r.add(t);let i=await be(e,t);switch(o.push({hash:t,type:i.type}),i.type){case"commit":{let a=nn(i.content);if(await ys(e,a.tree,n,r,o,s),!s?.has(t))for(let c of a.parents)await ys(e,c,n,r,o,s);break}case"tree":{let a=_n(i.content);for(let c of a.entries)await ys(e,c.hash,n,r,o,s);break}case"tag":{let a=Kt(i.content);await ys(e,a.object,n,r,o,s);break}case"blob":break}}var lp=new TextEncoder,To=new TextDecoder,tl=65520,dp=new Uint8Array([48,48,48,48]),$R=new Uint8Array([48,48,48,49]),OR=new Uint8Array([48,48,48,50]);function On(e){let t=typeof e=="string"?lp.encode(e):e,n=4+t.byteLength;if(n>tl)throw new Error(`pkt-line too long: ${n} bytes (max ${tl})`);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 ea(){return dp.slice()}function vo(...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 jr(e){let t=[],n=0;for(;n<e.byteLength;){if(n+4>e.byteLength)throw new Error("Truncated pkt-line header");let r=To.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===1){t.push({type:"delim"}),n+=4;continue}if(o===2){t.push({type:"response-end"}),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 Ao(e){if(e.type!=="data")return"";let t=To.decode(e.data);return t.endsWith(`
|
|
346
|
-
`)?t.slice(0,-1):t}var up=1,mp=2,hp=3;function
|
|
347
|
-
`));for(let
|
|
348
|
-
`));if(i?.existingShallows)for(let
|
|
345
|
+
`)}async function Oo(e){return(await Hr(e)).size>0}async function Dr(e,t,n){let r=n??await Hr(e);for(let o of t.shallow)r.add(o);for(let o of t.unshallow)r.delete(o);await ep(e,r)}async function Zf(e,t,n,r){if(n>=bs)return{shallow:[],unshallow:[...r]};let o=new Map,s=[];for(let f of t)!o.has(f)&&await Yt(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 m of d.parents)!o.has(m)&&await Yt(e,m)&&(o.set(m,l+1),s.push({hash:m,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}}Be();Gn();ht();ce();var So=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]),tp=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]),Io=64,np=4,ea=4096,Jf=65536,rp=127;function sp(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=ip(r);let o=r-1,s=new Uint32Array(r),i=[],a=-1>>>0;for(let m=n*16-16;m>=0;m-=16){let u=0;for(let h=1;h<=16;h++)u=(u<<8|e[m+h])^So[u>>>23];if(u=u>>>0,u===a)i[i.length-1].ptr=m+16;else{a=u;let h=u&o;i.push({ptr:m+16,val:u}),s[h]++}}let c=new Map;for(let m of i){let u=m.val&o,h=c.get(u);h||(h=[],c.set(u,h)),h.push(m)}for(let[m,u]of c){if(u.length<=Io)continue;let h=[],p=u.length/Io;for(let g=0;g<Io;g++)h.push(u[Math.floor(g*p)]);c.set(m,h),s[m]=Io}let f=new Uint32Array(r+1),l=[],d=0;for(let m=0;m<r;m++){f[m]=d;let u=c.get(m);if(u){for(let h of u)l.push(h);d+=u.length}}return f[r]=d,{src:e,hashMask:o,buckets:f,entries:l}}function op(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=el(i,a,r),a=el(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])^So[f>>>23],l++;f=f>>>0;let m=d,u=0,h=0;for(;m<o;){if(h<ea){f^=tp[t[m-16]],f=((f<<8|t[m])^So[f>>>23])>>>0;let p=f&e.hashMask,g=e.buckets[p],w=e.buckets[p+1];for(let R=g;R<w;R++){let x=e.entries[R];if(x.val!==f)continue;let b=x.ptr,y=s.byteLength-b,E=o-m;if(y>E&&(y=E),y<=h)break;let k=0;for(;k<y&&s[b+k]===t[m+k];)k++;if(k>h&&(h=k,u=b,h>=ea))break}}if(h<np)c(2),l===0&&a++,i[a++]=t[m++],l++,l===rp&&(i[a-l-1]=l,l=0),h=0;else{if(l>0){for(;u>0&&s[u-1]===t[m-1];)if(h++,u--,m--,a--,!(--l>0)){a--,l=-1;break}l>0&&(i[a-l-1]=l),l=0}let p=h>Jf?h-Jf:0;h-=p,c(8);let g=a++,w=128;if(u&255&&(i[a++]=u&255,w|=1),u&65280&&(i[a++]=u>>>8&255,w|=2),u&16711680&&(i[a++]=u>>>16&255,w|=4),u&4278190080&&(i[a++]=u>>>24&255,w|=8),h&255&&(i[a++]=h&255,w|=16),h&65280&&(i[a++]=h>>>8&255,w|=32),i[g]=w,m+=h,u+=h,h=p,u>4294967295&&(h=0),h<ea){f=0;for(let R=-16;R<0;R++)f=(f<<8|t[m+R])^So[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 Qf={blob:0,tree:1,commit:2,tag:3};function To(e,t){let n=t?.window??10,r=t?.depth??50,o=e.slice().sort((f,l)=>{let d=Qf[f.type]??99,m=Qf[l.type]??99;return d!==m?d-m: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},m=null,u=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=m?m.byteLength:l.content.byteLength/2|0;if(b<16)continue;let y=op(x,l.content,b);y&&(!m||y.byteLength<m.byteLength)&&(m=y,u=g.hash)}if(m&&u){d.delta=m,d.deltaBase=u;let p=s.get(u);d.depth=(p?.depth??0)+1}s.set(l.hash,d),i.push(d),a.length>=n&&(a.shift(),c.shift()),a.push(sp(l.content)),c.push(l.hash)}return i}function ip(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 el(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}xr();we();ce();wn();Pr();Ys();async function ap(e,t,n,r,o){let s=o??r,i=new Set;for(let l of n)await ys(e,l,i,s);let a=[...t];if(o&&r)for(let l of o)try{let d=await j(e,l);for(let m of d.parents)i.has(m)||a.push(m)}catch{}let c=[],f=new Set;for(let l of a)await Es(e,l,i,f,c,r);return{count:c.length,objects:cp(c)}}async function Mr(e,t,n,r,o){let{count:s,objects:i}=await ap(e,t,n,r,o);return{count:s,objects:fp(e,i)}}async function*cp(e){for(let t of e)yield t}async function*fp(e,t){for await(let n of t){let r=await ye(e,n.hash);yield{hash:n.hash,type:n.type,content:r.content}}}async function jr(e){let t=[];for await(let n of e.objects)t.push(n);return t}async function ys(e,t,n,r){if(n.has(t)||(n.add(t),!await Yt(e,t)))return;let o=await ye(e,t);switch(o.type){case"commit":{let s=sn(o.content);if(await ys(e,s.tree,n,r),!r?.has(t))for(let i of s.parents)await ys(e,i,n,r);break}case"tree":{let s=_n(o.content);for(let i of s.entries)await ys(e,i.hash,n,r);break}case"tag":{let s=Vt(o.content);await ys(e,s.object,n,r);break}case"blob":break}}async function Es(e,t,n,r,o,s){if(r.has(t)||n.has(t))return;r.add(t);let i=await ye(e,t);switch(o.push({hash:t,type:i.type}),i.type){case"commit":{let a=sn(i.content);if(await Es(e,a.tree,n,r,o,s),!s?.has(t))for(let c of a.parents)await Es(e,c,n,r,o,s);break}case"tree":{let a=_n(i.content);for(let c of a.entries)await Es(e,c.hash,n,r,o,s);break}case"tag":{let a=Vt(i.content);await Es(e,a.object,n,r,o,s);break}case"blob":break}}var lp=new TextEncoder,vo=new TextDecoder,tl=65520,dp=new Uint8Array([48,48,48,48]),IR=new Uint8Array([48,48,48,49]),SR=new Uint8Array([48,48,48,50]);function On(e){let t=typeof e=="string"?lp.encode(e):e,n=4+t.byteLength;if(n>tl)throw new Error(`pkt-line too long: ${n} bytes (max ${tl})`);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 ta(){return dp.slice()}function Ao(...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 Gr(e){let t=[],n=0;for(;n<e.byteLength;){if(n+4>e.byteLength)throw new Error("Truncated pkt-line header");let r=vo.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===1){t.push({type:"delim"}),n+=4;continue}if(o===2){t.push({type:"response-end"}),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 Ho(e){if(e.type!=="data")return"";let t=vo.decode(e.data);return t.endsWith(`
|
|
346
|
+
`)?t.slice(0,-1):t}var up=1,mp=2,hp=3;function na(e){let t=[],n=[],r=[],o=0;for(let a of e){if(a.type!=="data"||a.data.byteLength===0)continue;let c=a.data[0];if(c===void 0)continue;let f=a.data.subarray(1);switch(c){case up:t.push(f),o+=f.byteLength;break;case mp:n.push(vo.decode(f));break;case hp:r.push(vo.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}}ht();function ra(e){return e?e.type==="bearer"?{Authorization:`Bearer ${e.token}`}:{Authorization:`Basic ${btoa(`${e.username}:${e.password}`)}`}:{}}async function sa(e,t,n,r=globalThis.fetch){let o=e.replace(/\/+$/,""),s=await r(`${o}/info/refs?service=${t}`,{headers:{...ra(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=Gr(c);return pp(f,t)}function pp(e,t){let n=0,r=e[n];r?.type==="data"&&Ho(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;if(a.type!=="data")continue;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 m=l.slice(0,d),u=l.slice(d+1);if(!(m===ee&&u==="capabilities^{}")){if(u.endsWith("^{}")){let h=u.slice(0,-3),p=o.find(g=>g.name===h);p&&(p.peeledHash=m);continue}o.push({name:u,hash:m})}}return{refs:o,capabilities:s,symrefs:i}}var gp=["multi_ack_detailed","no-done","side-band-64k","ofs-delta","include-tag","shallow"];async function nl(e,t,n,r,o,s=globalThis.fetch,i){if(t.length===0)throw new Error("fetchPack requires at least one want");let a=sl(r,gp),c=[];c.push(On(`want ${t[0]} ${a.join(" ")}
|
|
347
|
+
`));for(let u=1;u<t.length;u++)c.push(On(`want ${t[u]}
|
|
348
|
+
`));if(i?.existingShallows)for(let u of i.existingShallows)c.push(On(`shallow ${u}
|
|
349
349
|
`));i?.depth!==void 0&&c.push(On(`deepen ${i.depth}
|
|
350
|
-
`)),c.push(
|
|
350
|
+
`)),c.push(ta());for(let u of n)c.push(On(`have ${u}
|
|
351
351
|
`));c.push(On(`done
|
|
352
|
-
`));let f=
|
|
352
|
+
`));let f=Ao(...c),l=e.replace(/\/+$/,""),d=await s(`${l}/git-upload-pack`,{method:"POST",headers:{"Content-Type":"application/x-git-upload-pack-request",...ra(o),"User-Agent":"just-git/1.0"},body:f});if(!d.ok)throw new Error(`HTTP ${d.status} fetching pack from ${l}`);let m=new Uint8Array(await d.arrayBuffer());return wp(m,a.includes("side-band-64k"))}function wp(e,t){let n=Gr(e),r=[],o=[],s=[],i=0;for(let d=0;d<n.length;d++){let m=n[d];if(!m||m.type==="flush"){i=d+1;continue}if(m.type!=="data")continue;let u=Ho(m);if(u.startsWith("shallow "))o.push(u.slice(8)),i=d+1;else if(u.startsWith("unshallow "))s.push(u.slice(10)),i=d+1;else if(u.startsWith("ACK ")||u==="NAK")r.push(u),i=d+1;else{i=d;break}}let a=n.slice(i);if(t){let{packData:d,progress:m,errors:u}=na(a);if(u.length>0)throw new Error(`Remote error: ${u.join("")}`);return{packData:d,acks:r,progress:m,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 bp=["report-status","side-band-64k","ofs-delta","delete-refs"];async function rl(e,t,n,r,o,s=globalThis.fetch){if(t.length===0)throw new Error("pushPack requires at least one command");let i=sl(r,bp),a=[],[c,...f]=t;if(!c)throw new Error("pushPack requires at least one command");a.push(On(`${c.oldHash} ${c.newHash} ${c.refName}\0${i.join(" ")}
|
|
353
353
|
`));for(let h of f)a.push(On(`${h.oldHash} ${h.newHash} ${h.refName}
|
|
354
|
-
`));a.push(
|
|
354
|
+
`));a.push(ta());let l;if(n&&n.byteLength>0){let h=Ao(...a);l=new Uint8Array(h.byteLength+n.byteLength),l.set(h,0),l.set(n,h.byteLength)}else l=Ao(...a);let d=e.replace(/\/+$/,""),m=await s(`${d}/git-receive-pack`,{method:"POST",headers:{"Content-Type":"application/x-git-receive-pack-request",...ra(o),"User-Agent":"just-git/1.0"},body:l});if(!m.ok)throw new Error(`HTTP ${m.status} pushing to ${d}`);let u=new Uint8Array(await m.arrayBuffer());return i.includes("report-status")?yp(u,i.includes("side-band-64k")):{unpackOk:!0,refResults:[],progress:[]}}function yp(e,t){let n,r=[];if(t){let a=Gr(e),{packData:c,progress:f,errors:l}=na(a);if(l.length>0)throw new Error(`Remote error: ${l.join("")}`);r=f,n=Gr(c)}else n=Gr(e);let o=!1,s,i=[];for(let a of n){if(a.type==="flush")break;let c=Ho(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 sl(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 ks=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 B(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 Zf(this.remote,t,r.depth,l);i=d,s=new Set(d.shallow),l.size>0&&(a=l)}let c=await oa(this.remote,t,n,s,a);if(!c)return{remoteRefs:o,objectCount:0,shallowUpdates:i};let f=await qs(this.local,c);return{remoteRefs:o,objectCount:f,shallowUpdates:i}}async push(t){let n=[],r=[];for(let s of t)s.newHash!==ee&&n.push(s.newHash),s.oldHash&&r.push(s.oldHash);if(n.length>0){let s=await oa(this.local,n,r);s&&await qs(this.remote,s)}let o=[];for(let s of t)try{let i=s.newHash===ee,a=s.oldHash??null;if(!i&&!s.ok&&s.oldHash&&!await Pn(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}}},Rs=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 sa(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 sa(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 nl(this.url,t,n,o,this.auth,this.fetchFn,r);if(i.packData.byteLength===0)return{remoteRefs:s,objectCount:0};let a=await qs(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!==ee&&l.newHash!==ee&&!l.ok&&!await Pn(this.local,l.oldHash,l.newHash))return{updates:t.map(m=>m===l?{...m,ok:!1,error:"non-fast-forward"}:{...m,ok:!1,error:"atomic push failed"})};let n=await this.ensurePushDiscovery(),r=t.map(l=>({oldHash:l.oldHash??ee,newHash:l.newHash,refName:l.name})),o=[],s=[],i=!1;for(let l of t)l.newHash!==ee&&(o.push(l.newHash),i=!0),l.oldHash&&l.oldHash!==ee&&s.push(l.oldHash);let a=null;i&&(a=await oa(this.local,o,s)??null);let c=await rl(this.url,r,a,n,this.auth,this.fetchFn);return{updates:t.map(l=>{let d=c.refResults.find(h=>h.name===l.name),m=d?.ok??c.unpackOk,u=d?.error??(!m&&c.unpackError?`unpack failed: ${c.unpackError}`:void 0);return{...l,ok:m,error:u}})}}};async function oa(e,t,n,r,o){let s=await Mr(e,t,n,r,o);if(s.count===0)return;let i=await jr(s),c=To(i).map(l=>({hash:l.hash,type:l.type,content:l.content,delta:l.delta,deltaBaseHash:l.deltaBase})),{data:f}=await Bs(c);return f}function Ep(e){if(!Do(e))return{url:e};try{let t=new URL(e);if(!t.username&&!t.password)return{url:e};let n={type:"basic",username:decodeURIComponent(t.username),password:decodeURIComponent(t.password)};return t.username="",t.password="",{url:t.href,embeddedAuth:n}}catch{return{url:e}}}function pr(e,t){let n=Ep(e);if(n.embeddedAuth&&t)try{t.set(new URL(n.url).origin,n.embeddedAuth)}catch{}return n}async function kp(e,t){let r=(await pe(e))[`remote "${t}"`];return r?.url?{name:t,url:r.url,fetchRefspec:r.fetch??"+refs/heads/*:refs/remotes/origin/*"}:null}function Do(e){return e.startsWith("http://")||e.startsWith("https://")}function ol(e){return e.startsWith("ssh://")||e.startsWith("git@")||e.startsWith("git+ssh://")}function il(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(Do(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 Rp(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 al(e,t,n){if(e.credentialProvider){let o=await e.credentialProvider(t);if(o)return o}let r=Rp(n);if(r)return r;if(e.credentialCache)try{return e.credentialCache.get(new URL(t).origin)}catch{return}}async function cl(e,t,n,r){let o=pr(t,e.credentialCache).url;if(Do(o)){let s=il(o,e.networkPolicy);if(s)throw new Error(s);let i=await al(e,o,n);return new Rs(e,o,i,e.fetchFn)}if(!r&&e.resolveRemote&&(r=await e.resolveRemote(o)??void 0),!r)throw ol(o)?new Error(`SSH transport is not supported. Use an HTTPS URL instead of '${o}'.`):new Error(`'${o}' does not appear to be a git repository`);return new ks(e,r)}async function Lr(e,t,n){let r=await kp(e,t);if(!r)return null;let o=pr(r.url,e.credentialCache).url;if(Do(o)){let i=il(o,e.networkPolicy);if(i)throw new Error(i);let a=n?await al(e,o,n):void 0;return{transport:new Rs(e,o,a,e.fetchFn),config:{...r,url:o}}}let s=(e.resolveRemote?await e.resolveRemote(o):null)??await tr(e.fs,o);if(!s){if(ol(o))throw new Error(`SSH transport is not supported. Use an HTTPS URL instead of '${o}'.`);return null}return{transport:new ks(e,s),config:{...r,url:o}}}Ae();tt();function fl(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:V.string().alias("b").describe("Checkout this branch instead of HEAD"),depth:V.number().describe("Create a shallow clone with history truncated to N commits")},handler:async(n,r)=>{let o=n.repository;if(!o)return O("You must specify a repository to clone.");let s=o.startsWith("http://")||o.startsWith("https://"),i=n.branch,a=null,c=o;if(s)c=pr(o,t?.credentialCache).url;else if(t?.resolveRemote&&(a=await t.resolveRemote(o)),a||(c=Ht(r.cwd,o),a=await tr(r.fs,c)),!a)return O(`repository '${o}' does not exist`);let f=n.directory;if(!f){let T;s||o.includes("://")?T=c.split("/").pop()??c:T=Br(c),T.endsWith(".git")&&(T=T.slice(0,-4)),f=T}let l=Ht(r.cwd,f),d=await t?.hooks?.preClone?.({repository:c,targetPath:l,bare:n.bare,branch:i??null});if(de(d))return G(d.message??"");if(await r.fs.exists(l))try{if((await r.fs.readdir(l)).length>0)return O(`destination path '${f}' already exists and is not an empty directory.`)}catch{return O(`destination path '${f}' already exists and is not an empty directory.`)}await r.fs.mkdir(l,{recursive:!0});let{ctx:m}=await zs(r.fs,l,{bare:n.bare}),u=t?{...m,hooks:t.hooks,credentialProvider:t.credentialProvider,identityOverride:t.identityOverride,fetchFn:t.fetchFn,networkPolicy:t.networkPolicy,resolveRemote:t.resolveRemote,credentialCache:t.credentialCache}:m,h=await pe(u);h['remote "origin"']={url:c,fetch:"+refs/heads/*:refs/remotes/origin/*"},await Je(u,h);let p;try{p=await cl(u,c,r.env,a??void 0)}catch(T){let N=T instanceof Error?T.message:"";return N.startsWith("network")?O(N):O(`repository '${o}' does not exist`)}let g=await p.advertiseRefs();if(g.length===0)return await t?.hooks?.postClone?.({repo:u,repository:c,targetPath:l,bare:n.bare,branch:i??null}),{stdout:"",stderr:`Cloning into '${f}'...
|
|
355
355
|
warning: You appear to have cloned an empty repository.
|
|
356
|
-
`,exitCode:0};let w=[],
|
|
357
|
-
`,exitCode:0};if(
|
|
358
|
-
`,exitCode:0};return await t?.hooks?.postClone?.({repo:
|
|
356
|
+
`,exitCode:0};let w=[],R=new Set;for(let T of g)T.name!=="HEAD"&&(R.has(T.hash)||(R.add(T.hash),w.push(T.hash)));let x=n.depth,b=x!==void 0&&x>0?{depth:x}:void 0;if(w.length>0){let T=await p.fetch(w,[],b);T.shallowUpdates&&await Dr(u,T.shallowUpdates)}let y=g.find(T=>T.name==="HEAD"),E=null,k=null,C=await nn(u,r.env),P=`clone: from ${c}`,I=p.headTarget;I?.startsWith("refs/heads/")&&g.some(T=>T.name===I)&&(E=I.slice(11),k=g.find(T=>T.name===I)?.hash??null);for(let T of g)if(T.name!=="HEAD"){if(T.name.startsWith("refs/heads/")){let N=T.name.slice(11),S=`refs/remotes/origin/${N}`;await Z(u,S,T.hash),await Ze(u,S,{oldHash:ee,newHash:T.hash,name:C.name,email:C.email,timestamp:C.timestamp,tz:C.tz,message:P}),!E&&y&&T.hash===y.hash&&(E=N,k=T.hash)}T.name.startsWith("refs/tags/")&&await Z(u,T.name,T.hash)}if(i){let T=g.find(N=>N.name===`refs/heads/${i}`);if(!T)return O(`Remote branch '${i}' not found in upstream origin`);E=i,k=T.hash}if(!E){let T=g.find(N=>N.name.startsWith("refs/heads/"));T&&(E=T.name.slice(11),k=T.hash)}if(n.bare)return E&&await Xe(u,"HEAD",`refs/heads/${E}`),await t?.hooks?.postClone?.({repo:u,repository:c,targetPath:l,bare:n.bare,branch:E}),{stdout:"",stderr:`Cloning into bare repository '${f}'...
|
|
357
|
+
`,exitCode:0};if(E&&await Xe(u,"refs/remotes/origin/HEAD",`refs/remotes/origin/${E}`),E&&k){await Z(u,`refs/heads/${E}`,k),await Xe(u,"HEAD",`refs/heads/${E}`);let T={oldHash:ee,newHash:k,name:C.name,email:C.email,timestamp:C.timestamp,tz:C.tz,message:P};await Ze(u,`refs/heads/${E}`,T),await Ze(u,"HEAD",T);let N=await pe(u);N[`branch "${E}"`]={remote:"origin",merge:`refs/heads/${E}`},await Je(u,N);let S=await j(u,k);await zc(u,S.tree);let A=await Ke(u,S.tree),D=Ns(A.map(_=>({path:_.path,mode:parseInt(_.mode,8),hash:_.hash,stage:0,stat:Se()})));await fe(u,D)}let v={stdout:"",stderr:`Cloning into '${f}'...
|
|
358
|
+
`,exitCode:0};return await t?.hooks?.postClone?.({repo:u,repository:c,targetPath:l,bare:n.bare,branch:E}),v}})}ie();ce();Ce();we();an();Ae();tt();is();Pr();function dl(e,t){e.command("describe",{description:"Give an object a human readable name based on an available ref",args:[q.string().name("committish").describe("Commit to describe").optional()],options:{tags:$().describe("Use any tag, not just annotated"),always:$().describe("Show abbreviated hash as fallback"),long:$().describe("Always output long format"),abbrev:V.number().describe("Abbreviation length"),dirty:V.string().describe("Append dirty marker if worktree has changes"),match:V.string().describe("Only consider tags matching glob"),exclude:V.string().describe("Exclude tags matching glob"),exactMatch:$().alias("exact-match").describe("Only output exact matches"),firstParent:$().alias("first-parent").describe("Only follow first parent"),candidates:V.number().describe("Consider N most recent tags")},transformArgs(n){return n.map(r=>r==="--dirty"?"--dirty=-dirty":r)},handler:async(n,r)=>{let o=await W(r.fs,r.cwd,t);if(M(o))return o;let s=o,i=n.committish,a=n.tags,c=n.always,f=n.long,l=n.abbrev??7,d=n.dirty,m=n.match,u=n.exclude,h=n.exactMatch,p=n.firstParent,g;if(i){let C=await We(s,i);if(!C)return O(`Not a valid object name ${i}`);try{g=await ve(s,C)}catch{return O(`Not a valid object name ${i}`)}}else g=await Y(s);if(!g)return O("your current branch does not have any commits yet");let w=await xp(s,a,m,u),R=new Map,x=!1;for(let C of w){C.timestamp===0&&(x=!0);let P=R.get(C.commitHash);P||(P=[],R.set(C.commitHash,P)),P.push(C)}let b=await Cp(s,g,R,p,h?0:void 0);if(!b){if(h)return O(`no tag exactly matches '${g}'`);if(c){let P=g.slice(0,Math.max(l,1));return d&&await ll(s)&&(P+=d),{stdout:P+`
|
|
359
359
|
`,stderr:"",exitCode:0}}let C;return!a&&x?C=`fatal: No annotated tags can describe '${g}'.
|
|
360
360
|
However, there were unannotated tags: try --tags.
|
|
361
|
-
`:w.length===0&&!a&&(await
|
|
361
|
+
`:w.length===0&&!a&&(await ge(s,"refs/tags")).length>0?C=`fatal: No annotated tags can describe '${g}'.
|
|
362
362
|
However, there were unannotated tags: try --tags.
|
|
363
363
|
`:C=`fatal: No names found, cannot describe anything.
|
|
364
|
-
`,{stdout:"",stderr:C,exitCode:128}}let{tag:
|
|
365
|
-
`,stderr:"",exitCode:0}}})}async function xp(e,t,n,r){let o=await
|
|
364
|
+
`,{stdout:"",stderr:C,exitCode:128}}let{tag:y,depth:E}=b,k;if(E===0&&!f)k=y.name;else if(l===0)k=y.name;else{let C=g.slice(0,Math.max(l,1));k=`${y.name}-${E}-g${C}`}return d&&await ll(s)&&(k+=d),{stdout:k+`
|
|
365
|
+
`,stderr:"",exitCode:0}}})}async function xp(e,t,n,r){let o=await ge(e,"refs/tags"),s=[];for(let i of o){let a=i.name.replace("refs/tags/","");if(n&&cn(n,a,0)!==0||r&&cn(r,a,0)===0)continue;let c=await ye(e,i.hash);if(c.type==="tag"){let f=Vt(c.content),l;try{l=await ve(e,f.object)}catch{continue}s.push({name:a,commitHash:l,timestamp:f.tagger.timestamp})}else c.type==="commit"&&t&&s.push({name:a,commitHash:i.hash,timestamp:0})}return s}async function Cp(e,t,n,r,o){let s=new Set,i=[{hash:t,depth:0}];for(;i.length>0;){let{hash:a,depth:c}=i.shift();if(s.has(a)||(s.add(a),o!==void 0&&c>o))continue;let f=n.get(a);if(f&&f.length>0)return{tag:Pp(f),depth:c};let l;try{l=await j(e,a)}catch{continue}if(r)l.parents.length>0&&!s.has(l.parents[0])&&i.push({hash:l.parents[0],depth:c+1});else for(let d of l.parents)s.has(d)||i.push({hash:d,depth:c+1})}return null}function Pp(e){return e.sort((t,n)=>n.timestamp!==t.timestamp?n.timestamp-t.timestamp:t.name.localeCompare(n.name))[0]}async function ll(e){if(Ye(e))return!1;let n=await Y(e);if(!n)return!1;let r=await j(e,n),o=await le(e,r.tree),s=await z(e);return Un(s,o)?!0:(await gt(e,s)).length>0}ie();Ce();ce();wn();me();ze();we();Ae();tt();function ul(e,t){e.command("commit",{description:"Record changes to the repository",options:{message:V.string().alias("m").repeatable().describe("Commit message"),file:V.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)=>{let o=n.message;if(o.length>0&&n.file!==void 0)return O("options '-m' and '-F' cannot be used together");let s=await W(r.fs,r.cwd,t);if(M(s))return s;let i=s,a=await z(i);if(n.all){let ae=Ye(i);if(ae)return ae;let Oe=await gt(i,a);for(let qe of Oe)qe.status==="modified"?a=(await ln(i,a,qe.path)).index:qe.status==="deleted"&&(a=lt(a,qe.path));let rt=new Set(Ne(a).map(qe=>qe.path)),Sn=new Set(a.entries.filter(qe=>qe.stage>0&&!rt.has(qe.path)).map(qe=>qe.path));for(let qe of Sn){let br=H(i.workTree,qe);await r.fs.exists(br)?a=(await ln(i,a,qe)).index:a=lt(a,qe)}}let c=await B(i,"MERGE_HEAD"),f=await B(i,"CHERRY_PICK_HEAD"),l=await B(i,"REVERT_HEAD"),m=await _t(i)?await B(i,"REBASE_HEAD"):null,u=n.amend,h=await Y(i);if(u){if(!h)return O("You have nothing yet to amend.");if(c)return O("You are in the middle of a merge -- cannot amend.");if(f)return O("You are in the middle of a cherry-pick -- cannot amend.")}if(Mt(a)){let ae=new Set,Oe=[];for(let rt of a.entries)rt.stage>0&&!ae.has(rt.path)&&(ae.add(rt.path),Oe.push(`U ${rt.path}`));return Oe.sort(),{stdout:Oe.length>0?`${Oe.join(`
|
|
366
366
|
`)}
|
|
367
367
|
`:"",stderr:`error: Committing is not possible because you have unmerged files.
|
|
368
368
|
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
|
|
369
369
|
hint: as appropriate to mark resolution and make a commit.
|
|
370
370
|
fatal: Exiting because of an unresolved conflict.
|
|
371
|
-
`,exitCode:128}}let p=
|
|
371
|
+
`,exitCode:128}}let p=u&&h?await j(i,h):null,g=o.length>0?o.join(`
|
|
372
372
|
|
|
373
|
-
`):void 0;if(g!==void 0&&(g
|
|
374
|
-
`,stderr:"",exitCode:1};if(!g&&n.file!==void 0){if(n.file==="-")g=r.stdin;else{let
|
|
375
|
-
`,stderr:"",exitCode:1}}if(!g&&
|
|
373
|
+
`):void 0;if(g!==void 0&&(g=$t(g),!g))return{stdout:`Aborting commit due to empty commit message.
|
|
374
|
+
`,stderr:"",exitCode:1};if(!g&&n.file!==void 0){if(n.file==="-")g=r.stdin;else{let ae=n.file.startsWith("/")?n.file:H(r.cwd,n.file);if(!await r.fs.exists(ae))return O(`could not read log file '${n.file}': No such file or directory`);let Oe=await r.fs.readFile(ae);g=typeof Oe=="string"?Oe:new TextDecoder().decode(Oe)}if(g=$t(g),!g)return{stdout:`Aborting commit due to empty commit message.
|
|
375
|
+
`,stderr:"",exitCode:1}}if(!g&&u&&p&&(g=p.message),!g&&(c||f||l||m)){let ae=await $e(i,"SQUASH_MSG");if(ae)g=$t(ae);else{let Oe=await $e(i,"MERGE_MSG");Oe!==null&&(g=$t(Oe))}}if(!g)return G("error: must provide a commit message with -m or -F");let w=Ne(a),R=await Fe(i,w),x=await t?.hooks?.preCommit?.({repo:i,index:a,treeHash:R});if(de(x))return G(x.message??"");let b=n.allowEmpty,y=null;if(u&&p){let ae=p.parents[0];ae?y=(await j(i,ae)).tree:y=await pt("tree",new Uint8Array(0))}else h&&(y=(await j(i,h)).tree);let E=u&&p&&p.parents.length>1;if(!b&&!c&&!E){if(!h&&!u&&w.length===0)return{stdout:await at(i,{fromCommit:!0,index:a}),stderr:"",exitCode:1};if(y!==null&&y===R){if(u){let ae=p?.parents[0]??null;return{stdout:`${await at(i,{fromCommit:!0,compareHash:ae,noWarn:!0,index:a})}No changes
|
|
376
376
|
`,stderr:`You asked to amend the most recent commit, but doing so would make
|
|
377
377
|
it empty. You can repeat your command with --allow-empty, or you can
|
|
378
378
|
remove the commit entirely with "git reset HEAD^".
|
|
@@ -382,83 +382,83 @@ If you wish to commit it anyway, use:
|
|
|
382
382
|
git commit --allow-empty
|
|
383
383
|
|
|
384
384
|
Otherwise, please use 'git cherry-pick --skip'
|
|
385
|
-
`,exitCode:1}:{stdout:await at(i,{fromCommit:!0,index:a}),stderr:"",exitCode:1}}}let k=await
|
|
386
|
-
${ke}`,stderr:"",exitCode:0}}})}
|
|
387
|
-
`,stderr:"",exitCode:0}}async function ml(e,t){let n=await
|
|
385
|
+
`,exitCode:1}:{stdout:await at(i,{fromCommit:!0,index:a}),stderr:"",exitCode:1}}}let k=await dn(i,r.env);if(M(k))return k;let C=await nt(i,r.env);if(M(C))return C;u&&p&&(k.name=p.author.name,k.email=p.author.email,k.timestamp=p.author.timestamp,k.timezone=p.author.timezone),f&&(k=(await j(i,f)).author);let P=Gt(g),I={repo:i,message:P},v=await t?.hooks?.commitMsg?.(I);if(de(v))return G(v.message??"");P=I.message;let T;u&&p?T=[...p.parents]:(T=h?[h]:[],c&&T.push(c));let N=on({type:"commit",tree:R,parents:T,author:k,committer:C,message:P}),S=await He(i,"commit",N);await fe(i,a);let A=await Q(i);A&&A.type==="symbolic"?await Z(i,A.target,S):await Z(i,"HEAD",S);let D=ue(P),_;u?_="commit (amend)":c?_="commit (merge)":f?_="commit (cherry-pick)":h?_="commit":_="commit (initial)";let F=`${_}: ${D}`,U=A?.type==="symbolic"?A.target:"HEAD";await oe(i,r.env,U,h,S,F,A?.type==="symbolic"),c&&await fs(i),f&&await Nt(i),l&&await Ot(i),m&&await be(i,"MERGE_MSG"),await be(i,"SQUASH_MSG"),await t?.hooks?.postCommit?.({repo:i,hash:S,message:P,branch:A?.type==="symbolic"?Pe(A.target):null,parents:T,author:k});let L=A?.type==="symbolic"?A.target:null,K=L?Pe(L):"detached HEAD",te;if(u&&p){let ae=p.parents[0];te=ae?(await j(i,ae)).tree:null}else te=h?(await j(i,h)).tree:null;let J=k.timestamp!==C.timestamp||k.timezone!==C.timezone,ne=T.length>1,ke=await mn(i,te,R,k,C,J,ne);return{stdout:`${jt(K,S,g,T.length===0&&!u)}
|
|
386
|
+
${ke}`,stderr:"",exitCode:0}}})}ie();Be();me();function In(e){let t=e.split(".");return t.length===2||t.length===3}function $p(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 gl(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"),get:$().describe("Get the value for a given key"),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 pl(s);if(n.get){let f=a;return f?In(f)?ia(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(n["get-all"]){let f=a;return f?In(f)?ml(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(n.add){let f=a,l=i[1];return!f||l===void 0?G("error: missing key and/or value",2):In(f)?(await _a(s,f,l),{stdout:"",stderr:"",exitCode:0}):G(`error: invalid key: ${f}`,2)}if(n.unset){let f=a;return f?In(f)?hl(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(a==="list")return pl(s);if(a==="get"){let f=i[1];return f?In(f)?ia(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(a==="get-all"){let f=i[1];return f?In(f)?ml(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(a==="set"){let f=i[1],l=i[2];return!f||l===void 0?G("error: missing key and/or value",2):In(f)?(await ri(s,f,l),{stdout:"",stderr:"",exitCode:0}):G(`error: invalid key: ${f}`,2)}if(a==="unset"){let f=i[1];return f?In(f)?hl(s,f):G(`error: invalid key: ${f}`,2):G("error: missing key",2)}if(!a)return G("usage: git config [get|set|unset|list] [<key>] [<value>]",2);if(!In(a))return G(`error: invalid key: ${a}`,2);let c=i[1];return c!==void 0?(await ri(s,a,c),{stdout:"",stderr:"",exitCode:0}):ia(s,a)}})}async function ia(e,t){let n=await xe(e,t);return n===void 0?G(""):{stdout:`${n}
|
|
387
|
+
`,stderr:"",exitCode:0}}async function ml(e,t){let n=await Na(e,t);return n.length===0?G(""):{stdout:`${n.join(`
|
|
388
388
|
`)}
|
|
389
|
-
`,stderr:"",exitCode:0}}async function hl(e,t){return await
|
|
389
|
+
`,stderr:"",exitCode:0}}async function hl(e,t){return await Fa(e,t)?{stdout:"",stderr:"",exitCode:0}:G("",5)}async function pl(e){let t=H(e.gitDir,"config"),n="";await e.fs.exists(t)&&(n=await e.fs.readFile(t));let r=Qo(n),o=$p(r),s=new Set(o.map(c=>c.split("=")[0])),i=e.configOverrides?.defaults;if(i)for(let[c,f]of Object.entries(i))s.has(c)||(o.push(`${c}=${f}`),s.add(c));let a=e.configOverrides?.locked;if(a)for(let[c,f]of Object.entries(a))s.has(c)||o.push(`${c}=${f}`);return{stdout:o.length>0?`${o.join(`
|
|
390
390
|
`)}
|
|
391
|
-
`:"",stderr:"",exitCode:0}}
|
|
391
|
+
`:"",stderr:"",exitCode:0}}ie();function Mo(e){let{path:t,parentHashes:n,parentModes:r,resultHash:o,resultMode:s}=e,i=[];i.push(`diff --cc ${t}`);let a=n.map(R=>R?X(R):"0000000"),c=o?X(o):"0000000";i.push(`index ${a.join(",")}..${c}`);let f=e.resultContent.length>0,l=n.every(R=>R===null),d=!f&&n.some(R=>R!==null);if(l&&s)i.push(`new file mode ${s}`);else if(d){let R=r.map(x=>x||"000000").join(",");i.push(`deleted file mode ${R}`)}else{let R=r.map(y=>y||"000000"),x=s||"000000";R.some(y=>y!==x)&&i.push(`mode ${R.join(",")}..${x}`)}let m=n.some(R=>R!==null);if(i.push(m?`--- a/${t}`:"--- /dev/null"),i.push(f?`+++ b/${t}`:"+++ /dev/null"),d||l)return`${i.join(`
|
|
392
392
|
`)}
|
|
393
|
-
`;let
|
|
393
|
+
`;let u=e.parentContents.map(R=>R.length>0?Ft(R):[]),h=e.resultContent.length>0?Ft(e.resultContent):[],p=u.map(R=>ct(R,h)),g=Op(u,h,p),w=Sp(g,u.length,h);if(w.length===0)return"";for(let R of w)i.push(R);return`${i.join(`
|
|
394
394
|
`)}
|
|
395
|
-
`}function Op(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=Ip(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
|
|
396
|
-
`);let c=i[0],f=await j(e,c),l=await Ve(e,f.tree,s.commit.tree),d=await xl(e,l,r);return El(d)||a&&(d.stderr=a),d}async function xl(e,t,n){let{remaining:r,renames:o}=await it(e,t),s=kl(r,o);return s.sort((i,a)=>Ie(i.path,a.path)),n?{items:s.filter(i=>Ee(n,i.path))}:{items:s}}async function Dp(e,t,n){let r=Ye(e);if(r)return r;let o=await
|
|
395
|
+
`}function Op(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=Ip(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 u=o[d]?.resultStatus[i];if(f.push(u==="insert"?"+":" "),u==="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 Ip(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=ct(i,a),f=[];for(let l of c)if(l.type==="keep"){let d=o.find(u=>u.text===l.line&&u.parentLineNo===l.oldLineNo),m=s.find(u=>u.text===l.line&&u.parentLineNo===l.newLineNo);f.push({columns:["-","-"],text:l.line,resultLineNo:0,parentLineNos:[d?.parentLineNo??0,m?.parentLineNo??0]})}else if(l.type==="delete"){let d=o.find(m=>m.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(m=>m.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 Sp(e,t,n){let o=[];for(let l=0;l<e.length;l++)e[l]?.columns.some(m=>m!==" ")&&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,m=Math.max(0,d-3),u=Math.min(e.length-1,d+3);m<=c+1||(s.push({start:a,end:c}),a=m),c=u}s.push({start:a,end:c});let f=[];for(let l of s){let d=e.slice(l.start,l.end+1),m=[];for(let b=0;b<t;b++){let y=d.filter(E=>(E.parentLineNos[b]??0)>0||E.columns[b]==="-");if(y.length===0)m.push({start:1,count:0});else{let k=y.find(C=>(C.parentLineNos[b]??0)>0)?.parentLineNos[b]??1;m.push({start:k,count:y.length})}}let u=d.filter(b=>b.resultLineNo>0),h=u[0],p=h?h.resultLineNo:1,g=u.length,w="";for(let b=p-2;b>=0;b--){let y=n[b];if(y&&/^[a-zA-Z$_]/.test(y)){w=` ${y.trimEnd().slice(0,79)}`;break}}let R=m.map(b=>`-${b.start},${b.count}`),x=`${"@".repeat(t+1)} ${R.join(" ")} +${p},${g} ${"@".repeat(t+1)}${w}`;f.push(x);for(let b of d)f.push(`${b.columns.join("")}${b.text}`)}return f}ie();Ce();ce();me();function jo(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}nr();we();Ae();tt();var aa=new TextDecoder;function El(e){return"exitCode"in e}function gr(e){return e.toString(8).padStart(6,"0")}function kl(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 Rl(e,t){e.command("diff",{description:"Show changes between commits, commit and working tree, etc.",transformArgs:n=>n.map(r=>{let o=/^-U(\d+)$/.exec(r);return o?`--unified=${o[1]}`:r}),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"),unified:V.number().alias("U").describe("Generate diffs with <n> lines of context"),findRenames:$().alias("M").describe("Detect renames (enabled by default)"),findCopies:$().alias("C").describe("Detect copies (accepted for compatibility)"),color:$().describe("Show colored diff (accepted for compatibility)"),noColor:$().describe("Turn off colored diff (accepted for compatibility)")},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=ut(i,r.cwd),l=o.passthrough.length>0?o.passthrough.map(g=>Ue(g,f)):null,d=n.stat?"stat":n.nameOnly?"name-only":n.nameStatus?"name-status":n.shortstat?"shortstat":n.numstat?"numstat":"unified",m,u=c.length===1?jo(c[0]):null;if(u){if(a)return O("too many arguments");u.type==="three-dot"?m=await Hp(i,u.left,u.right,l):m=await yl(i,u.left,u.right,l)}else if(c.length===2)m=await yl(i,c[0],c[1],l);else{if(c.length>2)return O("too many arguments");a?m=await Ap(i,c.length===1?c[0]:null,l):c.length===1?m=await Dp(i,c[0],l):m=await Tp(i,l)}if(El(m))return m;let h=n.unified,p=await Mp(i,m.items,d,h);return m.stderr&&(p.stderr=m.stderr),p}})}async function Tp(e,t){let n=Ye(e);if(n)return n;let r=await z(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 gt(e,r);c.sort((l,d)=>Ie(l.path,d.path));let f=[];for(let l of c){if(l.status==="untracked"||t&&!Ee(t,l.path)||o.has(l.path))continue;let d=s.get(l.path);if(!d)continue;let m=gr(d.mode),u;if(l.status==="modified"&&e.workTree){let h=H(e.workTree,l.path),p=await e.fs.readFileBuffer(h);u=await pt("blob",p)}f.push({path:l.path,status:l.status==="deleted"?"D":"M",oldHash:d.hash,newHash:u,oldMode:m,newMode:m,newFromWorkTree:l.status==="modified"})}for(let l of o){if(t&&!Ee(t,l))continue;let d=i.get(l),m=a.get(l);await vp(f,e,l,d,m)}return f.sort((l,d)=>{let m=Ie(l.path,d.path);return m!==0?m:l.status==="U"&&d.status!=="U"?-1:l.status!=="U"&&d.status==="U"?1:0}),{items:f}}async function vp(e,t,n,r,o){let s=t.workTree;if(s&&r&&o){let i=gr(r.mode),a=gr(o.mode),{exists:c,hash:f}=await wl(t.fs,s,n);e.push({path:n,status:"U",newHash:f,newMode:i,newFromWorkTree:c,combinedParentHashes:[r.hash,o.hash],combinedParentModes:[i,a]}),bl(e,n,r.hash,i,c,f);return}if(e.push({path:n,status:"U"}),s&&r){let i=gr(r.mode),{exists:a,hash:c}=await wl(t.fs,s,n);bl(e,n,r.hash,i,a,c)}}async function wl(e,t,n){let r=H(t,n);if(!await e.exists(r))return{exists:!1};let o=await ss(e,r);return{exists:!0,hash:await pt("blob",o)}}function bl(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 Ap(e,t,n){let r=null;if(t){let m=await je(e,t);if(M(m))return m;r=m.commit.tree}else{let m=await Y(e);m&&(r=(await j(e,m)).tree)}let o=await le(e,r),s=await z(e),i=new Set;for(let m of s.entries)m.stage>0&&i.add(m.path);let a=new Map(Ne(s).map(m=>[m.path,m])),c=[];for(let[m,u]of a){if(i.has(m))continue;let h=o.get(m);h?h.hash!==u.hash&&c.push({path:m,status:"modified",oldHash:h.hash,newHash:u.hash,oldMode:h.mode,newMode:gr(u.mode)}):c.push({path:m,status:"added",newHash:u.hash,newMode:gr(u.mode)})}for(let[m,u]of o)i.has(m)||a.has(m)||c.push({path:m,status:"deleted",oldHash:u.hash,oldMode:u.mode});let{remaining:f,renames:l}=await it(e,c),d=kl(f,l);for(let m of i)d.push({path:m,status:"U"});return d.sort((m,u)=>Ie(m.path,u.path)),n?{items:d.filter(m=>Ee(n,m.path))}:{items:d}}async function yl(e,t,n,r){let o=await je(e,t);if(M(o))return o;let s=await je(e,n);if(M(s))return s;let i=await Ve(e,o.commit.tree,s.commit.tree);return xl(e,i,r)}async function Hp(e,t,n,r){let o=await je(e,t);if(M(o))return o;let s=await je(e,n);if(M(s))return s;let i=await Ut(e,o.hash,s.hash);if(i.length===0)return O(`${t}...${n}: no merge base`);let a;i.length>1&&(a=`warning: ${t}...${n}: multiple merge bases, using ${i[0]}
|
|
396
|
+
`);let c=i[0],f=await j(e,c),l=await Ve(e,f.tree,s.commit.tree),d=await xl(e,l,r);return El(d)||a&&(d.stderr=a),d}async function xl(e,t,n){let{remaining:r,renames:o}=await it(e,t),s=kl(r,o);return s.sort((i,a)=>Ie(i.path,a.path)),n?{items:s.filter(i=>Ee(n,i.path))}:{items:s}}async function Dp(e,t,n){let r=Ye(e);if(r)return r;let o=await je(e,t);if(M(o))return o;let s=e.workTree,i=await le(e,o.commit.tree),a=await z(e),c=new Map(Ne(a).map(l=>[l.path,l])),f=[];for(let[l,d]of i){if(n&&!Ee(n,l))continue;let m=H(s,l);if(!await e.fs.exists(m)){f.push({path:l,status:"D",oldHash:d.hash,oldMode:d.mode});continue}let u=await e.fs.readFileBuffer(m),h=await pt("blob",u);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&&!Ee(n,l))continue;let m=H(s,l);if(!await e.fs.exists(m))continue;let u=await e.fs.readFileBuffer(m),h=await pt("blob",u);f.push({path:l,status:"A",newHash:h,newMode:gr(d.mode),newFromWorkTree:!0})}return f.sort((l,d)=>Ie(l.path,d.path)),{items:f}}async function Mp(e,t,n,r){let o;switch(n){case"stat":o=await Fp(e,t);break;case"shortstat":o=await Up(e,t);break;case"numstat":o=await _p(e,t);break;case"name-only":o=Lp(t);break;case"name-status":o=Np(t);break;default:o=await jp(e,t,r);break}return{stdout:o,stderr:"",exitCode:0}}async function jp(e,t,n){let r="",o=new Set,s=await Gp(e,t);for(let i of t)if(i.status==="U")if(i.combinedParentHashes){let a=await Promise.all(i.combinedParentHashes.map(async l=>l?await se(e,l):"")),c=await ca(e,i);if(a.some(l=>Te(l))||Te(c)){let l=i.combinedParentHashes.map(d=>d?X(d):"0000000");r+=`diff --cc ${i.path}
|
|
397
397
|
index ${l.join(",")}..0000000
|
|
398
398
|
Binary files differ
|
|
399
|
-
`,o.add(i.path)}else{let l=
|
|
399
|
+
`,o.add(i.path)}else{let l=Mo({path:i.path,parentHashes:i.combinedParentHashes,parentModes:i.combinedParentModes??[],parentContents:a,resultHash:null,resultMode:i.newMode??null,resultContent:c});l?(r+=l,o.add(i.path)):r+=`* Unmerged path ${i.path}
|
|
400
400
|
`}}else r+=`* Unmerged path ${i.path}
|
|
401
|
-
`;for(let i of t){if(i.status==="U"||o.has(i.path))continue;let a=i.oldHash?await se(e,i.oldHash):"",c=await
|
|
401
|
+
`;for(let i of t){if(i.status==="U"||o.has(i.path))continue;let a=i.oldHash?await se(e,i.oldHash):"",c=await ca(e,i);i.status==="R"&&i.oldPath?r+=Tt({path:i.oldPath,oldContent:a,newContent:c,oldMode:i.oldMode,newMode:i.newMode,oldHash:Go(i.oldHash,s),newHash:Go(i.newHash,s),renameTo:i.path,similarity:i.similarity,contextLines:n}):r+=Tt({path:i.path,oldContent:a,newContent:c,oldMode:i.oldMode,newMode:i.newMode,oldHash:Go(i.oldHash,s),newHash:Go(i.newHash,s),isNew:i.status==="A",isDeleted:i.status==="D",contextLines:n})}return r}async function Gp(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=H(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),m=0;for(let u of d)if(u.startsWith(l)&&(m++,m>1))return!1;return m===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 Go(e,t){if(e)return e.length!==40?e:t.get(e)??X(e)}function Lp(e){let t="";for(let n of e)t+=`${n.path}
|
|
402
402
|
`;return t}function Np(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}
|
|
403
403
|
`}else t+=`${n.status} ${n.path}
|
|
404
404
|
`;return t}async function _p(e,t){let n="";for(let r of t){if(r.status==="U"){n+=`0 0 ${r.path}
|
|
405
|
-
`;continue}let o=r.oldHash?await se(e,r.oldHash):"",s=await
|
|
405
|
+
`;continue}let o=r.oldHash?await se(e,r.oldHash):"",s=await ca(e,r),i=Te(o)||Te(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=un(r.oldPath,r.path);n+=`${a} ${c} ${f}
|
|
406
406
|
`}else n+=`${a} ${c} ${r.path}
|
|
407
407
|
`}return n}async function Fp(e,t){let n=await Pl(e,t);return ur(n)}async function Up(e,t){let n=await Pl(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=Xn(s,r,o);return i?`${i}
|
|
408
408
|
`:n.some(a=>a.isUnmerged)?` 0 files changed
|
|
409
|
-
`:""}async function
|
|
410
|
-
`);for(let
|
|
411
|
-
`)}}else{let U=
|
|
412
|
-
`)}}if(!o)for(let
|
|
413
|
-
`))}if(r){let
|
|
414
|
-
`))}}let
|
|
415
|
-
`)}let N={stdout:"",stderr:
|
|
416
|
-
`)}function Tl(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 Il(s),a=await
|
|
409
|
+
`:""}async function ca(e,t){if(!t.newHash)return"";if(t.newFromWorkTree&&e.workTree){let n=H(e.workTree,t.path),r=await ss(e.fs,n);return aa.decode(r)}return se(e,t.newHash)}async function Bp(e,t){if(!t.newHash)return new Uint8Array(0);if(t.newFromWorkTree&&e.workTree){let n=H(e.workTree,t.path);return ss(e.fs,n)}return Pt(e,t.newHash)}function Cl(e,t){let n=Rt(e),r=Rt(t),o=ct(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 Pl(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?un(r.oldPath,r.path):r.path,s=r.oldHash?await Pt(e,r.oldHash):new Uint8Array(0),i=await Bp(e,r);if(Dn(s)||Dn(i))n.push({path:o,sortKey:r.path,insertions:0,deletions:0,isBinary:!0,oldSize:s.byteLength,newSize:i.byteLength});else{let a=aa.decode(s),c=aa.decode(i),{ins:f,del:l}=Cl(a,c);n.push({path:o,sortKey:r.path,insertions:f,deletions:l})}}return n}ie();Be();Tn();me();ze();we();function wr(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 Wp(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 xs(e,t){if(!Wp(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 Ol(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:V.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 O("--depth and --unshallow cannot be used together");if(n.unshallow&&!await Oo(s))return O("--unshallow on a complete repository does not make sense");let i=n.depth;if(n.unshallow&&(i=bs),n.all){if(n.remote)return O("fetch --all does not take a remote argument");let c=await pe(s),f=[];for(let m of Object.keys(c)){let u=m.match(/^remote "(.+)"$/);u?.[1]&&f.push(u[1])}if(f.length===0)return{stdout:"",stderr:"",exitCode:0};let l=[],d=0;for(let m of f){let u=await $l(s,m,void 0,n.prune,n.tags,r.env,t,i);u.stderr&&l.push(u.stderr),u.exitCode!==0&&(d=u.exitCode)}return{stdout:"",stderr:l.join(""),exitCode:d}}let a=n.remote||"origin";return $l(s,a,n.refspec,n.prune,n.tags,r.env,t,i)}})}async function $l(e,t,n,r,o,s,i,a){let c;try{c=await Lr(e,t,s)}catch(S){let A=S instanceof Error?S.message:"";if(A.startsWith("network"))return O(A);throw S}if(!c)return O(`'${t}' does not appear to be a git repository`);let{transport:f,config:l}=c,d,m=wr(l.fetchRefspec);n&&n.length>0?d=n.map(S=>{let A=wr(S);if(S.includes(":"))return A;for(let D of[A.src,`refs/heads/${A.src}`,`refs/tags/${A.src}`]){let _=xs(m,D);if(_!==null)return{force:A.force||m.force,src:D,dst:_}}return A}):d=[m];let u=await i?.hooks?.preFetch?.({repo:e,remote:t,url:l.url,refspecs:d.map(S=>`${S.src}:${S.dst}`),prune:r,tags:o});if(de(u))return{stdout:"",stderr:u.message??"",exitCode:1};let h=await f.advertiseRefs();if(h.length===0)return{stdout:"",stderr:"",exitCode:0};let g=(await ge(e)).map(S=>S.hash),w=await B(e,"HEAD");w&&g.push(w);let R=[],x=new Set,b=[];for(let S of h)if(S.name!=="HEAD")for(let A of d){let D=xs(A,S.name);if(D!==null){b.push({remote:S,localRef:D,force:A.force}),x.has(S.hash)||(x.add(S.hash),R.push(S.hash));break}}if(o)for(let S of h)S.name.startsWith("refs/tags/")&&(b.push({remote:S,localRef:S.name,force:!1}),x.has(S.hash)||(x.add(S.hash),R.push(S.hash)));let y=new Set(g),E=R.filter(S=>!y.has(S)),k,C=a!==void 0?await Hr(e):void 0;a!==void 0&&(k={depth:a,existingShallows:C});let P=E.length>0?E:k?R:[];if(P.length>0){let S=await f.fetch(P,g,k);S.shallowUpdates&&await Dr(e,S.shallowUpdates,C)}let I=await nn(e,s),v=[];v.push(`From ${l.url}
|
|
410
|
+
`);for(let S of b){let A=await B(e,S.localRef);await Z(e,S.localRef,S.remote.hash),await Ze(e,S.localRef,{oldHash:A??ee,newHash:S.remote.hash,name:I.name,email:I.email,timestamp:I.timestamp,tz:I.tz,message:A?"fetch":"fetch: storing head"});let D=Lo(S.remote.name),_=Lo(S.localRef);if(A){if(A!==S.remote.hash){let F=X(A),U=X(S.remote.hash);v.push(` ${F}..${U} ${D} -> ${_}
|
|
411
|
+
`)}}else{let U=S.remote.name.startsWith("refs/tags/")?" * [new tag]":" * [new branch]";v.push(`${U} ${D} -> ${_}
|
|
412
|
+
`)}}if(!o)for(let S of h){if(!S.name.startsWith("refs/tags/")||x.has(S.hash))continue;let A=await B(e,S.name),D=S.peeledHash??S.hash;!A&&y.has(D)&&(await Z(e,S.name,S.hash),await Ze(e,S.name,{oldHash:ee,newHash:S.hash,name:I.name,email:I.email,timestamp:I.timestamp,tz:I.tz,message:"fetch: storing head"}),v.push(` * [new tag] ${Lo(S.name)} -> ${Lo(S.name)}
|
|
413
|
+
`))}if(r){let S=`refs/remotes/${t}`,A=await ge(e,S),D=new Set(h.filter(_=>_.name.startsWith("refs/heads/")).map(_=>_.name.slice(11)));for(let _ of A){let F=_.name.slice(S.length+1);D.has(F)||(await he(e,_.name),v.push(` - [deleted] (none) -> ${t}/${F}
|
|
414
|
+
`))}}let T=h.find(S=>S.name==="HEAD");if(T){let S=H(e.gitDir,"FETCH_HEAD"),A=h.find(_=>_.name.startsWith("refs/heads/")&&_.hash===T.hash),D=A?`branch '${A.name.slice(11)}' of`:"of";await e.fs.writeFile(S,`${T.hash} ${D} ${l.url}
|
|
415
|
+
`)}let N={stdout:"",stderr:v.join(""),exitCode:0};return await i?.hooks?.postFetch?.({repo:e,remote:t,url:l.url,updatedRefCount:b.length}),N}function Lo(e){return e.startsWith("refs/heads/")?e.slice(11):e.startsWith("refs/tags/")?e.slice(10):e.startsWith("refs/remotes/")?e.slice(13):e}ie();Ce();ce();me();ze();we();ie();Ce();ce();me();ze();we();async function Il(e){let t=new Set,n=await Y(e);n&&t.add(n);let r=await ge(e,"refs");for(let a of r)t.add(a.hash);let o=H(e.gitDir,"logs");await e.fs.exists(o)&&await Sl(e,o,o,t);let s=await z(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 B(e,a);c&&t.add(c)}let i=[];for(let a of t)await Yt(e,a)&&i.push(a);return i}async function Sl(e,t,n,r){let o=await e.fs.readdir(t);for(let s of o){let i=H(t,s),a=await e.fs.stat(i);if(a.isDirectory)await Sl(e,i,n,r);else if(a.isFile){let c=i.slice(n.length+1),f=await et(e,c);for(let l of f)l.newHash!==ee&&r.add(l.newHash)}}}Ws();xr();me();async function qp(e,t){let n=new Set,r=H(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(H(r,i)),c=new Kt(a);for(let f of c.allHashes())n.add(f)}}catch{}return n.size===0?jr(await Mr(e,t,[])):(await jr(await Mr(e,t,[]))).filter(s=>!n.has(s.hash))}async function fa(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 jr(await Mr(t,r,[])):await qp(t,r);if(a.length===0)return null;let c=a.length,f=To(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:m,entries:u}=await Bs(d),h=await xc(m,u),p=m.subarray(m.byteLength-20),g="";for(let E=0;E<20;E++){let k=p[E];g+=(k>>4).toString(16)+(k&15).toString(16)}let w=H(t.gitDir,"objects","pack");await n.mkdir(w,{recursive:!0});let R=`pack-${g}`,x=H(w,`${R}.pack`),b=H(w,`${R}.idx`);await n.writeFile(x,m),await n.writeFile(b,h);let y=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 I=P.slice(0,-4);if(I===R)continue;let v=H(w,`${I}.idx`),T=!0;try{let N=await n.readFileBuffer(v),S=new Kt(N);for(let A of S.allHashes())if(!y.has(A)){T=!1;break}}catch{T=!1}if(T){try{await n.rm(H(w,`${I}.pack`))}catch{}try{await n.rm(v)}catch{}}}let k=H(t.gitDir,"objects"),C;try{C=await n.readdir(k)}catch{C=[]}for(let P of C){if(P==="pack"||P==="info"||P.length!==2)continue;let I=H(k,P),v;try{v=await n.readdir(I)}catch{continue}for(let T of v){let N=`${P}${T}`;y.has(N)&&await n.rm(H(I,T))}try{(await n.readdir(I)).length===0&&await n.rm(I,{recursive:!0})}catch{}}}return{totalCount:c,deltaCount:l,packHash:g}}function la(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(`
|
|
416
|
+
`)}function Tl(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 Il(s),a=await fa({gitCtx:s,fs:r.fs,tips:i,cleanup:n.delete,all:n.all});return a?{stdout:"",stderr:`${la(a.totalCount,a.deltaCount)}
|
|
417
417
|
`,exitCode:0}:{stdout:`Nothing new to pack.
|
|
418
|
-
`,stderr:"",exitCode:0}}})}function vl(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
|
|
419
|
-
`,exitCode:0}}return{stdout:"",stderr:"",exitCode:0}}})}var zp=2160*60*60;async function Kp(e){let t=new Set,n=await Y(e);n&&t.add(n);let r=await
|
|
420
|
-
`);if(o.length>0&&o[o.length-1]===""&&o.pop(),n&&t.length>1&&!t.every(a=>o.some(c=>a.test(c))))return{matches:[],binary:!1};let s=[];for(let i=0;i<o.length;i++){let a=o[i],c=t.some(f=>f.test(a));(r?!c:c)&&s.push({lineNo:i+1,line:a})}return{matches:s,binary:!1}}function Xp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Dl(e,t){let n=t?.fixed?Xp(e):e;t?.wordRegexp&&(n=`\\b${n}\\b`);let r=t?.ignoreCase?"i":"";try{return new RegExp(n,r)}catch{return null}}Ce();
|
|
418
|
+
`,stderr:"",exitCode:0}}})}function vl(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 Hc(s),await yt(s);let i=await Kp(s);if(i.length>0){let a=n.aggressive?250:10,c=n.aggressive?250:50,f=await fa({gitCtx:s,fs:r.fs,tips:i,window:a,depth:c,cleanup:!0,all:!0});if(await Vp(s.gitDir,r.fs),f)return{stdout:"",stderr:`${la(f.totalCount,f.deltaCount,!0)}
|
|
419
|
+
`,exitCode:0}}return{stdout:"",stderr:"",exitCode:0}}})}var zp=2160*60*60;async function Kp(e){let t=new Set,n=await Y(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)-zp,i=H(e.gitDir,"logs");await e.fs.exists(i)&&await Al(e,i,i,s,t);let a=await z(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 B(e,f);l&&t.add(l)}let c=[];for(let f of t)await Yt(e,f)&&c.push(f);return c}async function Al(e,t,n,r,o){let s=await e.fs.readdir(t);for(let i of s){let a=H(t,i),c=await e.fs.stat(a);if(c.isDirectory){await Al(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 et(e,f);if(f==="refs/stash"){for(let m of l)m.newHash!==ee&&o.add(m.newHash);continue}let d=l.filter(m=>m.timestamp>=r);await Ln(e,f,d);for(let m of d)m.newHash!==ee&&o.add(m.newHash)}}}async function Vp(e,t){let n=H(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(H(n,o),{recursive:!0})}catch{}}ie();function Yp(e){let t=Math.min(e.length,8e3),n=0;for(let r=0;r<t;r++)e.charCodeAt(r)===0&&n++;return n>t*.01}function Hl(e,t,n,r){if(Yp(e)){let i=t.some(a=>a.test(e));return{matches:[],binary:i}}let o=e.split(`
|
|
420
|
+
`);if(o.length>0&&o[o.length-1]===""&&o.pop(),n&&t.length>1&&!t.every(a=>o.some(c=>a.test(c))))return{matches:[],binary:!1};let s=[];for(let i=0;i<o.length;i++){let a=o[i],c=t.some(f=>f.test(a));(r?!c:c)&&s.push({lineNo:i+1,line:a})}return{matches:s,binary:!1}}function Xp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Dl(e,t){let n=t?.fixed?Xp(e):e;t?.wordRegexp&&(n=`\\b${n}\\b`);let r=t?.ignoreCase?"i":"";try{return new RegExp(n,r)}catch{return null}}Ce();ce();me();Ae();async function Zp(e){let t=await z(e),n=new Set,r=[];for(let o of t.entries){if(o.stage!==0||n.has(o.path))continue;n.add(o.path);let s=H(e.workTree,o.path);r.push({path:o.path,getContent:async()=>{try{return await e.fs.readFile(s)}catch{return""}}})}return r}async function Jp(e){let t=await z(e),n=new Set,r=[];for(let o of t.entries){if(o.stage!==0||n.has(o.path))continue;n.add(o.path);let s=o.hash;r.push({path:o.path,getContent:()=>se(e,s)})}return r}async function Qp(e,t){return(await Ke(e,t)).filter(r=>!r.mode.startsWith("120")).map(r=>({path:r.path,getContent:()=>se(e,r.hash)}))}function eg(e){let t=0;for(let n=0;n<e.length;n++)e[n]==="/"&&t++;return t}function tg(e,t,n){return n||t===""?e:st(t,e)}function Ml(e,t){e.command("grep",{description:"Print lines matching a pattern",args:[q.string().name("args").variadic().optional()],options:{cached:$().describe("Search blobs registered in the index"),lineNumber:$().alias("n").describe("Prefix the line number to matching lines"),filesWithMatches:$().alias("l").describe("Show only filenames"),filesWithoutMatch:$().alias("L").describe("Show only filenames without matches"),count:$().alias("c").describe("Show count of matching lines per file"),ignoreCase:$().alias("i").describe("Case insensitive matching"),wordRegexp:$().alias("w").describe("Match whole words only"),invertMatch:$().alias("v").describe("Invert the sense of matching"),fixedStrings:$().alias("F").describe("Interpret pattern as fixed string"),extendedRegexp:$().alias("E").describe("Interpret pattern as extended regexp"),basicRegexp:$().alias("G").describe("Interpret pattern as basic regexp"),suppressFilename:$().alias("h").describe("Suppress filename prefix"),forceFilename:$().alias("H").describe("Force filename prefix"),fullName:$().describe("Force paths to be output relative to project top"),quiet:$().alias("q").describe("Do not output matched lines; exit with status 0 on match"),allMatch:$().describe("Require all patterns to match in a file"),maxDepth:V.number().describe("Descend at most <n> levels of directories"),maxCount:V.number().alias("m").describe("Maximum number of matches per file"),afterContext:V.number().alias("A").describe("Show <n> lines after match"),beforeContext:V.number().alias("B").describe("Show <n> lines before match"),context:V.number().alias("C").describe("Show <n> lines before and after match"),heading:$().describe("Show filename above matches"),break:$().describe("Print empty line between results from different files"),pattern:V.string().alias("e").repeatable().describe("Match <pattern>")},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??[],c=o.passthrough??[],f=n.pattern,l=[],d=0;if(f.length===0){if(a.length===0)return O("no pattern given");f.push(a[d++])}for(;d<a.length;d++)l.push(a[d]);let m=[];for(let U of f){let L=Dl(U,{fixed:!!n.fixedStrings,ignoreCase:!!n.ignoreCase,wordRegexp:!!n.wordRegexp});if(!L)return O(`command line, '${U}': invalid regular expression`);m.push(L)}let u=[];if(l.length>0)for(let U of l){let L=await wt(i,U);if(M(L))return L;let K;try{K=await ve(i,L)}catch{return O(`bad revision '${U}'`)}let te=await j(i,K),J=await Qp(i,te.tree);u.push({prefix:`${U}:`,files:J})}else if(n.cached)u.push({prefix:"",files:await Jp(i)});else{if(!i.workTree)return O("this operation must be run in a work tree");u.push({prefix:"",files:await Zp(i)})}let h=ut(i,r.cwd),p=null;c.length>0&&(p=c.map(U=>Ue(U,h)));let g=n.maxDepth,w=n.maxCount,R=!!(n.lineNumber||n.afterContext!=null||n.beforeContext!=null||n.context!=null),x=!!n.filesWithMatches,b=!!n.filesWithoutMatch,y=!!n.count,E=!!n.quiet,k=!!n.heading,C=!!n.break,P=!!n.suppressFilename,I=!!n.invertMatch,v=!!n.allMatch,T=n.context??n.afterContext??0,N=n.context??n.beforeContext??0,S=T>0||N>0,A=[],D=!1,_=!0;for(let U of u){let L=U.files.slice().sort((K,te)=>K.path<te.path?-1:K.path>te.path?1:0);for(let K of L){if(p&&!Ee(p,K.path)||g!==void 0&&eg(K.path)>g)continue;let te=await K.getContent(),J=Hl(te,m,v,I),ne=tg(K.path,h,!!n.fullName),ke=U.prefix;if(J.binary){if(D=!0,E)return{stdout:"",stderr:"",exitCode:0};x?A.push(`${ke}${ne}`):!b&&!y&&A.push(`Binary file ${ke}${ne} matches`);continue}if(J.matches.length===0){b&&A.push(`${ke}${ne}`);continue}if(D=!0,E)return{stdout:"",stderr:"",exitCode:0};if(b)continue;if(x){A.push(`${ke}${ne}`);continue}if(y){let ae=w!==void 0?Math.min(J.matches.length,w):J.matches.length;A.push(`${ke}${ne}:${ae}`);continue}let Ge=J.matches;if(w!==void 0&&(Ge=Ge.slice(0,w)),S)ng(A,te,Ge,ke,ne,P,N,T,k,C,_);else if(k){!_&&C&&A.push(""),A.push(`${ke}${ne}`);for(let ae of Ge)R?A.push(`${ae.lineNo}:${ae.line}`):A.push(ae.line)}else{!_&&C&&A.push("");for(let ae of Ge){let Oe=P?"":`${ke}${ne}:`;R?A.push(`${Oe}${ae.lineNo}:${ae.line}`):A.push(`${Oe}${ae.line}`)}}_=!1}}return E?{stdout:"",stderr:"",exitCode:D?0:1}:{stdout:A.length>0?`${A.join(`
|
|
421
421
|
`)}
|
|
422
|
-
`:"",stderr:"",exitCode:
|
|
423
|
-
`);d.length>0&&d[d.length-1]===""&&d.pop();let
|
|
422
|
+
`:"",stderr:"",exitCode:D?0:1}}})}function ng(e,t,n,r,o,s,i,a,c,f,l){let d=t.split(`
|
|
423
|
+
`);d.length>0&&d[d.length-1]===""&&d.pop();let m=new Set(n.map(g=>g.lineNo)),u=[];for(let g of n){let w=Math.max(1,g.lineNo-i),R=Math.min(d.length,g.lineNo+a);u.push([w,R])}let h=[];for(let[g,w]of u)h.length>0&&g<=h[h.length-1][1]+1?h[h.length-1][1]=Math.max(h[h.length-1][1],w):h.push([g,w]);let p=s?"":`${r}${o}`;c?(!l&&f&&e.push(""),e.push(`${r}${o}`)):!l&&f&&e.push("");for(let g=0;g<h.length;g++){g>0&&e.push("--");let[w,R]=h[g];for(let x=w;x<=R;x++){let b=d[x-1],E=m.has(x)?":":"-";c?e.push(`${x}${E}${b}`):e.push(`${p}${E}${x}${E}${b}`)}}}me();Gn();function jl(e,t){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:V.string().alias("b").describe("Name for the initial branch")},examples:["git init","git init --bare","git init my-project"],handler:async(n,r)=>{let o=n.initialBranch??t?.configOverrides?.locked?.["init.defaultBranch"]??t?.configOverrides?.defaults?.["init.defaultBranch"],s=n.directory?Ht(r.cwd,n.directory):r.cwd;n.directory&&await r.fs.mkdir(s,{recursive:!0});let{ctx:i,reinit:a}=await zs(r.fs,s,{bare:n.bare,...o?{initialBranch:o}:{}}),c="";a&&o&&(c=`warning: re-init: ignored --initial-branch=${o}
|
|
424
424
|
`);let f=n.bare?"bare ":"";return{stdout:`${a?"Reinitialized existing":"Initialized empty"} ${f}Git repository in ${i.gitDir}/
|
|
425
|
-
`,stderr:c,exitCode:0}}})}
|
|
426
|
-
`,s+=2;continue;case"%":o+="%",s+=2;continue;default:o+=`%${i}`,s+=2;continue}}o+=e[s],s++}return o}var
|
|
425
|
+
`,stderr:c,exitCode:0}}})}ie();ar();var No=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:Gl(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,Gl(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 Gl(e,t){return e.length>=t?e:e+" ".repeat(t-e.length)}ie();function Cs(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+=_l(c.timestamp,c.timezone),s+=3;continue;case"i":o+=Fl(c.timestamp,c.timezone),s+=3;continue;case"d":o+=_o(c.timestamp,c.timezone,t.dateMode),s+=3;continue;case"D":o+=Bl(c.timestamp,c.timezone),s+=3;continue;case"r":o+=Ul(c.timestamp),s+=3;continue}}switch(i){case"H":o+=n,s+=2;continue;case"h":o+=X(n),s+=2;continue;case"T":o+=r.tree,s+=2;continue;case"t":o+=X(r.tree),s+=2;continue;case"P":o+=r.parents.join(" "),s+=2;continue;case"p":o+=r.parents.map(X).join(" "),s+=2;continue;case"s":o+=da(r.message),s+=2;continue;case"b":o+=rg(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+=`
|
|
426
|
+
`,s+=2;continue;case"%":o+="%",s+=2;continue;default:o+=`%${i}`,s+=2;continue}}o+=e[s],s++}return o}var da=ue;function rg(e){let t=e.indexOf(`
|
|
427
427
|
|
|
428
|
-
`);return t===-1?"":e.slice(t+2).replace(/\n$/,"")}function
|
|
428
|
+
`);return t===-1?"":e.slice(t+2).replace(/\n$/,"")}function Fo(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 Ps(e,t,n,r=!1){let{hash:o,commit:s}=t,i=t.decorations?t.decorations(o):"";switch(e){case"oneline":{let a=r?X(o):o,c=da(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(X).join(" ")}`),a.push(`Author: ${s.author.name} <${s.author.email}>`),a.push(""),a.push(` ${da(s.message)}`),a.join(`
|
|
429
429
|
`)}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(X).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(`
|
|
430
430
|
`))a.push(` ${f}`);return a.join(`
|
|
431
|
-
`)}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(X).join(" ")}`),a.push(`Author: ${s.author.name} <${s.author.email}>`),a.push(`AuthorDate: ${
|
|
431
|
+
`)}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(X).join(" ")}`),a.push(`Author: ${s.author.name} <${s.author.email}>`),a.push(`AuthorDate: ${_o(s.author.timestamp,s.author.timezone,t.dateMode)}`),a.push(`Commit: ${s.committer.name} <${s.committer.email}>`),a.push(`CommitDate: ${_o(s.committer.timestamp,s.committer.timezone,t.dateMode)}`),a.push("");let c=s.message.replace(/\n$/,"");for(let f of c.split(`
|
|
432
432
|
`))a.push(` ${f}`);return a.join(`
|
|
433
433
|
`)}case"raw":return sg(t,n);default:return og(t,n)}}function sg(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(`
|
|
434
434
|
`))o.push(` ${i}`);return o.join(`
|
|
435
|
-
`)}function og(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(X).join(" ")}`),s.push(`Author: ${r.author.name} <${r.author.email}>`),s.push(`Date: ${
|
|
435
|
+
`)}function og(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(X).join(" ")}`),s.push(`Author: ${r.author.name} <${r.author.email}>`),s.push(`Date: ${_o(r.author.timestamp,r.author.timezone,e.dateMode)}`),s.push("");let i=r.message.replace(/\n$/,"");for(let a of i.split(`
|
|
436
436
|
`))s.push(` ${a}`);return s.join(`
|
|
437
|
-
`)}var Ll=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Nl=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function ig(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
|
|
438
|
-
`,exitCode:128};let k=n.date,C=n.patch?"patch":n.stat?"stat":n.nameStatus?"name-status":n.nameOnly?"name-only":n.shortstat?"shortstat":n.numstat?"numstat":null,P=n.graph;if(P&&n.reverse)return
|
|
437
|
+
`)}var Ll=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Nl=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function ig(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 Uo(e,t){let n=ig(t);return new Date((e+n*60)*1e3)}function ag(e){return`${e.slice(0,3)}:${e.slice(3)}`}function _l(e,t){let n=Uo(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"),f=t==="+0000"||t==="-0000"?"Z":ag(t);return`${r}-${o}-${s}T${i}:${a}:${c}${f}`}function Fl(e,t){let n=Uo(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 Ul(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 cg(e,t){let n=Uo(e,t),r=n.getUTCFullYear(),o=String(n.getUTCMonth()+1).padStart(2,"0"),s=String(n.getUTCDate()).padStart(2,"0");return`${r}-${o}-${s}`}function fg(e,t){return`${e} ${t}`}function lg(e){return e.toString()}function dg(e,t){let n=new Date(e*1e3),r=Ll[n.getDay()]?.slice(0,3),o=Nl[n.getMonth()],s=n.getDate(),i=String(n.getHours()).padStart(2,"0"),a=String(n.getMinutes()).padStart(2,"0"),c=String(n.getSeconds()).padStart(2,"0"),f=n.getFullYear();return`${r} ${o} ${s} ${i}:${a}:${c} ${f}`}function _o(e,t,n){switch(n){case"short":return cg(e,t);case"iso":return Fl(e,t);case"iso-strict":return _l(e,t);case"relative":case"human":return Ul(e);case"rfc":return Bl(e,t);case"raw":return fg(e,t);case"unix":return lg(e);case"local":return dg(e,t);default:return Cn(e,t)}}function Bl(e,t){let n=Uo(e,t),r=Ll[n.getUTCDay()]?.slice(0,3),o=Nl[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}`}ce();we();an();Ae();function zl(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:V.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:V.string().describe("Filter by author (regex or substring)"),grep:V.string().describe("Filter by commit message (regex or substring)"),since:V.string().describe("Show commits after date"),after:V.string().describe("Synonym for --since"),until:V.string().describe("Show commits before date"),before:V.string().describe("Synonym for --until"),decorate:$().describe("Show ref names next to commit hashes"),reverse:$().describe("Output commits in reverse order"),format:V.string().describe("Pretty-print format string"),pretty:V.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"),date:V.string().describe("Date format: short, iso, iso-strict, relative, rfc, raw, unix, local, human, default")},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?jo(f[0]):null;if(l){let J=async Oe=>{let rt=await We(i,Oe);if(!rt)return Zt(Oe);try{return await ve(i,rt)}catch{return Zt(Oe)}},ne=await J(l.left);if(typeof ne=="object"&&"exitCode"in ne)return ne;let ke=await J(l.right);if(typeof ke=="object"&&"exitCode"in ke)return ke;let Ge=ne,ae=ke;if(l.type==="two-dot")a=[ae],c=[Ge];else{a=[Ge,ae];let Oe=await Ut(i,Ge,ae);c=Oe.length>0?Oe:void 0}if(n.all){let Oe=await ge(i);for(let Sn of Oe)try{let qe=await ve(i,Sn.hash);a.includes(qe)||a.push(qe)}catch{}let rt=await Y(i);rt&&!a.includes(rt)&&a.push(rt)}}else if(n.all){let J=await ge(i),ne=new Set;for(let Ge of J)try{ne.add(await ve(i,Ge.hash))}catch{}let ke=await Y(i);ke&&ne.add(ke),a=[...ne]}else if(f&&f.length>0){let J=[];for(let ne of f){let ke=await We(i,ne);if(!ke)return Zt(ne);try{J.push(await ve(i,ke))}catch{return Zt(ne)}}a=J}else{let J=await Qe(i);if(M(J))return J;a=[J]}if(a.length===0)return O("your current branch does not have any commits yet");let d=o.passthrough.length>0?o.passthrough.map(J=>Ue(J,"")):null,m=n.author?Wl(n.author):null,u=n.grep?Wl(n.grep):null,h=n.since??n.after,p=n.until??n.before,g=h?Vi(h):null,w=p?Vi(p):null,R=n.format??n.pretty,x=null,b=null,y=!1;if(n.oneline)b="oneline",y=!0;else if(R!==void 0){let J=Fo(R);x=J.formatStr,b=J.preset}let E=new Set(["default","short","iso","iso-strict","relative","rfc","raw","unix","local","human"]);if(n.date&&!E.has(n.date))return{stdout:"",stderr:`fatal: unknown date format ${n.date}
|
|
438
|
+
`,exitCode:128};let k=n.date,C=n.patch?"patch":n.stat?"stat":n.nameStatus?"name-status":n.nameOnly?"name-only":n.shortstat?"shortstat":n.numstat?"numstat":null,P=n.graph;if(P&&n.reverse)return O("options '--graph' and '--reverse' cannot be used together");let v=n.decorate||x!=null&&(x.includes("%d")||x.includes("%D"))?await hg(i):null,T=v?J=>ql(v,J):void 0,N=v?J=>{let ne=ql(v,J);return ne.startsWith("(")&&ne.endsWith(")")?ne.slice(1,-1):ne}:void 0,S=n.maxCount,A=n.reverse,D=n.firstParent,_=d?mg(i,a,d,c?await ug(i,c):void 0,D):Lt(i,a,{exclude:c,topoOrder:P,firstParent:D}),F=[];for await(let J of _){if(S!==void 0&&F.length>=S)break;let{commit:ne}=J;if(!(w!==null&&ne.committer.timestamp>w)&&!(g!==null&&ne.committer.timestamp<=g)){if(m){let ke=`${ne.author.name} <${ne.author.email}>`;if(!m(ke))continue}u&&!u(ne.message)||F.push(J)}}let U=A?F.reverse():F;if(P)return pg(U,i,x,b,y,C,T,N,k);if(x!==null){let J=[];for(let ne of U){let ke={hash:ne.hash,commit:ne.commit,decorations:T,decorationsRaw:N,dateMode:k},Ge=Cs(x,ke),ae=await ua(i,ne.commit,C);ae&&(Ge+=`
|
|
439
439
|
|
|
440
|
-
${
|
|
440
|
+
${ae.replace(/\n$/,"")}`),J.push(Ge)}return{stdout:J.length>0?`${J.join(`
|
|
441
441
|
`)}
|
|
442
|
-
`:"",stderr:"",exitCode:0}}let L=b??"medium",K=L==="oneline",te=[];for(let J=0;J<U.length;J++){let ne=U[J],ke={hash:ne.hash,commit:ne.commit,decorations:
|
|
442
|
+
`:"",stderr:"",exitCode:0}}let L=b??"medium",K=L==="oneline",te=[];for(let J=0;J<U.length;J++){let ne=U[J],ke={hash:ne.hash,commit:ne.commit,decorations:T,decorationsRaw:N,dateMode:k},Ge=Ps(L,ke,J===0,y),ae=await ua(i,ne.commit,C);ae&&(Ge+=`${K?`
|
|
443
443
|
`:`
|
|
444
444
|
|
|
445
|
-
`}${
|
|
445
|
+
`}${ae.replace(/\n$/,"")}`),te.push(Ge)}return{stdout:te.length>0?`${te.join(`
|
|
446
446
|
`)}
|
|
447
|
-
`:"",stderr:"",exitCode:0}}})}async function ug(e,t){let n=new Set;for await(let r of
|
|
448
|
-
`),
|
|
449
|
-
`);if(d||n!==null)for(let
|
|
447
|
+
`:"",stderr:"",exitCode:0}}})}async function ug(e,t){let n=new Set;for await(let r of Lt(e,t))n.add(r.hash);return n}function Wl(e){try{let t=new RegExp(e);return n=>t.test(n)}catch{return t=>t.includes(e)}}async function*mg(e,t,n,r,o){let s=new Set(r),i=new Wn,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 Ve(e,null,f.tree)).some(u=>Ee(n,u.path))&&(yield c);continue}if(l.length===1){let m=l[0];if(m){try{let u=await j(e,m);(await Ve(e,u.tree,f.tree)).some(p=>Ee(n,p.path))&&(yield c)}catch{yield c}await a(m)}continue}let d=[];for(let m of l)try{let u=await j(e,m);(await Ve(e,u.tree,f.tree)).some(p=>Ee(n,p.path))||d.push(m)}catch{}if(d.length>0&&d[0])await a(d[0]);else{yield c;for(let m of l)await a(m)}}}async function hg(e){let t=await Q(e),n=t?.type==="symbolic"?Pe(t.target):null,r=await Y(e),o=new Map,s=(f,l,d)=>{let m=o.get(f);m||(m=[],o.set(f,m)),m.push({label:l,fullRef:d})},i=await ge(e,"refs/heads");for(let f of i)s(f.hash,Pe(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 ve(e,f.hash)}catch{}s(l,`tag: ${f.name.replace("refs/tags/","")}`,f.name)}return{headTarget:n,headHash:r,byHash:o}}function ql(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 pg(e,t,n,r,o,s,i,a,c){let f=new No,l=r??"medium",d=l==="oneline",m=[];for(let u=0;u<e.length;u++){let h=e[u],p={hash:h.hash,commit:h.commit,decorations:i,decorationsRaw:a,dateMode:c},g;n!==null?g=Cs(n,p):g=Ps(l,p,!0,o),f.update(h.hash,h.commit.parents),u>0&&!d&&n===null&&m.push(f.paddingPrefix());let w=g.split(`
|
|
448
|
+
`),R=0;for(;;){let{prefix:y,isCommitLine:E}=f.nextLine();if(E){m.push(y+(w[R++]??""));break}m.push(y)}for(;R<w.length;){let{prefix:y}=f.nextLine();m.push(y+w[R++])}for(;!f.isFinished();){let{prefix:y}=f.nextLine();m.push(y)}let x=80-f.width,b=await ua(t,h.commit,s,x);if(b){let y=b.replace(/\n$/,"").split(`
|
|
449
|
+
`);if(d||n!==null)for(let E of y)m.push(f.paddingPrefix()+E);else{m.push(f.paddingPrefix());for(let E of y)m.push(f.paddingPrefix()+E)}}}return{stdout:m.length>0?`${m.join(`
|
|
450
450
|
`)}
|
|
451
|
-
`:"",stderr:"",exitCode:0}}async function
|
|
451
|
+
`:"",stderr:"",exitCode:0}}async function ua(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 Ve(e,o,t.tree),{remaining:i,renames:a}=await it(e,s);switch(n){case"name-only":return gg(i,a);case"name-status":return wg(i,a);case"stat":return bg(e,i,a,r);case"shortstat":return yg(e,i,a);case"numstat":return Eg(e,i,a);case"patch":return kg(e,i,a)}}function gg(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}
|
|
452
452
|
`).join("")}function wg(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}
|
|
453
453
|
`).join("")}async function bg(e,t,n,r){let{fileStats:o}=await Zn(e,t,n);return o.sort((s,i)=>s.sortKey<i.sortKey?-1:s.sortKey>i.sortKey?1:0),ur(o,r)}async function yg(e,t,n){let{fileStats:r}=await Zn(e,t,n),o=0,s=0;for(let a of r)o+=a.insertions,s+=a.deletions;let i=Xn(r.length,o,s);return i?`${i}
|
|
454
|
-
`:""}async function Eg(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:
|
|
455
|
-
`;else{let c=Rt(i),f=Rt(a),l=ct(c,f),d=0,
|
|
456
|
-
`}}return o}async function kg(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 se(e,i.oldHash):"",c=i.newHash?await se(e,i.newHash):"";o+=
|
|
457
|
-
`,
|
|
458
|
-
Please, commit your changes before you merge.`);if(await B(s,"CHERRY_PICK_HEAD"))return
|
|
459
|
-
Please, commit your changes before you merge.`);let
|
|
460
|
-
`);let
|
|
461
|
-
`,stderr:"",exitCode:0};let g=!!n.noFf,w=!!n.ffOnly;if(!n.noFf&&!n.ffOnly){let
|
|
454
|
+
`:""}async function Eg(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:un(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 se(e,s.oldHash):"",a=s.newHash?await se(e,s.newHash):"";if(Te(i)||Te(a))o+=`- - ${s.display}
|
|
455
|
+
`;else{let c=Rt(i),f=Rt(a),l=ct(c,f),d=0,m=0;for(let u of l)u.type==="insert"?d++:u.type==="delete"&&m++;o+=`${d} ${m} ${s.display}
|
|
456
|
+
`}}return o}async function kg(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 se(e,i.oldHash):"",c=i.newHash?await se(e,i.newHash):"";o+=Tt({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 se(e,i.oldHash):"",c=i.newHash?await se(e,i.newHash):"";o+=Tt({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}ie();Ce();me();nr();tt();function Vl(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=Ye(i);if(a)return a;let c=i.workTree,f=n.cached,l=n.modified,d=n.deleted,m=n.others,u=n.unmerged,h=n.stage,p=n["exclude-standard"],g=n["nul-terminate"],w=n["show-tags"];f||l||d||m||u||(f=!0);let x=await z(i),b=g?"\0":`
|
|
457
|
+
`,y=o.passthrough.length>0?o.passthrough.map(C=>{let P=r.cwd!==c?Rg(c,r.cwd):"";return Ue(C,P)}):null,E=[];if(f)for(let C of x.entries){if(y&&!Ee(y,C.path))continue;let P=w?C.stage>0?"M":"H":null;E.push(Kl(C,h,P))}if(u&&!f)for(let C of x.entries)C.stage!==0&&(y&&!Ee(y,C.path)||E.push(Kl(C,!0,w?"M":null)));if(l||d){let C=await xg(i,c,x);for(let{path:P,status:I}of C){if(I==="modified"&&!l||I==="deleted"&&!d||y&&!Ee(y,P))continue;let v=w?I==="deleted"?"R":"C":null;E.push(v?`${v} ${P}`:P)}}if(m){let C=await Cg(i,c,x,p);for(let P of C)y&&!Ee(y,P)||E.push(w?`? ${P}`:P)}return{stdout:E.length>0?E.join(b)+b:"",stderr:"",exitCode:0}}})}function Kl(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 Rg(e,t){return t===e?"":t.startsWith(`${e}/`)?t.slice(e.length+1):""}async function xg(e,t,n){let r=[];for(let o of n.entries){if(o.stage!==0)continue;let s=H(t,o.path);if(!await e.fs.exists(s)){r.push({path:o.path,status:"deleted"});continue}let a=await mt(e.fs,s);if(!a.isFile&&!a.isSymbolicLink)continue;await Nn(e.fs,s)!==o.hash&&r.push({path:o.path,status:"modified"})}return r}async function Cg(e,t,n,r){let o=new Set(n.entries.map(i=>i.path));return(await ot(e,t,"",{skipIgnore:!r})).filter(i=>!o.has(i))}ie();ar();Be();Ce();ce();ze();we();an();Ae();function Yl(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:V.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 Sg(s,r.env);if(n.continue)return Ig(s,r.env,t);let i=n.branch;if(!i)return O("you must specify a branch to merge");let a=await Qe(s);if(M(a))return a;let c=await z(s),f=Rn(c,"Merging");if(f)return f;if(await B(s,"MERGE_HEAD"))return O(`You have not concluded your merge (MERGE_HEAD exists).
|
|
458
|
+
Please, commit your changes before you merge.`);if(await B(s,"CHERRY_PICK_HEAD"))return O(`You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
|
|
459
|
+
Please, commit your changes before you merge.`);let m=await We(s,i);if(!m)return G(`merge: ${i} - not something we can merge
|
|
460
|
+
`);let u=await ve(s,m),h=await Ut(s,a,u),p=h[0]??null;if(h.length===0)return O("refusing to merge unrelated histories");if(p===u)return await be(s,"MERGE_MSG"),{stdout:`Already up to date.${n.squash?" (nothing to squash)":""}
|
|
461
|
+
`,stderr:"",exitCode:0};let g=!!n.noFf,w=!!n.ffOnly;if(!n.noFf&&!n.ffOnly){let y=await xe(s,"merge.ff");y==="false"?g=!0:y==="only"&&(w=!0)}if(g&&w)return O("--no-ff and --ff-only are incompatible");let R=p===a&&!g;if(w&&!R)return G(`hint: Diverging branches can't be fast-forwarded, you need to either:
|
|
462
462
|
hint:
|
|
463
463
|
hint: git merge --no-ff
|
|
464
464
|
hint:
|
|
@@ -468,44 +468,44 @@ hint: git rebase
|
|
|
468
468
|
hint:
|
|
469
469
|
hint: Disable this message with "git config set advice.diverging false"
|
|
470
470
|
fatal: Not possible to fast-forward, aborting.
|
|
471
|
-
`,128);if(await B(s,"REVERT_HEAD")&&await
|
|
471
|
+
`,128);if(await B(s,"REVERT_HEAD")&&await Ot(s),R&&!n.squash){let y=await Q(s),E=await Po(s,a,u);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 be(s,"MERGE_MSG");let k=y?.type==="symbolic"?y.target:"HEAD";await oe(s,r.env,k,a,u,`merge ${i}: Fast-forward${n.message?" (no commit created; -m option ignored)":""}`,y?.type==="symbolic"),await t?.hooks?.postMerge?.({repo:s,headHash:a,theirsHash:u,strategy:"fast-forward",commitHash:null})}return E}let x=n.message,b=x?x.endsWith(`
|
|
472
472
|
`)?x:`${x}
|
|
473
|
-
`:void 0;return n.squash?Og(s,a,
|
|
473
|
+
`:void 0;return n.squash?Og(s,a,u,i,r.env,t,b):Pg(s,a,u,i,r.env,g,t,b)}})}async function Pg(e,t,n,r,o,s=!1,i,a){let c=await j(e,t),f=await Q(e),l=f?.type==="symbolic"?Pe(f.target):"HEAD",d=await xe(e,"merge.conflictstyle")??"merge",m={a:"HEAD",b:r,conflictStyle:d},u=await ws(e,t,n,m),h=await $n(e,u,c.tree,{labels:m,errorExitCode:2,operationName:"merge"});if(!h.ok)return await be(e,"MERGE_MSG"),h.failureKind==="staged"&&f?.type==="symbolic"&&await oe(e,o,"HEAD",t,t,`merge ${r}: updating HEAD`),h;if(u.conflicts.length>0){await Z(e,"MERGE_HEAD",n),await Z(e,"ORIG_HEAD",t);let I=a??await mr(e,r,l),v={repo:e,message:I,treeHash:h.mergedTreeHash,headHash:t,theirsHash:n},T=await i?.hooks?.mergeMsg?.(v);if(de(T))return{stdout:"",stderr:T.message??"",exitCode:1};I=v.message;let N=Wt({version:2,entries:u.entries}).sort();return I+=`
|
|
474
474
|
# Conflicts:
|
|
475
|
-
${N.map(
|
|
475
|
+
${N.map(A=>`# ${A}`).join(`
|
|
476
476
|
`)}
|
|
477
|
-
`,await
|
|
477
|
+
`,await Me(e,"MERGE_MSG",I),await Me(e,"MERGE_MODE",s?"no-ff":""),{stdout:`${[...u.messages,"Automatic merge failed; fix conflicts and then commit the result."].join(`
|
|
478
478
|
`)}
|
|
479
|
-
`,stderr:"",exitCode:1}}await
|
|
479
|
+
`,stderr:"",exitCode:1}}await be(e,"MERGE_MSG");let p=h.mergedTreeHash,g=await dn(e,o);if(M(g))return g;let w=await nt(e,o);if(M(w))return w;let R=a??await mr(e,r,l),x={repo:e,message:R,treeHash:p,headHash:t,theirsHash:n},b=await i?.hooks?.mergeMsg?.(x);if(de(b))return{stdout:"",stderr:b.message??"",exitCode:1};R=x.message;let y=await i?.hooks?.preMergeCommit?.({repo:e,message:R,treeHash:p,headHash:t,theirsHash:n});if(de(y))return{stdout:"",stderr:y.message??"",exitCode:1};let E=await bt(e,p,[t,n],g,w,R),k=f?.type==="symbolic"?f.target:"HEAD";await oe(e,o,k,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 hn(e,c.tree,p);return{stdout:`${u.messages.length>0?`${u.messages.join(`
|
|
480
480
|
`)}
|
|
481
481
|
`:""}Merge made by the 'ort' strategy.
|
|
482
|
-
${C}`,stderr:"",exitCode:0}}async function $g(e,t,n){let r=[];for await(let o of
|
|
482
|
+
${C}`,stderr:"",exitCode:0}}async function $g(e,t,n){let r=[];for await(let o of Lt(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: ${Cn(s.timestamp,s.timezone)}`),r.push("");for(let i of o.commit.message.replace(/\n+$/,"").split(`
|
|
483
483
|
`))r.push(` ${i}`);r.push("")}return r.join(`
|
|
484
|
-
`)}async function Og(e,t,n,r,o,s,i){let a=await j(e,t),c=await Q(e),f=await xe(e,"merge.conflictstyle")??"merge",l={a:"HEAD",b:r,conflictStyle:f},d=await
|
|
485
|
-
`:"",h=await
|
|
484
|
+
`)}async function Og(e,t,n,r,o,s,i){let a=await j(e,t),c=await Q(e),f=await xe(e,"merge.conflictstyle")??"merge",l={a:"HEAD",b:r,conflictStyle:f},d=await Ut(e,t,n),m=d.length>0&&d[0]===t,u=m?`Updating ${X(t)}..${X(n)}
|
|
485
|
+
`:"",h=await ws(e,t,n,l),p=await $n(e,h,a.tree,{labels:l,errorExitCode:m?1:2,operationName:"merge",skipStagedChangeCheck:m});if(!p.ok){await be(e,"MERGE_MSG"),!m&&p.failureKind==="staged"&&c?.type==="symbolic"&&await oe(e,o,"HEAD",t,t,`merge ${r}: updating HEAD`);let E=p;return m&&(E.stderr=E.stderr.replace(/Merge with strategy ort failed\.\n$/,"")),u&&(E.stdout=u+E.stdout),E}let g;if(i?g=`Squashed commit of the following:
|
|
486
486
|
|
|
487
487
|
${i}`:g=`Squashed commit of the following:
|
|
488
488
|
|
|
489
|
-
${await $g(e,t,n)}`,await
|
|
489
|
+
${await $g(e,t,n)}`,await Me(e,"SQUASH_MSG",g),h.conflicts.length>0){let k=`
|
|
490
490
|
# Conflicts:
|
|
491
|
-
${
|
|
491
|
+
${Wt({version:2,entries:h.entries}).sort().map(I=>`# ${I}`).join(`
|
|
492
492
|
`)}
|
|
493
|
-
`,
|
|
493
|
+
`,C=await $e(e,"MERGE_MSG");return await Me(e,"MERGE_MSG",(C??"")+k),{stdout:`${[...h.messages,"Squash commit -- not updating HEAD","Automatic merge failed; fix conflicts and then commit the result."].join(`
|
|
494
494
|
`)}
|
|
495
|
-
`,stderr:"",exitCode:1}}let w=p.mergedTreeHash,
|
|
495
|
+
`,stderr:"",exitCode:1}}let w=p.mergedTreeHash,R=await hn(e,a.tree,w),x=h.messages.length>0?`${h.messages.join(`
|
|
496
496
|
`)}
|
|
497
|
-
`:"";return{stdout:`${
|
|
497
|
+
`:"";return{stdout:`${m?`${u}${i?"Fast-forward (no commit created; -m option ignored)":"Fast-forward"}
|
|
498
498
|
`:""}${x}Squash commit -- not updating HEAD
|
|
499
|
-
${
|
|
500
|
-
`,exitCode:0}}async function Ig(e,t,n){let r=await B(e,"MERGE_HEAD");if(!r)return
|
|
501
|
-
${
|
|
502
|
-
`);let f=c[c.length-1],l=c.slice(0,-1),d=
|
|
503
|
-
`)){if(!
|
|
504
|
-
`),a=!0)}}return a?i.hex():null}ze();
|
|
499
|
+
${m?R:""}`,stderr:m?"":`Automatic merge went well; stopped before committing as requested
|
|
500
|
+
`,exitCode:0}}async function Ig(e,t,n){let r=await B(e,"MERGE_HEAD");if(!r)return O("There is no merge in progress (MERGE_HEAD missing).");let o=await z(e),s=Rn(o,"Committing");if(s)return s;let i=await Qe(e);if(M(i))return i;let a=await j(e,i),c=await $e(e,"MERGE_MSG");if(c)c=$t(c);else{let C=await Q(e),P=C?.type==="symbolic"?Pe(C.target):"HEAD";c=await mr(e,"unknown",P)}let f=Ne(o),l=await Fe(e,f),d=await dn(e,t);if(M(d))return d;let m=await nt(e,t);if(M(m))return m;let u=Gt(c),h={repo:e,message:u,treeHash:l,headHash:i,theirsHash:r},p=await n?.hooks?.mergeMsg?.(h);if(de(p))return{stdout:"",stderr:p.message??"",exitCode:1};u=h.message;let g=await n?.hooks?.preMergeCommit?.({repo:e,message:u,treeHash:l,headHash:i,theirsHash:r});if(de(g))return{stdout:"",stderr:g.message??"",exitCode:1};let w=await bt(e,l,[i,r],d,m,u);await fs(e);let R=await Q(e),x=ue(u),b=R?.type==="symbolic"?R.target:"HEAD";await oe(e,t,b,i,w,`commit (merge): ${x}`,R?.type==="symbolic"),await n?.hooks?.postMerge?.({repo:e,headHash:i,theirsHash:r,strategy:"three-way",commitHash:w});let y=await hn(e,a.tree,l),E=R?.type==="symbolic"?Pe(R.target):"detached HEAD";return{stdout:`${jt(E,w,c)}
|
|
501
|
+
${y}`,stderr:"",exitCode:0}}async function Sg(e,t){return Bn(e,t,{operationRef:"MERGE_HEAD",noOpError:O("There is no merge to abort (MERGE_HEAD missing)."),operationName:"merge",clearState:fs})}ie();Ce();me();tt();function Xl(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=Ye(s);if(i)return i;let a=s.workTree,c=n.sources;if(c.length<2)return G(`usage: git mv [<options>] <source>... <destination>
|
|
502
|
+
`);let f=c[c.length-1],l=c.slice(0,-1),d=Ht(r.cwd,f),m=st(a,d);if(m.startsWith(".."))return O(`'${f}' is outside repository at '${a}'`);let u=await z(s),h=await r.fs.exists(d),p=h&&(await r.fs.stat(d)).isDirectory;if(l.length>1&&!p)return O(h?`destination '${f}' is not a directory`:`destination directory '${f}' does not exist`);let g=[];for(let w of l){let R=Ht(r.cwd,w),x=st(a,R);if(x.startsWith("..")){if(n.skip)continue;return O(`'${w}' is outside repository at '${a}'`)}if(!await r.fs.exists(R)){if(n.skip)continue;return O(`bad source, source=${x}, destination=${m}`)}let E=(await r.fs.stat(R)).isDirectory;if(!(E?u.entries.some(T=>T.path===x||T.path.startsWith(`${x}/`)):u.entries.some(T=>T.path===x&&T.stage===0))){let T=!E&&u.entries.some(N=>N.path===x&&N.stage>0);if(n.skip)continue;return O(T?`conflicted, source=${x}, destination=${m}`:`not under version control, source=${x}, destination=${m}`)}let C,P;if(p){let T=Br(x);C=m===""||m==="."?T:`${m}/${T}`,P=H(d,T)}else C=m,P=d;if(await r.fs.exists(P)&&!n.force)if((await r.fs.stat(P)).isDirectory){let N=Br(x);C=`${C}/${N}`,P=H(P,N)}else{if(n.skip)continue;return O(`destination exists, source=${x}, destination=${C}`)}if(x===C){if(n.skip)continue;return O(`can not move directory into itself, source=${x}, destination=${C}`)}let v=tn(P);if(!await r.fs.exists(v)){if(n.skip)continue;return O(`renaming '${x}' failed: No such file or directory`)}if(E){let T=`${x}/`,N=u.entries.filter(S=>S.path.startsWith(T)&&S.stage===0);for(let S of N){let A=S.path.slice(x.length),D=C+A,_=P+A;g.push({srcRel:S.path,dstRel:D,srcAbs:H(a,S.path),dstAbs:_})}}else g.push({srcRel:x,dstRel:C,srcAbs:R,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 R=tn(w.dstAbs);await r.fs.exists(R)||await r.fs.mkdir(R,{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=Ls(u,w.srcRel,0);if(b){u=lt(u,w.srcRel);let y={...b,path:w.dstRel};u=Ct(u,y)}}for(let w of g)await sr(r.fs,tn(w.srcAbs),a);return await fe(s,u),{stdout:"",stderr:"",exitCode:0}}})}ie();Be();Tn();Ce();ce();me();ht();ze();we();ie();Be();Ce();ce();ie();ce();wn();er();Ae();async function ma(e,t){let n=await ye(e,t);if(n.type!=="commit")return null;let r=sn(n.content),o=null;if(r.parents.length>0&&r.parents[0]){let f=await ye(e,r.parents[0]);f.type==="commit"&&(o=sn(f.content).tree)}let s=await Ve(e,o,r.tree);if(s.length===0)return null;let i=An(),a=!1,c=[...s].sort((f,l)=>Ie(f.path,l.path));for(let f of c){let l="",d="";if(f.oldHash)try{let u=await ye(e,f.oldHash);l=new TextDecoder().decode(u.content)}catch{}if(f.newHash)try{let u=await ye(e,f.newHash);d=new TextDecoder().decode(u.content)}catch{}let m=Tt({path:f.path,oldContent:l,newContent:d,oldMode:f.oldMode,newMode:f.newMode});if(m)for(let u of m.split(`
|
|
503
|
+
`)){if(!u||u.startsWith("index "))continue;let p=(u.startsWith("@@")?u.replace(/^@@ [^@]* @@/,"@@ @@"):u).replace(/[ \t\r]/g,"");p&&(i.update(p),i.update(`
|
|
504
|
+
`),a=!0)}}return a?i.hex():null}ze();we();Ae();Xt();tt();async function Tg(e){let t=await Q(e);return t?.type==="symbolic"?Pe(t.target):"detached HEAD"}function Zl(e){return e==="HEAD"?`HEAD is up to date.
|
|
505
505
|
`:`Current branch ${e} is up to date.
|
|
506
|
-
`}async function vg(e,t,n){if(!e.workTree)return null;let r=await
|
|
507
|
-
`)}return null}async function Ag(e,t,n,r){if(!e.workTree)return null;let o=await
|
|
508
|
-
`,exitCode:128}:null}async function Jl(e,t,n){if(!e.workTree)return null;let r=new Map(
|
|
506
|
+
`}async function vg(e,t,n){if(!e.workTree)return null;let r=await le(e,t),o=new Map(Ne(n).map(a=>[a.path,a])),s=new Set(await ot(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=to(i,{errorExitCode:1,operationName:"checkout",actionHint:"switch branches"});return G(`${a.stderr}error: could not detach HEAD
|
|
507
|
+
`)}return null}async function Ag(e,t,n,r){if(!e.workTree)return null;let o=await le(e,t),s=new Set(n.entries.map(c=>c.path)),i=new Set(await ot(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:`${to(a,{errorExitCode:128,operationName:"reset",actionHint:"reset"}).stderr}fatal: could not move back to ${r}
|
|
508
|
+
`,exitCode:128}:null}async function Jl(e,t,n){if(!e.workTree)return null;let r=new Map(Ne(t).map(i=>[i.path,i])),o=new Set(await ot(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 Ql(e,t){return`error: The following untracked working tree files would be overwritten by merge:
|
|
509
509
|
${e.map(r=>` ${r}`).join(`
|
|
510
510
|
`)}
|
|
511
511
|
Please move or remove them before you merge.
|
|
@@ -519,20 +519,20 @@ hint: edit the todo list first:
|
|
|
519
519
|
hint:
|
|
520
520
|
hint: git rebase --edit-todo
|
|
521
521
|
hint: git rebase --continue
|
|
522
|
-
`}async function
|
|
522
|
+
`}async function ha(e,t,n,r,o,s){await oe(e,t,"HEAD",n,r,`rebase (start): checkout ${s}`),o!=="detached HEAD"&&(await oe(e,t,o,n,r,`rebase (finish): ${o} onto ${r}`),await oe(e,t,"HEAD",r,r,`rebase (finish): returning to ${o}`))}async function Bo(e,t,n,r){let o=await j(e,t),s=await vg(e,o.tree,n);if(s)return s;let i=await kn(e,o.tree,n);return i.success&&(await fe(e,{version:2,entries:i.newEntries}),await De(e,i.worktreeOps)),r!=="detached HEAD"?await Z(e,r,t):await Z(e,"HEAD",t),null}async function pa(e,t,n,r,o,s,i,a,c){let f=r.startsWith("refs/heads/")?Pe(r):"HEAD",l=await z(e),d=Wt(l).sort();if(d.length>0)return{stdout:d.map(v=>`${v}: needs merge
|
|
523
523
|
`).join(""),stderr:`error: cannot rebase: You have unstaged changes.
|
|
524
524
|
error: additionally, your index contains uncommitted changes.
|
|
525
525
|
error: Please commit or stash them.
|
|
526
|
-
`,exitCode:1};let
|
|
526
|
+
`,exitCode:1};let m=await j(e,n),u=await le(e,m.tree);if(e.workTree){let v=Un(l,u),N=(await gt(e,l)).some(S=>S.status==="modified"||S.status==="deleted");if(v||N){let S=[];return N&&S.push("error: cannot rebase: You have unstaged changes."),v&&(N?S.push("error: additionally, your index contains uncommitted changes."):S.push("error: cannot rebase: Your index contains uncommitted changes.")),S.push("error: Please commit or stash them."),G(`${S.join(`
|
|
527
527
|
`)}
|
|
528
|
-
`)}}let
|
|
529
|
-
`,exitCode:0})}return{stdout:Zl(
|
|
528
|
+
`)}}let h=await a?.hooks?.preRebase?.({repo:e,upstream:i,branch:r!=="detached HEAD"?f:null});if(de(h))return{stdout:"",stderr:h.message??"",exitCode:1};let p=await ff(e,o,n),g=p.right;if(g.length===0){if(s!==n){let v=await Bo(e,s,l,r);return v||(await ha(e,t,n,s,r,i),{stdout:"",stderr:`Successfully rebased and updated ${r}.
|
|
529
|
+
`,exitCode:0})}return{stdout:Zl(f),stderr:"",exitCode:0}}let w=[],R=[];if(c?.reapplyCherryPicks)R.push(...g);else{let v=p.left,T=new Set;for(let N of v){let S=await ma(e,N.hash);S&&T.add(S)}if(T.size>0)for(let N of g){let S=await ma(e,N.hash);S&&T.has(S)?w.push(`warning: skipped previously applied commit ${X(N.hash)}`):R.push(N)}else R.push(...g)}let x="";if(w.length>0&&(x=`${w.join(`
|
|
530
530
|
`)}
|
|
531
531
|
hint: use --reapply-cherry-picks to include skipped commits
|
|
532
532
|
hint: Disable this message with "git config set advice.skippedCherryPicks false"
|
|
533
|
-
`),
|
|
534
|
-
`,exitCode:0}}let
|
|
535
|
-
`,exitCode:0})}let
|
|
533
|
+
`),R.length===0){if(s!==n){let v=await Bo(e,s,l,r);if(v)return v.stderr=x+v.stderr,v;await ha(e,t,n,s,r,i)}return{stdout:"",stderr:`${x}Successfully rebased and updated ${r}.
|
|
534
|
+
`,exitCode:0}}let b=R.map(v=>({hash:v.hash,subject:ue(v.commit.message)})),y=s,E=0;for(let v of b){let T=await j(e,v.hash);if(T.parents.length>1||T.parents.length===0||T.parents[0]!==y)break;y=v.hash,E++}let k=b.splice(0,E);if(b.length===0){if(y===n)return{stdout:Zl(f),stderr:x,exitCode:0};let v=await Bo(e,y,l,r);return v?(v.stderr=x+v.stderr,v):(await ha(e,t,n,y,r,i),{stdout:"",stderr:`${x}Successfully rebased and updated ${r}.
|
|
535
|
+
`,exitCode:0})}let C=await Bo(e,y,l,"detached HEAD");if(C)return C.stderr=x+C.stderr,C;await he(e,"CHERRY_PICK_HEAD"),await he(e,"REVERT_HEAD"),await be(e,"MERGE_MSG"),await be(e,"MERGE_MODE"),await oe(e,t,"HEAD",n,y,`rebase (start): checkout ${i}`);let P={headName:r,origHead:n,onto:s,todo:b,done:k,msgnum:E,end:E+b.length};await Gi(e,P),await Z(e,"ORIG_HEAD",n);let I=await ga(e,t);return x&&(I.stderr=x+I.stderr),I}function ed(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:V.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"),"reapply-cherry-picks":$().describe("Do not skip commits that are cherry-pick equivalents"),"no-reapply-cherry-picks":$().describe("Skip commits that are cherry-pick equivalents (default)")},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 Mg(s,r.env);if(n.continue)return jg(s,r.env);if(n.skip)return Gg(s,r.env);let i=n.upstream;if(!i)return O("no upstream configured and no upstream argument given");if(await _t(s))return O(`It seems that there is already a rebase-merge directory, and
|
|
536
536
|
I wonder if you are in the middle of another rebase. If that is the
|
|
537
537
|
case, please try
|
|
538
538
|
git rebase (--continue | --abort | --skip)
|
|
@@ -540,10 +540,10 @@ If that is not the case, please
|
|
|
540
540
|
rm -fr ".git/rebase-merge"
|
|
541
541
|
and run me again. I am stopping in case you still have something
|
|
542
542
|
valuable there.
|
|
543
|
-
`);let a=await Qe(s);if(M(a))return a;let c=await Q(s),f=c?.type==="symbolic"?c.target:"detached HEAD",l=await
|
|
544
|
-
`};if(s&&s===a){let
|
|
545
|
-
`};let
|
|
546
|
-
`);return{conflict:!0,stdout:
|
|
543
|
+
`);let a=await Qe(s);if(M(a))return a;let c=await Q(s),f=c?.type==="symbolic"?c.target:"detached HEAD",l=await je(s,i,`invalid upstream '${i}'`);if(M(l))return l;let d=l.hash,m,u=n.onto;if(u){let p=await je(s,u,`Does not point to a valid commit: '${u}'`);if(M(p))return p;m=p.hash}else m=d;let h=!!n["reapply-cherry-picks"];return pa(s,r.env,a,f,d,m,i,t,h?{reapplyCherryPicks:!0}:void 0)}})}async function ga(e,t){let n=[],r=[];for(;;){let o=await Et(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 cf(e);let i=await Hg(e,s,t);if(i.conflict){if(i.rescheduleCurrent){let a=await Et(e);a&&(a.todo=[s,...a.todo],await Gi(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 Dg(e,n,t)}async function Hg(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 Y(e);if(!a)return{conflict:!0,stdout:"",stderr:`fatal: no HEAD commit during rebase
|
|
544
|
+
`};if(s&&s===a){let S=await z(e);if(!i)return{conflict:!0,stdout:"",stderr:`fatal: missing parent commit during rebase
|
|
545
|
+
`};let A=await Ke(e,i.tree),D=await Ke(e,o.tree),_=new Map(A.map(K=>[K.path,K.hash])),F=new Map;for(let K of D){let te=_.get(K.path);(!te||te!==K.hash)&&F.set(K.path,K.hash)}let U=await Jl(e,S,F);if(U)return await Z(e,"REBASE_HEAD",r),await fo(e,r,o.author),{conflict:!0,stdout:"",stderr:Ql(U,t),rescheduleCurrent:!0};let L=await kn(e,o.tree,S);return L.success&&(await fe(e,{version:2,entries:L.newEntries}),await De(e,L.worktreeOps)),await jn(e,r),await oe(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=X(r),d=ue(o.message),m=await xe(e,"merge.conflictstyle")??"merge",u={a:"HEAD",b:d?`${l} (${d})`:l,conflictStyle:m},h=await Bt(e,f,c.tree,o.tree,u),p=await z(e),[g,w,R]=await Promise.all([Ke(e,c.tree),f?Ke(e,f):Promise.resolve([]),Ke(e,o.tree)]),x=new Set;for(let S of w)x.add(S.path);for(let S of g)x.add(S.path);for(let S of R)x.add(S.path);let b=p.entries.filter(S=>!x.has(S.path)),y=[...h.entries,...b];y.sort((S,A)=>Ie(S.path,A.path)||S.stage-A.stage);let E={version:2,entries:y},k=y.filter(S=>S.stage===0),C=await Fe(e,k),P=new Map(g.map(S=>[S.path,S])),I=new Map;for(let S of k){let A=P.get(S.path);(!A||A.hash!==S.hash)&&I.set(S.path,S.hash)}for(let S of h.conflicts){if(S.reason==="content"||S.reason==="add-add"){I.set(S.path,null);continue}if(S.reason==="delete-modify"){let A=h.entries.filter(F=>F.path===S.path&&F.stage>0),D=A.find(F=>F.stage===2),_=A.find(F=>F.stage===3);_&&!D&&I.set(S.path,_.hash)}}let v=await Jl(e,p,I);if(v)return await Z(e,"REBASE_HEAD",r),await fo(e,r,o.author),{conflict:!0,stdout:"",stderr:Ql(v,t),rescheduleCurrent:!0};if(await fe(e,E),e.workTree){let S=await Fn(e,c.tree,h.resultTree,p);S.success&&await De(e,S.worktreeOps)}if(h.conflicts.length>0){await Z(e,"REBASE_HEAD",r),await fo(e,r,o.author),await Me(e,"MERGE_MSG",o.message),await Me(e,"rebase-merge/message",o.message);let S=h.messages.join(`
|
|
546
|
+
`);return{conflict:!0,stdout:S?`${S}
|
|
547
547
|
`:"",stderr:`error: could not apply ${l}... ${t.subject}
|
|
548
548
|
hint: Resolve all conflicts manually, mark them as resolved with
|
|
549
549
|
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
|
|
@@ -552,12 +552,12 @@ hint: To abort and get back to the state before "git rebase", run "git rebase --
|
|
|
552
552
|
hint: Disable this message with "git config set advice.mergeConflict false"
|
|
553
553
|
Could not apply ${l}... # ${t.subject}
|
|
554
554
|
`}}if(C===c.tree)return{conflict:!1,stdout:"",stderr:`dropping ${r} ${t.subject} -- patch contents already upstream
|
|
555
|
-
`};let
|
|
556
|
-
`;return await he(e,"REBASE_HEAD"),await cr(e),await
|
|
555
|
+
`};let T=await nt(e,n);if(M(T))return{conflict:!0,stdout:"",stderr:T.stderr};let N=await bt(e,C,[a],o.author,T,o.message);return await oe(e,n,"HEAD",a,N,`rebase (pick): ${t.subject}`),{conflict:!1,stdout:"",stderr:""}}async function Dg(e,t,n){let r=await Et(e);if(!r)return O("no rebase in progress");let o=await Y(e);if(!o)return O("no HEAD during rebase finish");r.headName!=="detached HEAD"&&(await Z(e,r.headName,o),await Xe(e,"HEAD",r.headName),await yt(e),await oe(e,n,r.headName,r.origHead,o,`rebase (finish): ${r.headName} onto ${r.onto}`),await oe(e,n,"HEAD",o,o,`rebase (finish): returning to ${r.headName}`));let i=`Successfully rebased and updated ${r.headName}.
|
|
556
|
+
`;return await he(e,"REBASE_HEAD"),await cr(e),await Li(e),{stdout:"",stderr:t.join("")+i,exitCode:0}}async function Mg(e,t){let n=await Et(e);if(!n)return O("no rebase in progress");let r=await Y(e),o=n.origHead,s=await j(e,o),i=await z(e),a=await Ag(e,s.tree,i,o);if(a)return a;let c=await kn(e,s.tree,i);c.success&&(await fe(e,{version:2,entries:c.newEntries}),await De(e,c.worktreeOps)),n.headName!=="detached HEAD"?(await Z(e,n.headName,o),await Xe(e,"HEAD",n.headName),await yt(e)):await jn(e,o);let f=n.headName==="detached HEAD"?o:n.headName;return await oe(e,t,"HEAD",r,o,`rebase (abort): returning to ${f}`),await he(e,"REBASE_HEAD"),await cr(e),await Li(e),{stdout:"",stderr:"",exitCode:0}}async function jg(e,t){let n="";if(!await Et(e))return O("no rebase in progress");let o=await z(e);if(Mt(o))return G(`error: Committing is not possible because you have unmerged files.
|
|
557
557
|
hint: Fix them up in the work tree, and then use 'git add <file>'
|
|
558
558
|
hint: as appropriate to mark resolution and make a commit.
|
|
559
559
|
fatal: Exiting because of an unresolved conflict.
|
|
560
|
-
`,128);let s=await B(e,"REBASE_HEAD");if(s){let a=await Y(e);if(!a)return
|
|
560
|
+
`,128);let s=await B(e,"REBASE_HEAD");if(s){let a=await Y(e);if(!a)return O("Cannot read HEAD");let c=await j(e,a),f=Ne(o),l=await Fe(e,f),d=l!==c.tree,m=await $e(e,"rebase-merge/message")!==null;if(d&&!m)return G(`error: you have staged changes in your working tree
|
|
561
561
|
If these changes are meant to be squashed into the previous commit, run:
|
|
562
562
|
|
|
563
563
|
git commit --amend
|
|
@@ -570,37 +570,37 @@ In both cases, once you're done, continue with:
|
|
|
570
570
|
|
|
571
571
|
git rebase --continue
|
|
572
572
|
|
|
573
|
-
`);if(d){let
|
|
574
|
-
${P}`}await he(e,"REBASE_HEAD"),await he(e,"CHERRY_PICK_HEAD"),await he(e,"REVERT_HEAD"),await
|
|
573
|
+
`);if(d){let u=await j(e,s),h=await B(e,"CHERRY_PICK_HEAD"),p=h?await j(e,h):u,g;g=await $e(e,"rebase-merge/message")??await $e(e,"MERGE_MSG")??void 0,g&&(g=$t(g)),g||(g=u.message);let w=await nt(e,t);if(M(w))return w;let R=Gt(g),x=[a],b=await B(e,"MERGE_HEAD");b&&x.push(b);let y=await bt(e,l,x,p.author,w,R);b&&(await he(e,"MERGE_HEAD"),await be(e,"MERGE_MODE"));let E=ue(R);await oe(e,t,"HEAD",a,y,`rebase (continue): ${E}`);let k=await Tg(e),C=p.author.timestamp!==w.timestamp||p.author.timezone!==w.timezone,P=await mn(e,c.tree,l,p.author,w,C);n=`${jt(k,y,R)}
|
|
574
|
+
${P}`}await he(e,"REBASE_HEAD"),await he(e,"CHERRY_PICK_HEAD"),await he(e,"REVERT_HEAD"),await be(e,"MERGE_MSG"),await be(e,"rebase-merge/message")}let i=await ga(e,t);return n&&(i.stdout=n+i.stdout),i}async function Gg(e,t){if(!await Et(e))return O("no rebase in progress");let r=await Y(e);if(!r)return{stdout:"",stderr:`error: could not determine HEAD revision
|
|
575
575
|
fatal: could not discard worktree changes
|
|
576
|
-
`,exitCode:128};let o=await j(e,r),s=await z(e),i=await
|
|
577
|
-
`,128);let f=n.remote,l=n.branch;if(!f){let re=await Q(s);if(re?.type==="symbolic"){let
|
|
578
|
-
`),!
|
|
579
|
-
`,stderr:"",exitCode:0};if(d){let re=await Q(s),
|
|
580
|
-
`,stderr:"",exitCode:0};let U=!!n.noFf,L=!!n.ffOnly;if(!n.noFf&&!n.ffOnly){let re=await xe(s,"pull.ff");re==="false"?U=!0:re==="only"&&(L=!0)}let K=F===a;if(L&&!K)return
|
|
576
|
+
`,exitCode:128};let o=await j(e,r),s=await z(e),i=await kn(e,o.tree,s);return i.success&&(await fe(e,{version:2,entries:i.newEntries}),await De(e,i.worktreeOps)),await he(e,"REBASE_HEAD"),await he(e,"CHERRY_PICK_HEAD"),await he(e,"REVERT_HEAD"),await he(e,"MERGE_HEAD"),await be(e,"MERGE_MSG"),await be(e,"MERGE_MODE"),await be(e,"rebase-merge/message"),ga(e,t)}function td(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:V.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 O("--depth and --unshallow cannot be used together");if(n.unshallow&&!await Oo(s))return O("--unshallow on a complete repository does not make sense");let i=n.depth;n.unshallow&&(i=bs);let a=await Qe(s);if(M(a))return a;let c=await z(s);if(Mt(c))return G(`error: Pulling is not possible because you have unmerged files.
|
|
577
|
+
`,128);let f=n.remote,l=n.branch;if(!f){let re=await Q(s);if(re?.type==="symbolic"){let Le=re.target.startsWith("refs/heads/")?re.target.slice(11):re.target,en=(await pe(s))[`branch "${Le}"`];en&&(f=en.remote||"origin",!l&&en.merge&&(l=en.merge.startsWith("refs/heads/")?en.merge.slice(11):en.merge))}}f=f||"origin";let d=!1;if(n.rebase)d=!0;else if(!n.noRebase){let re=await Q(s);if(re?.type==="symbolic"){let Le=re.target.startsWith("refs/heads/")?re.target.slice(11):re.target,gn=await xe(s,`branch.${Le}.rebase`);(gn==="true"||gn!=="false"&&await xe(s,"pull.rebase")==="true")&&(d=!0)}else await xe(s,"pull.rebase")==="true"&&(d=!0)}let m;try{m=await Lr(s,f,r.env)}catch(re){let Le=re instanceof Error?re.message:"";if(Le.startsWith("network"))return O(Le);throw re}if(!m)return O(`'${f}' does not appear to be a git repository`);let{transport:u,config:h}=m,p=l??null,g=await t?.hooks?.prePull?.({repo:s,remote:f,branch:p});if(de(g))return{stdout:"",stderr:g.message??"",exitCode:1};let w=wr(h.fetchRefspec),R=await u.advertiseRefs();if(R.length===0)return O("Couldn't find remote ref HEAD");let b=(await ge(s)).map(re=>re.hash),y=await B(s,"HEAD");y&&b.push(y);let E=[],k=new Set,C=[];for(let re of R){if(re.name==="HEAD")continue;let Le=xs(w,re.name);Le!==null&&(C.push({remote:re,localRef:Le}),k.has(re.hash)||(k.add(re.hash),E.push(re.hash)))}let P=new Set(b),I=E.filter(re=>!P.has(re)),v,T=i!==void 0?await Hr(s):void 0;i!==void 0&&(v={depth:i,existingShallows:T});let N=I.length>0?I:v?E:[];if(N.length>0){let re=await u.fetch(N,b,v);re.shallowUpdates&&await Dr(s,re.shallowUpdates,T)}let S=await nn(s,r.env);for(let re of C){let Le=await B(s,re.localRef);await Z(s,re.localRef,re.remote.hash),await Ze(s,re.localRef,{oldHash:Le??ee,newHash:re.remote.hash,name:S.name,email:S.email,timestamp:S.timestamp,tz:S.tz,message:Le?"pull":"pull: storing head"})}let A=null;if(l){let re=R.find(Le=>Le.name===`refs/heads/${l}`);if(re)A=re.hash;else return O(`Couldn't find remote ref refs/heads/${l}`)}else{let re=R.find(Le=>Le.name==="HEAD");re&&(A=re.hash)}if(A&&await r.fs.writeFile(H(s.gitDir,"FETCH_HEAD"),`${A} ${h.url}
|
|
578
|
+
`),!A)return O("Could not determine remote HEAD");let D=A;if(a===D)return await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"up-to-date",commitHash:null}),{stdout:`Already up to date.
|
|
579
|
+
`,stderr:"",exitCode:0};if(d){let re=await Q(s),Le=re?.type==="symbolic"?re.target:"detached HEAD",gn=l?`${f}/${l}`:f,en=await pa(s,r.env,a,Le,D,D,gn,t);if(en.exitCode===0){let vd=await Y(s);await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"rebase",commitHash:vd})}return en}let _=await Ut(s,a,D),F=_[0]??null;if(_.length===0)return O("refusing to merge unrelated histories");if(F===D)return await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"up-to-date",commitHash:null}),{stdout:`Already up to date.
|
|
580
|
+
`,stderr:"",exitCode:0};let U=!!n.noFf,L=!!n.ffOnly;if(!n.noFf&&!n.ffOnly){let re=await xe(s,"pull.ff");re==="false"?U=!0:re==="only"&&(L=!0)}let K=F===a;if(L&&!K)return O("Not possible to fast-forward, aborting.");if(K&&!U){let re=await Po(s,a,D),Le=await Q(s),gn=Le?.type==="symbolic"?Le.target:"HEAD";return await Ze(s,gn,{oldHash:a,newHash:D,name:S.name,email:S.email,timestamp:S.timestamp,tz:S.tz,message:"pull: Fast-forward"}),Le?.type==="symbolic"&&await Ze(s,"HEAD",{oldHash:a,newHash:D,name:S.name,email:S.email,timestamp:S.timestamp,tz:S.tz,message:"pull: Fast-forward"}),re.exitCode===0&&(await t?.hooks?.postMerge?.({repo:s,headHash:a,theirsHash:D,strategy:"fast-forward",commitHash:null}),await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"fast-forward",commitHash:D})),re}let te=await Q(s),J=te?.type==="symbolic"?Pe(te.target):"HEAD",ne=l||f||"FETCH_HEAD",ke=await xe(s,"merge.conflictstyle")??"merge",Ge={a:"HEAD",b:ne,conflictStyle:ke},ae=await ws(s,a,D,Ge),Oe=await j(s,a),rt=await $n(s,ae,Oe.tree,{labels:Ge,errorExitCode:2,operationName:"merge"});if(!rt.ok)return rt;if(ae.conflicts.length>0){await Z(s,"MERGE_HEAD",D),await Z(s,"ORIG_HEAD",a);let re=await mr(s,ne,J),Le=Wt({version:2,entries:ae.entries}).sort();return re+=`
|
|
581
581
|
# Conflicts:
|
|
582
|
-
${
|
|
582
|
+
${Le.map(gn=>`# ${gn}`).join(`
|
|
583
583
|
`)}
|
|
584
|
-
`,await
|
|
584
|
+
`,await Me(s,"MERGE_MSG",re),{stdout:`${[...ae.messages,"Automatic merge failed; fix conflicts and then commit the result."].join(`
|
|
585
585
|
`)}
|
|
586
|
-
`,stderr:"",exitCode:1}}let Sn=rt.mergedTreeHash,
|
|
586
|
+
`,stderr:"",exitCode:1}}let Sn=rt.mergedTreeHash,qe=await dn(s,r.env);if(M(qe))return qe;let br=await nt(s,r.env);if(M(br))return br;let _r=await mr(s,ne,J),Pa={repo:s,message:_r,treeHash:Sn,headHash:a,theirsHash:D},$a=await t?.hooks?.mergeMsg?.(Pa);if(de($a))return{stdout:"",stderr:$a.message??"",exitCode:1};_r=Pa.message;let Oa=await t?.hooks?.preMergeCommit?.({repo:s,message:_r,treeHash:Sn,headHash:a,theirsHash:D});if(de(Oa))return{stdout:"",stderr:Oa.message??"",exitCode:1};let Is=await bt(s,Sn,[a,D],qe,br,_r);await t?.hooks?.postMerge?.({repo:s,headHash:a,theirsHash:D,strategy:"three-way",commitHash:Is}),await t?.hooks?.postPull?.({repo:s,remote:f,branch:p,strategy:"three-way",commitHash:Is});let Sd=te?.type==="symbolic"?te.target:"HEAD",Ia="pull: Merge made by the 'ort' strategy.";await Ze(s,Sd,{oldHash:a,newHash:Is,name:S.name,email:S.email,timestamp:S.timestamp,tz:S.tz,message:Ia}),te?.type==="symbolic"&&await Ze(s,"HEAD",{oldHash:a,newHash:Is,name:S.name,email:S.email,timestamp:S.timestamp,tz:S.tz,message:Ia});let Td=await hn(s,Oe.tree,Sn);return{stdout:`${ae.messages.length>0?`${ae.messages.join(`
|
|
587
587
|
`)}
|
|
588
588
|
`:""}Merge made by the 'ort' strategy.
|
|
589
|
-
${Td}`,stderr:"",exitCode:0}}})}
|
|
590
|
-
`);
|
|
591
|
-
`);let k=
|
|
592
|
-
`);let C=(await xe(s,"push.default"))?.toLowerCase()??"simple",P=await Lg(s,C,E,
|
|
593
|
-
`,stderr:"",exitCode:0};let p=await t?.hooks?.prePush?.({repo:s,remote:i,url:f.url,refs:
|
|
594
|
-
`);let
|
|
595
|
-
`),
|
|
596
|
-
`);else{let k=X(b.oldHash),C=X(b.newHash);w.push(` ${k}..${C} ${
|
|
597
|
-
`)}else{let k=
|
|
598
|
-
`)}}if(n["set-upstream"]&&!
|
|
599
|
-
`)}}let x={stdout:"",stderr:w.join(""),exitCode:
|
|
589
|
+
${Td}`,stderr:"",exitCode:0}}})}ie();Be();ht();we();function nd(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 Lr(s,i,r.env)}catch(b){let y=b instanceof Error?b.message:"";if(y.startsWith("network"))return O(y);throw b}if(!a)return O(`'${i}' does not appear to be a git repository`);let{transport:c,config:f}=a,l=n.force,d=await c.advertiseRefs(),m=new Map;for(let b of d)m.set(b.name,b.hash);if(n.tags&&n.all)return O("options '--tags' and '--all/--branches' cannot be used together");if(n.tags&&n.delete)return O("options '--delete' and '--tags' cannot be used together");let u=[],h=n.refspec;if(n.delete){let b=h&&h.length>0?h:[];if(b.length===0)return O("--delete requires a ref argument");for(let y of b){let E=y.startsWith("refs/")?y:`refs/heads/${y}`,k=m.get(E)??null;if(!k)return G(`error: unable to delete '${y}': remote ref does not exist
|
|
590
|
+
`);u.push({name:E,oldHash:k,newHash:ee,ok:l})}}else if(n.all){let b=await ge(s,"refs/heads");for(let y of b){let E=y.name,k=m.get(E)??null;u.push({name:E,oldHash:k,newHash:y.hash,ok:l})}}else if(h&&h.length>0)for(let b of h){let y=wr(b),E=await Ng(s,y.src);if(!E)return G(`error: src refspec '${y.src}' does not match any
|
|
591
|
+
`);let k=y.dst.startsWith("refs/")?y.dst:`refs/heads/${y.dst}`,C=m.get(k)??null;u.push({name:k,oldHash:C,newHash:E,ok:l||y.force})}else if(!n.tags){let b=await Q(s);if(!b||b.type!=="symbolic")return O("You are not currently on a branch.");let y=b.target,E=y.startsWith("refs/heads/")?y.slice(11):y,k=await Y(s);if(!k)return G(`error: src refspec does not match any
|
|
592
|
+
`);let C=(await xe(s,"push.default"))?.toLowerCase()??"simple",P=await Lg(s,C,y,E,k,i,m,l);if("exitCode"in P)return P;u.push(P)}if(n.tags){let b=await ge(s,"refs/tags");for(let y of b){let E=m.get(y.name)??null;E!==y.hash&&(u.some(k=>k.name===y.name)||u.push({name:y.name,oldHash:E,newHash:y.hash,ok:l}))}}if(u.length===0)return{stdout:`Everything up-to-date
|
|
593
|
+
`,stderr:"",exitCode:0};let p=await t?.hooks?.prePush?.({repo:s,remote:i,url:f.url,refs:u.map(b=>({srcRef:b.newHash===ee?null:b.name,srcHash:b.newHash===ee?null:b.newHash,dstRef:b.name,dstHash:b.oldHash,force:!!b.ok,delete:b.newHash===ee}))});if(de(p))return G(p.message??"");let g=await c.push(u),w=[];w.push(`To ${f.url}
|
|
594
|
+
`);let R=!1;for(let b of g.updates){let y=b.name.startsWith("refs/tags/"),E=b.name.startsWith("refs/heads/")?b.name.slice(11):b.name.startsWith("refs/tags/")?b.name.slice(10):b.name;if(!b.ok)w.push(` ! [rejected] ${E} -> ${E} (${b.error??"failed"})
|
|
595
|
+
`),R=!0;else if(b.oldHash)if(b.newHash===ee)w.push(` - [deleted] ${E}
|
|
596
|
+
`);else{let k=X(b.oldHash),C=X(b.newHash);w.push(` ${k}..${C} ${E} -> ${E}
|
|
597
|
+
`)}else{let k=y?"[new tag]":"[new branch]";w.push(` * ${k} ${E} -> ${E}
|
|
598
|
+
`)}}if(n["set-upstream"]&&!R){let b=await Q(s);if(b?.type==="symbolic"){let y=b.target.startsWith("refs/heads/")?b.target.slice(11):b.target,E=await pe(s);E[`branch "${y}"`]={remote:i,merge:`refs/heads/${y}`},await Je(s,E),w.push(`branch '${y}' set up to track '${i}/${y}'.
|
|
599
|
+
`)}}let x={stdout:"",stderr:w.join(""),exitCode:R?1:0};return R||await t?.hooks?.postPush?.({repo:s,remote:i,url:f.url,refs:u.map(b=>({srcRef:b.newHash===ee?null:b.name,srcHash:b.newHash===ee?null:b.newHash,dstRef:b.name,dstHash:b.oldHash,force:!!b.ok,delete:b.newHash===ee}))}),x}})}async function Lg(e,t,n,r,o,s,i,a){if(t==="nothing")return O(`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 pe(e))[`branch "${r}"`];if(!d?.remote||!d?.merge)return O(`The current branch ${r} has no upstream branch.
|
|
600
600
|
To push the current branch and set the remote as upstream, use
|
|
601
601
|
|
|
602
602
|
git push --set-upstream ${s} ${r}
|
|
603
|
-
`);let
|
|
603
|
+
`);let m=d.merge;return{name:m,oldHash:i.get(m)??null,newHash:o,ok:a}}let f=(await pe(e))[`branch "${r}"`];if(f?.remote&&f?.merge){let l=f.remote,d=f.merge;if(l===s)return(d.startsWith("refs/heads/")?d.slice(11):d)!==r?O(`The upstream branch of your current branch does not match
|
|
604
604
|
the name of your current branch. To push to the upstream branch
|
|
605
605
|
on the remote, use
|
|
606
606
|
|
|
@@ -609,42 +609,42 @@ on the remote, use
|
|
|
609
609
|
To push to the branch of the same name on the remote, use
|
|
610
610
|
|
|
611
611
|
git push ${s} HEAD
|
|
612
|
-
`):{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 Ng(e,t){if(t.startsWith("refs/"))return B(e,t);let n=await B(e,`refs/heads/${t}`);if(n)return n;let r=await B(e,`refs/tags/${t}`);return r||(t==="HEAD"?Y(e):null)}
|
|
612
|
+
`):{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 Ng(e,t){if(t.startsWith("refs/"))return B(e,t);let n=await B(e,`refs/heads/${t}`);if(n)return n;let r=await B(e,`refs/tags/${t}`);return r||(t==="HEAD"?Y(e):null)}ie();me();ze();we();function _g(e,t,n,r){return`${X(n)} ${e}@{${t}}: ${r}`}async function Wo(e,t,n){let r=t==="HEAD"?"HEAD":`refs/heads/${t}`;if(!await B(e,r))return{stdout:"",stderr:`fatal: ambiguous argument '${t}': unknown revision or path not in the working tree.
|
|
613
613
|
Use '--' to separate paths from revisions, like this:
|
|
614
614
|
'git <command> [<revision>...] -- [<file>...]'
|
|
615
|
-
`,exitCode:128};let s=await et(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
|
|
615
|
+
`,exitCode:128};let s=await et(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 m=s.length-1-l;d.newHash!==ee&&(i.push(_g(t,m,d.newHash,d.message)),c++)}return{stdout:i.length>0?`${i.join(`
|
|
616
616
|
`)}
|
|
617
|
-
`:"",stderr:"",exitCode:0}}function rd(e,t){return e.command("reflog",{description:"Manage reflog information",args:[q.string().name("args").variadic().optional()],options:{maxCount:V.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
|
|
618
|
-
`,exitCode:128};let l=
|
|
617
|
+
`:"",stderr:"",exitCode:0}}function rd(e,t){return e.command("reflog",{description:"Manage reflog information",args:[q.string().name("args").variadic().optional()],options:{maxCount:V.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 Wo(i,"HEAD",r.maxCount);let c=a[0];if(!c)return Wo(i,"HEAD",r.maxCount);if(c==="show"){let f=a[1]??"HEAD";return Wo(i,f,r.maxCount)}if(c==="exists"){let f=a[1];if(!f)return{stdout:"",stderr:`fatal: reflog exists requires a ref argument
|
|
618
|
+
`,exitCode:128};let l=H(i.gitDir,"logs",f);return{stdout:"",stderr:"",exitCode:await i.fs.exists(l)?0:1}}return Wo(i,c,r.maxCount)}})}ie();Be();ze();we();function Fg(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 sd(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 pe(a),f=Fg(c);if(f.length===0)return{stdout:"",stderr:"",exitCode:0};if(s.verbose){let l=[];for(let d of f){let u=c[`remote "${d}"`]?.url??"";l.push(`${d} ${u} (fetch)`),l.push(`${d} ${u} (push)`)}return{stdout:`${l.join(`
|
|
619
619
|
`)}
|
|
620
620
|
`,stderr:"",exitCode:0}}return{stdout:`${f.join(`
|
|
621
621
|
`)}
|
|
622
|
-
`,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)=>{if(!
|
|
623
|
-
`,3);let l=pr(s.url,t?.credentialCache).url;return c[f]={url:l,fetch:`+refs/heads/*:refs/remotes/${s.name}/*`},await Je(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
|
|
624
|
-
`,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
|
|
625
|
-
`,2);let l=pr(s.url,t?.credentialCache).url,d=c[f];return d&&(d.url=l),await Je(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
|
|
622
|
+
`,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)=>{if(!ts(`refs/remotes/${s.name}`,0))return O(`'${s.name}' is not a valid remote name`);let a=await W(i.fs,i.cwd,t);if(M(a))return a;let c=await pe(a),f=`remote "${s.name}"`;if(f in c)return G(`error: remote ${s.name} already exists.
|
|
623
|
+
`,3);let l=pr(s.url,t?.credentialCache).url;return c[f]={url:l,fetch:`+refs/heads/*:refs/remotes/${s.name}/*`},await Je(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 pe(a),f=`remote "${s.name}"`;return f in c?(delete c[f],Bg(c,s.name),await Je(a,c),await Wg(a,s.name),{stdout:"",stderr:"",exitCode:0}):G(`error: No such remote: '${s.name}'
|
|
624
|
+
`,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 pe(a);return Ug(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 pe(a),f=`remote "${s.name}"`;if(!(f in c))return G(`error: No such remote '${s.name}'
|
|
625
|
+
`,2);let l=pr(s.url,t?.credentialCache).url,d=c[f];return d&&(d.url=l),await Je(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 pe(a),f=`remote "${s.name}"`;return f in c?{stdout:`${c[f]?.url??""}
|
|
626
626
|
`,stderr:"",exitCode:0}:G(`error: No such remote '${s.name}'
|
|
627
|
-
`,2)}})}async function Ug(e,t,n,r){if(!
|
|
628
|
-
`,2);let s=`remote "${r}"`;if(s in t)return
|
|
627
|
+
`,2)}})}async function Ug(e,t,n,r){if(!ts(`refs/remotes/${r}`,0))return O(`'${r}' is not a valid remote name`);let o=`remote "${n}"`;if(!(o in t))return G(`error: No such remote: '${n}'
|
|
628
|
+
`,2);let s=`remote "${r}"`;if(s in t)return O(`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 Je(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 et(e,f.name);await Z(e,l,f.hash),await he(e,f.name),d.length>0&&await Ln(e,l,d)}return{stdout:"",stderr:"",exitCode:0}}function Bg(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 Wg(e,t){let n=`refs/remotes/${t}`,r=await ge(e,n);for(let o of r)await he(e,o.name)}ie();Ce();ce();me();ze();we();an();Ae();Xt();tt();function id(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 O("--soft, --mixed, and --hard are mutually exclusive");let f=n.soft||n.mixed||n.hard,l=ut(i,r.cwd);if(o.passthrough.length>0){let u=a.length>0?a[0]:void 0;return wa(i,o.passthrough,l,u,t)}if(!f&&a.length>0){let u=a[0],h=await We(i,u);return a.length===1&&h?od(i,u,"mixed",r.env,t):h?wa(i,a.slice(1),l,u,t):wa(i,a,l,void 0,t)}let d=n.soft?"soft":n.hard?"hard":"mixed",m=a.length>0?a[0]:"HEAD";return od(i,m,d,r.env,t)}})}async function wa(e,t,n,r,o){let s=await o?.hooks?.preReset?.({repo:e,mode:"paths",targetRef:r??null});if(de(s))return{stdout:"",stderr:s.message??"",exitCode:1};let i=null;if(r){let d=await We(e,r);if(!d)return Zt(r);let m=await ve(e,d);i=(await j(e,m)).tree}else{let d=await Y(e);d&&(i=(await j(e,d)).tree)}let a=await le(e,i??null),c=await z(e);if(t.some(ir)){let d=t.map(u=>Ue(u,n)),m=new Set;for(let[u]of a)m.add(u);for(let u of c.entries)m.add(u.path);for(let u of m){if(!Ee(d,u))continue;let h=a.get(u);h?c=Ct(c,{path:h.path,mode:parseInt(h.mode,8),hash:h.hash,stage:0,stat:Se()}):c=lt(c,u)}}else for(let d of t){let m=a.get(d);if(m)c=Ct(c,{path:m.path,mode:parseInt(m.mode,8),hash:m.hash,stage:0,stat:Se()});else if(c.entries.some(h=>h.path===d))c=lt(c,d);else if(!(e.workTree&&await e.fs.exists(H(e.workTree,d))))return Zt(d)}await fe(e,c);let l={stdout:await ad(e,c),stderr:"",exitCode:0};return await o?.hooks?.postReset?.({repo:e,mode:"paths",targetHash:null}),l}async function ad(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 gt(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(`
|
|
629
629
|
`)}
|
|
630
|
-
`}async function od(e,t,n,r,o){let s=await o?.hooks?.preReset?.({repo:e,mode:n,targetRef:t});if(
|
|
631
|
-
`:"";return await o?.hooks?.postReset?.({repo:e,mode:n,targetHash:a}),{stdout:
|
|
632
|
-
`,exitCode:1};s=lt(s,f)}}return c?(await
|
|
633
|
-
`)}async function zg(e,t,n,r){if(!e.workTree)return
|
|
630
|
+
`}async function od(e,t,n,r,o){let s=await o?.hooks?.preReset?.({repo:e,mode:n,targetRef:t});if(de(s))return{stdout:"",stderr:s.message??"",exitCode:1};let i=await We(e,t);if(!i)return Zt(t);let a=await ve(e,i),c=await j(e,a);if(n==="soft"){let u=await B(e,"MERGE_HEAD"),h=await z(e);if(u||Mt(h))return O("Cannot do a soft reset in the middle of a merge.")}let f=await Y(e),l=await Q(e);l?.type==="symbolic"?await Z(e,l.target,a):await Z(e,"HEAD",a);let d=`reset: moving to ${t}`;if(l?.type==="symbolic"&&f!==a?await oe(e,r,l.target,f,a,d,!0):(l?.type==="symbolic"||f!==a)&&await oe(e,r,"HEAD",f,a,d),await cr(e),n==="mixed"){let u=await Ke(e,c.tree),h=Ns(u.map(g=>({path:g.path,mode:parseInt(g.mode,8),hash:g.hash,stage:0,stat:Se()})));await fe(e,h);let p=await ad(e,h);if(p)return await o?.hooks?.postReset?.({repo:e,mode:n,targetHash:a}),{stdout:p,stderr:"",exitCode:0}}if(n==="hard"){let u=Ye(e);if(u)return u;let h=await z(e),p=await kn(e,c.tree,h);await fe(e,{version:2,entries:p.newEntries}),await De(e,p.worktreeOps)}let m=n==="hard"?`HEAD is now at ${X(a)} ${ue(c.message)}
|
|
631
|
+
`:"";return await o?.hooks?.postReset?.({repo:e,mode:n,targetHash:a}),{stdout:m,stderr:"",exitCode:0}}ie();Ce();ce();we();Ae();tt();function cd(e,t){e.command("restore",{description:"Restore working tree files",args:[q.string().name("pathspec").variadic().optional()],options:{source:V.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 O("you must specify path(s) to restore");if(n.ours&&n.theirs)return O("--ours and --theirs are incompatible");let c=!!n.staged,f=n.worktree!==void 0?!!n.worktree:!c,l=ut(i,r.cwd);if(n.ours||n.theirs)return n.source?O("cannot specify both --source and --ours/--theirs"):c?O("cannot use --ours/--theirs with --staged"):po(i,a,l,n.theirs?3:2,{deleteOnMissing:!0});let d=null;if(n.source){let m=await je(i,n.source,`could not resolve '${n.source}'`);if(M(m))return m;d=m.commit.tree}else if(c){let m=await Y(i);m&&(d=(await j(i,m)).tree)}return c&&f?Kg(i,a,l,d):c?qg(i,a,l,d):d?zg(i,a,l,d):ho(i,a,l)}})}async function qg(e,t,n,r){let o=await le(e,r),s=await z(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(!Ee(i,f))continue;c=!0;let l=o.get(f);if(l)s=Ct(s,{path:l.path,mode:parseInt(l.mode,8),hash:l.hash,stage:0,stat:Se()});else{if(s.entries.some(m=>m.path===f&&m.stage>0))return{stdout:"",stderr:`error: path '${f}' is unmerged
|
|
632
|
+
`,exitCode:1};s=lt(s,f)}}return c?(await fe(e,s),{stdout:"",stderr:"",exitCode:0}):G(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
633
|
+
`)}async function zg(e,t,n,r){if(!e.workTree)return O("this operation must be run in a work tree");let o=await le(e,r),s=t.map(f=>Ue(f,n)),i=[],a=await z(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(Ee(s,f)){if(!o.has(f)&&a.entries.some(d=>d.path===f&&d.stage!==0))return{stdout:"",stderr:`error: path '${f}' is unmerged
|
|
634
634
|
`,exitCode:1};i.push(f)}if(i.length===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
635
|
-
`);for(let f of i){let l=o.get(f);if(l)await dt(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 Kg(e,t,n,r){if(!e.workTree)return
|
|
636
|
-
`);for(let f of a){let l=o.get(f);if(l)s=Ct(s,{path:l.path,mode:parseInt(l.mode,8),hash:l.hash,stage:0,stat:Se()}),await dt(e,{path:l.path,hash:l.hash,mode:l.mode});else{if(s.entries.some(
|
|
637
|
-
`,exitCode:1};s=lt(s,f);let
|
|
638
|
-
`).join(""),stderr:"",exitCode:0};if(s&&o.length!==1)return
|
|
639
|
-
`).join(""),stderr:"",exitCode:0}}})}function
|
|
640
|
-
`);if(
|
|
635
|
+
`);for(let f of i){let l=o.get(f);if(l)await dt(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 Kg(e,t,n,r){if(!e.workTree)return O("this operation must be run in a work tree");let o=await le(e,r),s=await z(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)Ee(i,f)&&a.push(f);if(a.length===0)return G(`error: pathspec '${t[0]}' did not match any file(s) known to git
|
|
636
|
+
`);for(let f of a){let l=o.get(f);if(l)s=Ct(s,{path:l.path,mode:parseInt(l.mode,8),hash:l.hash,stage:0,stat:Se()}),await dt(e,{path:l.path,hash:l.hash,mode:l.mode});else{if(s.entries.some(u=>u.path===f&&u.stage>0))return{stdout:"",stderr:`error: path '${f}' is unmerged
|
|
637
|
+
`,exitCode:1};s=lt(s,f);let m=`${e.workTree}/${f}`;await e.fs.exists(m)&&await e.fs.rm(m)}}return await fe(e,s),{stdout:"",stderr:"",exitCode:0}}ie();ce();me();we();an();Ae();function fd(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"],m=n["is-bare-repository"],u=n["show-prefix"],h=n["show-cdup"],p=f||l||d||m||u||h,g=await W(r.fs,r.cwd,t);if(M(g))return g;let w=g,R=[];if(f){if(!w.workTree)return O("this operation must be run in a work tree");R.push(w.workTree)}if(l&&R.push(w.gitDir),d&&R.push(w.workTree?"true":"false"),m&&R.push(w.workTree?"false":"true"),u){if(!w.workTree)return O("this operation must be run in a work tree");let b=st(w.workTree,r.cwd);R.push(b===""?"":`${b}/`)}if(h){if(!w.workTree)return O("this operation must be run in a work tree");let b=st(r.cwd,w.workTree);R.push(b===""?"":`${b}/`)}if(p&&o.length===0)return{stdout:R.map(y=>`${y}
|
|
638
|
+
`).join(""),stderr:"",exitCode:0};if(s&&o.length!==1)return O("Needed a single revision");for(let b of o){if(a){let k=await Vg(w,b);if(k===null)return ba(b,s);R.push(k);continue}if(c){let k=await Yg(w,b);if(k===null)return ba(b,s);R.push(k);continue}let y=Vs(b);if(y){let k=await Xg(w,y.rev,y.path);if(k===null){let C=y.path.replace(/^\//,"");return O(`path '${C}' does not exist in '${y.rev}'`)}R.push(i?X(k):k);continue}let E=await We(w,b);if(!E)return ba(b,s);R.push(i?X(E):E)}return{stdout:R.map(b=>`${b}
|
|
639
|
+
`).join(""),stderr:"",exitCode:0}}})}function ba(e,t){return t?O("Needed a single revision"):Zt(e)}async function Vg(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 We(e,t)?t:null}async function Yg(e,t){if(t==="HEAD"||t==="@"){let r=await Q(e);return r?r.type==="symbolic"?r.target:"HEAD":null}if(!await We(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 B(e,o))return o}return t}async function Xg(e,t,n){let r=await We(e,t);if(!r)return null;let o=await j(e,r),s=n.replace(/^\//,"");return s===""?o.tree:(await le(e,o.tree)).get(s)?.hash??null}ie();Be();Ce();ce();ze();we();Ae();Xt();function ld(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"),skip:$().describe("Skip the current commit and continue"),"no-commit":$().alias("n").describe("Apply changes without creating a commit"),"no-edit":$().describe("Do not edit the commit message"),mainline:V.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 U=await t?.hooks?.preRevert?.({repo:s,mode:"abort",commitRef:null});if(de(U))return{stdout:"",stderr:U.message??"",exitCode:1};let L=await Zg(s,r.env);return L.exitCode===0&&await t?.hooks?.postRevert?.({repo:s,mode:"abort",commitHash:null,hadConflicts:!1}),L}if(n.continue){let U=await t?.hooks?.preRevert?.({repo:s,mode:"continue",commitRef:null});if(de(U))return{stdout:"",stderr:U.message??"",exitCode:1};let L=await Qg(s,r.env);if(L.exitCode===0){let K=await Y(s);await t?.hooks?.postRevert?.({repo:s,mode:"continue",commitHash:K,hadConflicts:!1})}return L}if(n.skip)return Jg(s,r.env);let i=n.commit;if(!i)return O("you must specify a commit to revert");let a=await t?.hooks?.preRevert?.({repo:s,mode:"revert",commitRef:i});if(de(a))return{stdout:"",stderr:a.message??"",exitCode:1};let c=await je(s,i);if(M(c))return c;let f=c.hash,l=c.commit,d=await Qe(s);if(M(d))return d;let m=await z(s),u=Rn(m,"Reverting",`fatal: revert failed
|
|
640
|
+
`);if(u)return u;let h=await j(s,d);if(s.workTree){let U=await le(s,h.tree);if(Un(m,U))return G(`error: your local changes would be overwritten by revert.
|
|
641
641
|
hint: commit your changes or stash them to proceed.
|
|
642
642
|
fatal: revert failed
|
|
643
643
|
`,128)}let p=n.mainline,g;if(l.parents.length>1){if(p===void 0)return G(`error: commit ${f} is a merge but no -m option was given.
|
|
644
644
|
fatal: revert failed
|
|
645
645
|
`,128);if(p<1||p>l.parents.length)return G(`error: commit ${f} does not have parent ${p}
|
|
646
646
|
fatal: revert failed
|
|
647
|
-
`,128);let U=l.parents[p-1];g=(await j(s,U)).tree}else if(l.parents.length===0)g=await Fe(s,[]);else{let U=l.parents[0];g=(await j(s,U)).tree}let w=X(f),
|
|
647
|
+
`,128);let U=l.parents[p-1];g=(await j(s,U)).tree}else if(l.parents.length===0)g=await Fe(s,[]);else{let U=l.parents[0];g=(await j(s,U)).tree}let w=X(f),R=ue(l.message),x=ew(l,f,p),b=await xe(s,"merge.conflictstyle")??"merge",y={a:"HEAD",b:R?`parent of ${w} (${R})`:`parent of ${w}`,conflictStyle:b},E=await Bt(s,l.tree,h.tree,g,y);if(E.conflicts.length===0&&E.resultTree===h.tree){let U=E.messages.length>0?`${E.messages.join(`
|
|
648
648
|
`)}
|
|
649
649
|
`:"",L=await at(s,{fromCommit:!0}),K=await B(s,"CHERRY_PICK_HEAD");return{stdout:`${U}${L}`,stderr:K?`The previous cherry-pick is now empty, possibly due to conflict resolution.
|
|
650
650
|
If you wish to commit it anyway, use:
|
|
@@ -652,7 +652,7 @@ If you wish to commit it anyway, use:
|
|
|
652
652
|
git commit --allow-empty
|
|
653
653
|
|
|
654
654
|
Otherwise, please use 'git cherry-pick --skip'
|
|
655
|
-
`:"",exitCode:1}}let k=await $n(s,
|
|
655
|
+
`:"",exitCode:1}}let k=await $n(s,E,h.tree,{labels:y,errorExitCode:128,operationName:"merge",callerCommand:"revert",skipStagedChangeCheck:!0});if(!k.ok)return k;if(E.conflicts.length>0){await Z(s,"REVERT_HEAD",f),await Z(s,"ORIG_HEAD",d),await Me(s,"MERGE_MSG",x);let U=E.messages.join(`
|
|
656
656
|
`);return await t?.hooks?.postRevert?.({repo:s,mode:"revert",commitHash:null,hadConflicts:!0}),{stdout:U?`${U}
|
|
657
657
|
`:"",stderr:`error: could not revert ${w}... ${ue(l.message)}
|
|
658
658
|
hint: After resolving the conflicts, mark them with
|
|
@@ -662,28 +662,32 @@ hint: You can instead skip this commit with "git revert --skip".
|
|
|
662
662
|
hint: To abort and get back to the state before "git revert",
|
|
663
663
|
hint: run "git revert --abort".
|
|
664
664
|
hint: Disable this message with "git config set advice.mergeConflict false"
|
|
665
|
-
`,exitCode:1}}if(n["no-commit"])return await Z(s,"REVERT_HEAD",f),await
|
|
665
|
+
`,exitCode:1}}if(n["no-commit"])return await Z(s,"REVERT_HEAD",f),await Me(s,"MERGE_MSG",x),{stdout:"",stderr:"",exitCode:0};let C=k.mergedTreeHash,P=await dn(s,r.env);if(M(P))return P;let I=await nt(s,r.env);if(M(I))return I;let v=await bt(s,C,[d],P,I,x);await Ot(s),await Nt(s);let T=await Q(s),N=ue(x),S=T?.type==="symbolic"?T.target:"HEAD";await oe(s,r.env,S,d,v,`revert: ${N}`,T?.type==="symbolic");let A=T?.type==="symbolic"?Pe(T.target):"detached HEAD",D=await mn(s,h.tree,C,P,I,P.timestamp!==I.timestamp||P.timezone!==I.timezone),_=jt(A,v,x),F=E.messages.length>0?`${E.messages.join(`
|
|
666
666
|
`)}
|
|
667
|
-
`:"";return await t?.hooks?.postRevert?.({repo:s,mode:"revert",commitHash:
|
|
668
|
-
${
|
|
667
|
+
`:"";return await t?.hooks?.postRevert?.({repo:s,mode:"revert",commitHash:v,hadConflicts:!1}),{stdout:`${F}${_}
|
|
668
|
+
${D}`,stderr:"",exitCode:0}}})}async function Zg(e,t){return await B(e,"REVERT_HEAD")?Bn(e,t,{operationRef:"REVERT_HEAD",noOpError:G(`error: no cherry-pick or revert in progress
|
|
669
669
|
fatal: revert failed
|
|
670
|
-
`,128),operationName:"revert",clearState:async o=>{await
|
|
670
|
+
`,128),operationName:"revert",clearState:async o=>{await Ot(o),await Nt(o)},origHeadAsTargetRev:!0}):await B(e,"CHERRY_PICK_HEAD")?Bn(e,t,{operationRef:"CHERRY_PICK_HEAD",noOpError:G(`error: no cherry-pick or revert in progress
|
|
671
671
|
fatal: revert failed
|
|
672
|
-
`,128),operationName:"revert",clearState:
|
|
672
|
+
`,128),operationName:"revert",clearState:Nt,origHeadAsTargetRev:!0}):G(`error: no cherry-pick or revert in progress
|
|
673
673
|
fatal: revert failed
|
|
674
|
-
`,128)}async function Jg(e,t){if(!await B(e,"REVERT_HEAD"))return G(`error: no
|
|
674
|
+
`,128)}async function Jg(e,t){if(!await B(e,"REVERT_HEAD"))return G(`error: no revert in progress
|
|
675
675
|
fatal: revert failed
|
|
676
|
-
`,128);let r=await
|
|
677
|
-
|
|
678
|
-
${
|
|
676
|
+
`,128);let r=await Y(e);if(!r)return O("unable to resolve HEAD");let o=await j(e,r),s=await z(e),i=await Or(e,o.tree,s,r);if(!i.success){let a=i.errorOutput;return{...a,stderr:a.stderr+`error: failed to skip the commit
|
|
677
|
+
fatal: revert failed
|
|
678
|
+
`}}return await fe(e,{version:2,entries:i.newEntries}),await De(e,i.worktreeOps),await oe(e,t,"HEAD",r,r,`reset: moving to ${r}`),await Ot(e),{stdout:"",stderr:"",exitCode:0}}async function Qg(e,t){if(!await B(e,"REVERT_HEAD"))return G(`error: no cherry-pick or revert in progress
|
|
679
|
+
fatal: revert failed
|
|
680
|
+
`,128);let r=await z(e),o=Rn(r,"Committing");if(o)return o;let s=await $e(e,"MERGE_MSG");if(!s)return G(`Aborting commit due to empty commit message.
|
|
681
|
+
`,1);let i=await $e(e,"SQUASH_MSG");i&&(s=i+s),s=$t(s);let a=Ne(r),c=await Fe(e,a),f=await Qe(e);if(M(f))return f;let l=await j(e,f),d=await dn(e,t);if(M(d))return d;let m=await nt(e,t);if(M(m))return m;let u=await B(e,"CHERRY_PICK_HEAD");u&&(d=(await j(e,u)).author);let h=Gt(s),p=await bt(e,c,[f],d,m,h);await Ot(e),await Nt(e),await be(e,"SQUASH_MSG");let g=await Q(e),w=ue(h),R=g?.type==="symbolic"?g.target:"HEAD";await oe(e,t,R,f,p,`commit: ${w}`,g?.type==="symbolic");let x=g?.type==="symbolic"?Pe(g.target):"detached HEAD",b=await mn(e,l.tree,c,d,m,d.timestamp!==m.timestamp||d.timezone!==m.timezone);return{stdout:`${jt(x,p,s)}
|
|
682
|
+
${b}`,stderr:"",exitCode:0}}function ew(e,t,n){let r=ue(e.message),o='Revert "',a=`${r.startsWith(o)&&r.endsWith('"')?`Reapply "${r.slice(o.length,-1)}"`:`Revert "${r}"`}
|
|
679
683
|
|
|
680
684
|
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
|
|
681
685
|
changes made to ${c}`}return a+=`.
|
|
682
|
-
`,a}
|
|
686
|
+
`,a}ie();Ce();ce();me();we();nr();Ae();function dd(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=Ye(s);if(i)return i;let a=s.workTree,c=n.paths;if(c.length===0)return G("usage: git rm [--cached] [-f] [-r] <file>...");let f=n.cached,l=n.recursive,d=n.force,m=await z(s),u=[],h=ut(s,r.cwd);for(let w of c){if(ir(w)){let y=[Ue(w,h)],E=m.entries.filter(k=>Ee(y,k.path));if(E.length===0)return O(`pathspec '${w}' did not match any files`);for(let k of E)u.push(k.path);continue}let R=Ht(r.cwd,w),x=st(a,R);if((x==="."||x==="")&&(x=""),x.startsWith(".."))return O(`'${w}' is outside repository at '${a}'`);if(await r.fs.exists(R)&&!(await mt(r.fs,R)).isSymbolicLink&&(await mt(r.fs,R)).isDirectory){if(!l)return O(`not removing '${x}' recursively without -r`);let y=x===""?"":`${x}/`,E=m.entries.filter(k=>y===""||k.path.startsWith(y));if(E.length===0)return O(`pathspec '${w}' did not match any files`);for(let k of E)u.push(k.path)}else{if(!m.entries.some(E=>E.path===x))return O(`pathspec '${w}' did not match any files`);u.push(x)}}if(!d){let w=await tw(s,m,u,f);if(w)return w}if(n.dryRun){let w=u.map(x=>`rm '${x}'`);return{stdout:w.length>0?`${w.join(`
|
|
683
687
|
`)}
|
|
684
|
-
`:"",stderr:"",exitCode:0}}let p=[];for(let w of
|
|
688
|
+
`:"",stderr:"",exitCode:0}}let p=[];for(let w of u){if(m=lt(m,w),!f){let R=H(a,w);await mt(r.fs,R).then(()=>!0).catch(()=>!1)&&await r.fs.rm(R)}p.push(`rm '${w}'`)}return await fe(s,m),{stdout:p.length>0?`${p.join(`
|
|
685
689
|
`)}
|
|
686
|
-
`:"",stderr:"",exitCode:0}}})}async function
|
|
690
|
+
`:"",stderr:"",exitCode:0}}})}async function tw(e,t,n,r){let o=await Y(e),s=new Map;if(o){let f=await j(e,o),l=await Ke(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 m=s.get(f)!==l.hash,u=!1;if(e.workTree){let h=H(e.workTree,f),p=!1;try{await mt(e.fs,h),p=!0}catch{p=!1}p&&(u=await Nn(e.fs,h)!==l.hash)}m&&u?i.push(f):m&&!r?a.push(f):u&&!r&&c.push(f)}if(i.length>0){let f=i.map(d=>` ${d}`).join(`
|
|
687
691
|
`),l=i.length===1?"the following file has":"the following files have";return G(`error: ${l} staged content different from both the
|
|
688
692
|
file and the HEAD:
|
|
689
693
|
${f}
|
|
@@ -696,40 +700,40 @@ ${f}
|
|
|
696
700
|
`),l=c.length===1?"the following file has":"the following files have";return G(`error: ${l} local modifications:
|
|
697
701
|
${f}
|
|
698
702
|
(use --cached to keep the file, or -f to force removal)
|
|
699
|
-
`)}return null}
|
|
703
|
+
`)}return null}ie();ce();an();Ys();me();Ae();var ya=new TextDecoder;function ud(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:V.string().describe("Pretty-print format string"),pretty:V.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=Vs(a);if(c)return nw(s,c.rev,c.path);if(a==="HEAD"){let p=await Qe(s);if(M(p))return p}let f=await wt(s,a,`bad object '${a}'`);if(M(f))return f;let l=await ye(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 m=n.format??n.pretty,u=null,h=null;if(m!==void 0){let p=Fo(m);u=p.formatStr,h=p.preset}switch(l.type){case"commit":{let p=await j(s,f);return{stdout:await md(s,f,p,d,u,h),stderr:"",exitCode:0}}case"tag":{let p=await Ic(s,f);return{stdout:await rw(s,p,d,u,h),stderr:"",exitCode:0}}case"tree":{let p=_n(l.content);return{stdout:hd(p),stderr:"",exitCode:0}}case"blob":return{stdout:ya.decode(l.content),stderr:"",exitCode:0}}}})}async function nw(e,t,n){let r=await je(e,t);if(M(r))return r;let o=r.commit.tree,s=n.replace(/^\//,""),a=(await le(e,o)).get(s);if(!a){let f=`path '${s}' does not exist in '${t}'`;if(e.workTree){let l=H(e.workTree,s);await e.fs.exists(l)&&(f=`path '${s}' exists on disk, but not in '${t}'`)}return O(f)}let c=await ye(e,a.hash);if(c.type==="blob")return{stdout:ya.decode(c.content),stderr:"",exitCode:0};if(c.type==="tree"){let f=_n(c.content);return{stdout:hd(f),stderr:"",exitCode:0}}return{stdout:ya.decode(c.content),stderr:"",exitCode:0}}async function md(e,t,n,r="patch",o=null,s=null){let i;if(o!==null)i=Cs(o,{hash:t,commit:n});else if(s!==null)i=Ps(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=>X(d)).join(" ");c.push(`Merge: ${l}`)}c.push(`Author: ${n.author.name} <${n.author.email}>`),c.push(`Date: ${Cn(n.author.timestamp,n.author.timezone)}`),c.push("");let f=n.message.replace(/\n$/,"");for(let l of f.split(`
|
|
700
704
|
`))c.push(` ${l}`);i=c.join(`
|
|
701
705
|
`)}if(!r)return`${i}
|
|
702
|
-
`;let a="";if(n.parents.length<=1){let c=n.parents.length===1?(await j(e,n.parents[0])).tree:null,f=await Ve(e,c,n.tree),{remaining:l,renames:d}=await it(e,f);a=await
|
|
706
|
+
`;let a="";if(n.parents.length<=1){let c=n.parents.length===1?(await j(e,n.parents[0])).tree:null,f=await Ve(e,c,n.tree),{remaining:l,renames:d}=await it(e,f);a=await sw(e,l,d,r)}else r==="patch"&&(a=await mw(e,n)??"");return a?`${i}
|
|
703
707
|
|
|
704
708
|
${a.replace(/\n$/,"")}
|
|
705
709
|
`:n.parents.length>=2?`${i}
|
|
706
710
|
|
|
707
711
|
`:`${i}
|
|
708
|
-
`}async function
|
|
712
|
+
`}async function rw(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: ${Cn(t.tagger.timestamp,t.tagger.timezone)}`),s.push("");let i=t.message.replace(/\n$/,"");for(let a of i.split(`
|
|
709
713
|
`))s.push(` ${a}`);if(t.objectType==="commit"){let a=await j(e,t.object),c=await md(e,t.object,a,n,r,o);s.push(""),s.push(c.replace(/\n$/,""))}return`${s.join(`
|
|
710
714
|
`)}
|
|
711
715
|
`}function hd(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(`
|
|
712
716
|
`)}
|
|
713
|
-
`:""}async function
|
|
717
|
+
`:""}async function sw(e,t,n,r){switch(r){case"patch":return uw(e,t,n);case"stat":return aw(e,t,n);case"shortstat":return cw(e,t,n);case"numstat":return fw(e,t,n);case"name-only":return ow(t,n);case"name-status":return iw(t,n);default:return""}}function ow(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(`
|
|
714
718
|
`)}
|
|
715
|
-
`:""}function
|
|
716
|
-
`).join(""):""}async function
|
|
717
|
-
`:""}async function
|
|
718
|
-
`;else{let c=Rt(i),f=Rt(a),l=ct(c,f),d=0,
|
|
719
|
-
`}}return o}async function
|
|
720
|
-
`,
|
|
721
|
-
`,J=
|
|
719
|
+
`:""}function iw(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}
|
|
720
|
+
`).join(""):""}async function aw(e,t,n){let{fileStats:r}=await Zn(e,t,n);return r.sort((o,s)=>o.sortKey<s.sortKey?-1:o.sortKey>s.sortKey?1:0),ur(r)}async function cw(e,t,n){let{fileStats:r}=await Zn(e,t,n),o=0,s=0;for(let a of r)o+=a.insertions,s+=a.deletions;let i=Xn(r.length,o,s);return i?`${i}
|
|
721
|
+
`:""}async function fw(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:un(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 se(e,s.oldHash):"",a=s.newHash?await se(e,s.newHash):"";if(Te(i)||Te(a))o+=`- - ${s.display}
|
|
722
|
+
`;else{let c=Rt(i),f=Rt(a),l=ct(c,f),d=0,m=0;for(let u of l)u.type==="insert"?d++:u.type==="delete"&&m++;o+=`${d} ${m} ${s.display}
|
|
723
|
+
`}}return o}async function lw(e,t){let n=t.oldHash?await se(e,t.oldHash):"",r=t.newHash?await se(e,t.newHash):"";return Tt({path:t.path,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode,oldHash:t.oldHash,newHash:t.newHash})}async function dw(e,t){let n=t.oldHash?await se(e,t.oldHash):"",r=t.newHash?await se(e,t.newHash):"";return Tt({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 uw(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 dw(e,s.entry):o+=await lw(e,s.entry);return o}async function mw(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 le(e,c.tree)})),r=await le(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 hw(e,a,n,r);return i}async function hw(e,t,n,r){let o=r.get(t),s=n.map(m=>m.get(t)??null),i=o?.hash??null,a=o?.mode??null,c=s.map(m=>m?.hash??null),f=s.map(m=>m?.mode??null),l=await Promise.all(c.map(async m=>m?await se(e,m):"")),d=i?await se(e,i):"";return Mo({path:t,parentHashes:c,parentModes:f,parentContents:l,resultHash:i,resultMode:a,resultContent:d})}ie();Ce();ce();we();ie();Tn();Ce();ce();wn();me();ze();we();Ae();Xt();tt();var Qt="refs/stash";function ka(e,t){return Ie(e.replaceAll("/","\0"),t.replaceAll("/","\0"))}async function pd(e){let t=await et(e,Qt),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 Nr(e,t){let n=await et(e,Qt);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 gd(e,t,n,r){if(!e.workTree)throw new Error("Cannot stash in a bare repository");let o=e.workTree,s=await Y(e);if(!s)return null;let i=await j(e,s),a=await z(e),c=Ne(a),f=await Fe(e,c),l=await Ve(e,i.tree,f),d=new Map(c.map(L=>[L.path,L])),m=await ot(e,o,"",{skipIgnore:!0}),u=!1;for(let L of m){let K=d.get(L);if(!K)continue;let te=H(o,L),J=await e.fs.readFileBuffer(te);if(await pt("blob",J)!==K.hash){u=!0;break}}if(!u)for(let[L]of d){let K=H(o,L);if(!await e.fs.exists(K)){u=!0;break}}let h=[];if(r?.includeUntracked){let L=await ot(e,o,"");for(let K of L)d.has(K)||h.push(K)}if(l.length===0&&!u&&h.length===0)return null;let p=await Ms(e,t),g=await qr(e,t),w=await Q(e),R=w?.type==="symbolic"?Pe(w.target):"(no branch)",x=X(s),b=ue(i.message),y=`index on ${R}: ${x} ${b}
|
|
724
|
+
`,E=on({type:"commit",tree:f,parents:[s],author:p,committer:g,message:y}),k=await He(e,"commit",E),C=await le(e,i.tree),P=[],I=new Set;for(let L of m){let K=d.get(L),te=C.get(L);if(!K&&!te)continue;let J=H(o,L),ne=await e.fs.readFileBuffer(J),ke=await He(e,"blob",ne),Ge=K?K.mode:parseInt(te?.mode??"100644",8);P.push({path:L,mode:Ge,hash:ke,stage:0,stat:Se()}),I.add(L)}for(let[L,K]of d)I.has(L)||C.has(L)||P.push({path:L,mode:K.mode,hash:K.hash,stage:0,stat:Se()});let v=await Fe(e,P),T=null;if(r?.includeUntracked){let L=[];for(let ne of h){let ke=H(o,ne),Ge=await e.fs.readFileBuffer(ke),ae=await He(e,"blob",Ge);L.push({path:ne,mode:33188,hash:ae,stage:0,stat:Se()})}let K=await Fe(e,L),te=`untracked files on ${R}: ${x} ${b}
|
|
725
|
+
`,J=on({type:"commit",tree:K,parents:[],author:p,committer:g,message:te});T=await He(e,"commit",J)}let N=n?`On ${R}: ${n}`:`WIP on ${R}: ${x} ${b}`,S=[s,k];T&&S.push(T);let A=on({type:"commit",tree:v,parents:S,author:p,committer:g,message:N}),D=await He(e,"commit",A),_=await Nr(e,0)??ee;await Ze(e,Qt,{oldHash:_,newHash:D,name:g.name,email:g.email,timestamp:g.timestamp,tz:g.timezone,message:N.trimEnd()}),await Z(e,Qt,D);let F=await kn(e,i.tree,a);await fe(e,{version:2,entries:F.newEntries}),await De(e,F.worktreeOps),(await Q(e))?.type==="symbolic"&&await oe(e,t,"HEAD",s,s,"reset: moving to HEAD");for(let L of["CHERRY_PICK_HEAD","MERGE_HEAD","ORIG_HEAD","REVERT_HEAD"])await he(e,L);for(let L of["MERGE_MSG","MERGE_MODE","SQUASH_MSG"]){let K=H(e.gitDir,L);await e.fs.exists(K)&&await e.fs.rm(K)}if(h.length>0)for(let L of h){if(C.has(L))continue;let K=H(o,L);await e.fs.exists(K)&&(await e.fs.rm(K),await sr(e.fs,tn(K),o))}return D}async function Ea(e,t){let n=e.workTree,r=await j(e,t),o=await Ke(e,r.tree),s=[];for(let i of o){let a=H(n,i.path);await e.fs.exists(a)?s.push(i.path):await dt(e,i)}return s.length>0?(s.sort(ka),{ok:!1,stdout:"",stderr:`${s.map(i=>`${i} already exists, no checkout`).join(`
|
|
722
726
|
`)}
|
|
723
727
|
error: could not restore untracked files from stash
|
|
724
|
-
`,exitCode:1}):{ok:!0,hasConflicts:!1,messages:[]}}async function
|
|
725
|
-
`,exitCode:128};let n=await
|
|
728
|
+
`,exitCode:1}):{ok:!0,hasConflicts:!1,messages:[]}}async function Ra(e,t=0){if(!e.workTree)return{ok:!1,stdout:"",stderr:`fatal: this operation must be run in a work tree
|
|
729
|
+
`,exitCode:128};let n=await Nr(e,t);if(!n)return{ok:!1,stdout:"",stderr:`error: stash@{${t}} is not a valid reference
|
|
726
730
|
`,exitCode:1};if(!await Y(e))return{ok:!1,stdout:"",stderr:`error: your current branch does not have any commits yet
|
|
727
|
-
`,exitCode:1};let o=await z(e),s=
|
|
731
|
+
`,exitCode:1};let o=await z(e),s=Wt(o).sort();if(s.length>0)return{ok:!1,stdout:`${s.map(C=>`${C}: needs merge`).join(`
|
|
728
732
|
`)}
|
|
729
733
|
`,stderr:`error: could not write index
|
|
730
734
|
`,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)
|
|
731
|
-
`,exitCode:1};let c=await j(e,a),f=i.parents[2],l=
|
|
732
|
-
${
|
|
735
|
+
`,exitCode:1};let c=await j(e,a),f=i.parents[2],l=Ne(o),d=await Fe(e,l),m={a:"Updated upstream",b:"Stashed changes"};if(c.tree===i.tree){if(f){let k=await Ea(e,f);if(!k.ok)return{...k,messages:["Already up to date."]}}return{ok:!0,hasConflicts:!1,messages:["Already up to date."]}}let u=await Bt(e,c.tree,d,i.tree,m),h=await le(e,d),p=await le(e,u.resultTree),g=[];for(let[k,C]of p){let P=h.get(k);(!P||P.hash!==C.hash)&&g.push({path:k,type:"checkout",hash:C.hash,mode:parseInt(C.mode,8)})}for(let[k]of h)p.has(k)||g.push({path:k,type:"delete"});let w=new Map(l.map(k=>[k.path,k])),R=[],x=[];for(let k of g){let C=w.get(k.path),P=H(e.workTree,k.path);if(C){if(!await e.fs.exists(P))continue;let I=await e.fs.readFileBuffer(P);await pt("blob",I)!==C.hash&&R.push(k.path)}else k.type==="checkout"&&await e.fs.exists(P)&&x.push(k.path)}if(R.length>0||x.length>0){R.sort(ka),x.sort(ka);let k="";if(R.length>0&&(k+=`error: Your local changes to the following files would be overwritten by merge:
|
|
736
|
+
${R.map(C=>` ${C}`).join(`
|
|
733
737
|
`)}
|
|
734
738
|
Please commit your changes or stash them before you merge.
|
|
735
739
|
`),x.length>0&&(k+=`error: The following untracked working tree files would be overwritten by merge:
|
|
@@ -737,46 +741,46 @@ ${x.map(C=>` ${C}`).join(`
|
|
|
737
741
|
`)}
|
|
738
742
|
Please move or remove them before you merge.
|
|
739
743
|
`),k+=`Aborting
|
|
740
|
-
`,f){let C=await
|
|
741
|
-
`);let s=await z(e),i=
|
|
744
|
+
`,f){let C=await Ea(e,f);C.ok||(k+=C.stderr)}return{ok:!1,stdout:"",stderr:k,exitCode:1}}await De(e,g);let b=new Set(u.conflicts.map(k=>k.path)),y=new Set;for(let k of u.entries)k.stage>0&&y.add(k.path);let E=b.size>0;if(E){let k=[];for(let[C,P]of p){if(b.has(C)||y.has(C))continue;let I=w.get(C);k.push({path:C,mode:parseInt(P.mode,8),hash:P.hash,stage:0,stat:I?.stat??Se()})}for(let C of u.entries)C.stage>0&&k.push(C);k.sort((C,P)=>Ie(C.path,P.path)||C.stage-P.stage),await fe(e,{version:2,entries:k})}else{let k=[...o.entries],C=new Set(k.map(P=>P.path));for(let[P,I]of p)h.has(P)||C.has(P)||k.push({path:P,mode:parseInt(I.mode,8),hash:I.hash,stage:0,stat:Se()});k.sort((P,I)=>Ie(P.path,I.path)||P.stage-I.stage),await fe(e,{version:2,entries:k})}if(f){let k=await Ea(e,f);if(!k.ok)return{...k,messages:u.messages}}return{ok:!0,hasConflicts:E,messages:u.messages}}async function xa(e,t=0){let n=await et(e,Qt);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 he(e,Qt),await rs(e,Qt);else{await Ln(e,Qt,n);let o=n[n.length-1];o&&await Z(e,Qt,o.newHash)}return null}async function wd(e){await he(e,Qt),await rs(e,Qt)}Ae();function qo(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 pw(e,t){let n=t.oldHash?await se(e,t.oldHash):"",r=t.newHash?await se(e,t.newHash):"";return Tt({path:t.path,oldContent:n,newContent:r,oldMode:t.oldMode,newMode:t.newMode})}function yd(e,t){let n=e.command("stash",{description:"Stash the changes in a dirty working directory away",options:{message:V.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);return M(s)?s:bd(s,o.env,r.message,r["include-untracked"])}});n.command("push",{description:"Save your local modifications to a new stash entry",options:{message:V.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);return M(s)?s:bd(s,o.env,r.message,r["include-untracked"])}}),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);return M(s)?s:gw(s,r.stash)}}),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);return M(s)?s:ww(s,r.stash)}}),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);return M(s)?s:bw(s)}}),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);return M(s)?s:yw(s,r.stash)}}),n.command("show",{description:"Show the changes recorded in a stash entry as a diff",options:{patch:$().alias("p").describe("Show full diff (default is --stat)")},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);return M(s)?s:Ew(s,r.stash,r.patch)}}),n.command("clear",{description:"Remove all the stash entries",handler:async(r,o)=>{let s=await W(o.fs,o.cwd,t);return M(s)?s:kw(s)}})}async function bd(e,t,n,r){if(!await Y(e))return G(`You do not have the initial commit yet
|
|
745
|
+
`);let s=await z(e),i=Wt(s).sort();if(i.length>0)return{stdout:`${i.map(l=>`${l}: needs merge`).join(`
|
|
742
746
|
`)}
|
|
743
747
|
`,stderr:`error: could not write index
|
|
744
|
-
`,exitCode:1};let a;try{a=await gd(e,t,n,{includeUntracked:r})}catch(l){return
|
|
748
|
+
`,exitCode:1};let a;try{a=await gd(e,t,n,{includeUntracked:r})}catch(l){return O(l.message)}return a?{stdout:`Saved working directory and index state ${(await j(e,a)).message.trim()}
|
|
745
749
|
`,stderr:"",exitCode:0}:{stdout:`No local changes to save
|
|
746
|
-
`,stderr:"",exitCode:0}}async function
|
|
750
|
+
`,stderr:"",exitCode:0}}async function gw(e,t){let n=qo(t);if(n<0)return G(`error: '${t}' is not a valid stash reference`);let r=await Nr(e,n);if(!r)return G(`error: stash@{${n}} is not a valid reference`);let o=await Ra(e,n);if(!o.ok){let f=o.messages?.length?`${o.messages.join(`
|
|
747
751
|
`)}
|
|
748
752
|
`:"";if(o.stdout)return{stdout:`${f}${o.stdout}The stash entry is kept in case you need it again.
|
|
749
753
|
`,stderr:o.stderr,exitCode:o.exitCode};let l=await at(e);return{stdout:`${f}${l}The stash entry is kept in case you need it again.
|
|
750
754
|
`,stderr:o.stderr,exitCode:o.exitCode}}if(o.hasConflicts){let f=o.messages.length>0?`${o.messages.join(`
|
|
751
755
|
`)}
|
|
752
756
|
`:"",l=await at(e);return{stdout:`${f}${l}The stash entry is kept in case you need it again.
|
|
753
|
-
`,stderr:"",exitCode:1}}let s=await
|
|
757
|
+
`,stderr:"",exitCode:1}}let s=await xa(e,n);if(s)return G(s);let i=o.messages.length>0?`${o.messages.join(`
|
|
754
758
|
`)}
|
|
755
759
|
`:"",a=t?`stash@{${n}}`:`refs/stash@{${n}}`,c=await at(e);return{stdout:`${i}${c}Dropped ${a} (${r})
|
|
756
|
-
`,stderr:"",exitCode:0}}async function
|
|
760
|
+
`,stderr:"",exitCode:0}}async function ww(e,t){let n=qo(t);if(n<0)return G(`error: '${t}' is not a valid stash reference`);let r=await Ra(e,n);if(!r.ok){let a=r.messages?.length?`${r.messages.join(`
|
|
757
761
|
`)}
|
|
758
762
|
`:"",c=r.stdout;return c||(c=await at(e)),{stdout:`${a}${c}`,stderr:r.stderr,exitCode:r.exitCode}}let o=r.messages.length>0?`${r.messages.join(`
|
|
759
763
|
`)}
|
|
760
|
-
`:"",s=await at(e),i=r.hasConflicts?1:0;return{stdout:`${o}${s}`,stderr:"",exitCode:i}}async function
|
|
764
|
+
`:"",s=await at(e),i=r.hasConflicts?1:0;return{stdout:`${o}${s}`,stderr:"",exitCode:i}}async function bw(e){let t=await pd(e);return t.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${t.map(r=>`stash@{${r.index}}: ${r.message}`).join(`
|
|
761
765
|
`)}
|
|
762
|
-
`,stderr:"",exitCode:0}}async function
|
|
763
|
-
`,stderr:"",exitCode:0}}async function
|
|
766
|
+
`,stderr:"",exitCode:0}}async function yw(e,t){let n=qo(t);if(n<0)return G(`error: '${t}' is not a valid stash reference`);let r=await Nr(e,n);if(!r)return G(`error: stash@{${n}} is not a valid reference`);let o=await xa(e,n);return o?G(o):{stdout:`Dropped ${t?`stash@{${n}}`:`refs/stash@{${n}}`} (${r})
|
|
767
|
+
`,stderr:"",exitCode:0}}async function Ew(e,t,n){let r=qo(t);if(r<0)return G(`error: '${t}' is not a valid stash reference`);let o=await Nr(e,r);if(!o)return G(`error: stash@{${r}} is not a valid reference`);let s=await j(e,o),i=s.parents[0];if(!i)return G("error: invalid stash commit (no parent)");let a=await j(e,i);if(n){let f=await Ve(e,a.tree,s.tree),l="";for(let d of f)l+=await pw(e,d);return{stdout:l,stderr:"",exitCode:0}}return{stdout:await hn(e,a.tree,s.tree),stderr:"",exitCode:0}}async function kw(e){return await wd(e),{stdout:"",stderr:"",exitCode:0}}ie();Be();Ce();we();tt();function Ed(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 at(s),stderr:"",exitCode:0};let i=await Q(s),a=await Y(s),c,f=null;if(i&&i.type==="symbolic"){if(c=Pe(i.target),n.branch){let x=await pe(s),b=await Jt(s,x,c);f=$w(c,b)}}else c="HEAD detached",n.branch&&(f="## HEAD (no branch)");let l=await z(s),d=_i(l),m=await Ni(s,a,l,d),u=await gt(s,l),h=[],p=[];for(let x of u)x.status==="untracked"?p.push(x.path):h.push({path:x.path,status:x.status});h.sort((x,b)=>Ie(x.path,b.path));let g=new Set(l.entries.map(x=>x.path)),w=Fi(p,g);return{stdout:Pw(f,m,h,d,w),stderr:"",exitCode:0}}})}var Rw={"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 xw(e){switch(e){case"new file":return"A";case"modified":return"M";case"deleted":return"D";case"renamed":return"R";default:return" "}}function Cw(e){switch(e){case"modified":return"M";case"deleted":return"D";default:return" "}}function Pw(e,t,n,r,o){let s=[];e&&s.push(e);let i=new Map(r.map(d=>[d.path,d])),a=new Map(t.map(d=>[d.path,d])),c=new Map(n.map(d=>[d.path,d])),f=new Set;for(let d of r)f.add(d.path);for(let d of t)f.add(d.path);for(let d of n)f.add(d.path);let l=[...f].sort();for(let d of l){let m=i.get(d);if(m){let w=Rw[m.status]??"UU";s.push(`${w} ${$s(d)}`);continue}let u=a.get(d),h=c.get(d),p=u?xw(u.status):" ",g=h?Cw(h.status):" ";if(u?.status==="renamed"&&u.displayPath){let w=u.displayPath.indexOf(" -> "),R=u.displayPath.slice(0,w),x=u.displayPath.slice(w+4);s.push(`${p}${g} ${$s(R)} -> ${$s(x)}`)}else s.push(`${p}${g} ${$s(d)}`)}for(let d of o)s.push(`?? ${$s(d)}`);return s.length===0?"":`${s.join(`
|
|
764
768
|
`)}
|
|
765
|
-
`}function
|
|
766
|
-
Consider "git cherry-pick --quit" or "git worktree add".`):await
|
|
767
|
-
Consider "git merge --quit" or "git worktree add".`):await
|
|
768
|
-
Consider "git revert --quit" or "git worktree add".`):await
|
|
769
|
-
Consider "git rebase --quit" or "git worktree add".`):null}async function
|
|
770
|
-
${N}`,exitCode:0}}f=
|
|
771
|
-
`}else r&&(b=await
|
|
769
|
+
`}function $w(e,t){if(!t)return`## ${e}`;let n=`## ${e}...${t.upstream}`,r=uo(t,!1);return r?`${n} ${r}`:n}function $s(e){return!/[ \t"\\]/.test(e)&&!/[^\x20-\x7E]/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\t/g,"\\t").replace(/\n/g,"\\n")}"`}ie();Be();Ce();ce();ze();we();Ae();Xt();function Ow(e,t){return e?.type==="symbolic"?e.target.replace(/^refs\/heads\//,""):t??ee}function Rd(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:V.string().alias("c").describe("Create and switch to a new branch"),forceCreate:V.string().alias("C").describe("Create/reset and switch to a branch"),detach:$().alias("d").describe("Detach HEAD at named commit"),orphan:V.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?O("--orphan and -c/-C are incompatible"):n.detach?O("--orphan and --detach are incompatible"):Tw(i,n.orphan,r.env,t);if(n.detach){if(n.create||n.forceCreate)return O("--detach and -c/-C are incompatible");let l=a??"HEAD",d=await je(i,l,`invalid reference: ${l}`);return M(d)?d:Sw(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 kd(i,l,!!n.forceCreate,d,r.env,t)}if(!a)return O("missing branch or commit argument");if(a==="-")return Iw(i,r.env,t);let c=`refs/heads/${a}`,f=await B(i,c);if(f)return xd(i,a,c,f,r.env,t);if(n.guess!==!1){let l=await bo(i,a);if(l)return kd(i,a,!1,l.startPoint,r.env,t,l.trackingRef)}return O(`invalid reference: ${a}`)}})}async function Os(e){return await $e(e,"CHERRY_PICK_HEAD")?O(`cannot switch branch while cherry-picking
|
|
770
|
+
Consider "git cherry-pick --quit" or "git worktree add".`):await $e(e,"MERGE_HEAD")?O(`cannot switch branch while merging
|
|
771
|
+
Consider "git merge --quit" or "git worktree add".`):await $e(e,"REVERT_HEAD")?O(`cannot switch branch while reverting
|
|
772
|
+
Consider "git revert --quit" or "git worktree add".`):await _t(e)?O(`cannot switch branch while rebasing
|
|
773
|
+
Consider "git rebase --quit" or "git worktree add".`):null}async function Iw(e,t,n){let r=await Os(e);if(r)return r;let o=await mo(e);return o?xd(e,o.name,o.refName,o.hash,t,n):O("no previous branch")}async function kd(e,t,n,r,o,s,i){if(!bn(t))return O(`'${t}' is not a valid branch name`);let a=`refs/heads/${t}`,c=await B(e,a);if(c&&!n)return O(`a branch named '${t}' already exists`);let f;if(r){let I=await je(e,r,`invalid reference: ${r}`);if(M(I))return I;f=I.hash}else{let I=await Y(e);if(!I){let v=await Q(e),T=v?.type==="symbolic"?v.target.replace(/^refs\/heads\//,""):"";n&&c&&await he(e,a),await Xe(e,"HEAD",a),await yt(e);let N=await xn(e);return await oe(e,o,"HEAD",null,ee,`checkout: moving from ${T} to ${t}`),{stdout:"",stderr:`Switched to a new branch '${t}'
|
|
774
|
+
${N}`,exitCode:0}}f=I}let l=await Os(e);if(l)return l;let d=await s?.hooks?.preCheckout?.({repo:e,target:t,mode:"create-branch"});if(de(d))return{stdout:"",stderr:d.message??"",exitCode:1};let m=await Y(e),u=await z(e);if(r){let I=qn(u);if(I)return I}let h=await j(e,f);if(m&&m!==f){let I=await j(e,m);if(I.tree!==h.tree){let v=await Fn(e,I.tree,h.tree,u);if(!v.success)return v.errorOutput??G("error: checkout would overwrite local changes");u={version:2,entries:v.newEntries},await fe(e,u),await De(e,v.worktreeOps)}}let p=await Q(e),g="";p?.type==="direct"&&m&&(g=await go(e,m,f));let w=Ow(p,m);await Z(e,a,f),await Xe(e,"HEAD",a),await yt(e);let R=await xn(e),x=r??"HEAD";n&&c?c!==f&&await oe(e,o,a,c,f,`branch: Reset to ${x}`):await oe(e,o,a,null,f,`branch: Created from ${x}`),await oe(e,o,"HEAD",m,f,`checkout: moving from ${w} to ${t}`);let b="";if(i){let I=i.replace(/^refs\/remotes\//,"").split("/"),v=I[0]??"",T=`refs/heads/${I.slice(1).join("/")}`,N=await pe(e);N[`branch "${t}"`]={...N[`branch "${t}"`],remote:v,merge:T},await Je(e,N),b=`branch '${t}' set up to track '${v}/${I.slice(1).join("/")}'.
|
|
775
|
+
`}else r&&(b=await wo(e,t,r));await s?.hooks?.postCheckout?.({repo:e,prevHead:m,newHead:f,isBranchCheckout:!0});let y=n&&c?`Switched to and reset branch '${t}'
|
|
772
776
|
`:`Switched to a new branch '${t}'
|
|
773
|
-
`,
|
|
774
|
-
${
|
|
777
|
+
`,E=g+y+R+b,k="";r&&(k=await lr(e,h.tree,u));let C=await pe(e),P=await Jt(e,C,t);return P&&(k+=fr(P)),{stdout:k,stderr:E,exitCode:0}}async function xd(e,t,n,r,o,s){let i=await Os(e);if(i)return i;let a=await s?.hooks?.preCheckout?.({repo:e,target:t,mode:"switch"});return de(a)?{stdout:"",stderr:a.message??"",exitCode:1}:dr(e,t,n,r,o,s)}async function Sw(e,t,n,r,o){let s=await Os(e);if(s)return s;let i=await o?.hooks?.preCheckout?.({repo:e,target:t,mode:"detach"});return de(i)?{stdout:"",stderr:i.message??"",exitCode:1}:zn(e,n,r,o)}async function Tw(e,t,n,r){if(!bn(t))return O(`'${t}' is not a valid branch name`);let o=await Os(e);if(o)return o;let s=`refs/heads/${t}`;if(await B(e,s))return O(`a branch named '${t}' already exists`);let a=await z(e),c=qn(a);if(c)return c;let f=await Y(e),l=await Q(e),d="";if(l?.type==="direct"&&f&&(d=await Ui(e,f)),e.workTree){let u=f?(await j(e,f)).tree:null,h=await Fe(e,[]),p=await Fn(e,u,h,a);if(!p.success)return p.errorOutput??G("error: checkout would overwrite local changes");await De(e,p.worktreeOps),await fe(e,{version:2,entries:p.newEntries})}else await fe(e,Va());await Xe(e,"HEAD",s),await yt(e);let m=await xn(e);return await r?.hooks?.postCheckout?.({repo:e,prevHead:f,newHead:ee,isBranchCheckout:!0}),{stdout:"",stderr:`${d}Switched to a new branch '${t}'
|
|
778
|
+
${m}`,exitCode:0}}ie();ce();Pr();we();is();function Pd(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:V.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 O("tag name required");let i=`refs/tags/${n.name}`,a=await B(s,i);return a?(await he(s,i),{stdout:`Deleted tag '${n.name}' (was ${X(a)})
|
|
775
779
|
`,stderr:"",exitCode:0}):G(`error: tag '${n.name}' not found.
|
|
776
|
-
`)}if(n.list)return Cd(s,n.name||void 0);if(n.name){if(!
|
|
780
|
+
`)}if(n.list)return Cd(s,n.name||void 0);if(n.name){if(!Tc(n.name))return O(`'${n.name}' is not a valid tag name`);let i=n.commit,a;if(i){let d=await wt(s,i,`Failed to resolve '${i}' as a valid ref.`);if(M(d))return d;a=d}else if(a=await Y(s),!a)return O("Failed to resolve 'HEAD' as a valid ref.");let c=`refs/tags/${n.name}`;if(await B(s,c)&&!n.force)return O(`tag '${n.name}' already exists`);if(n.annotate||n.message){if(!n.message)return O("no tag message specified (use -m)");let d=await nt(s,r.env);if(M(d))return d;let m=Gt(n.message),u=$c({type:"tag",object:a,objectType:"commit",name:n.name,tagger:d,message:m}),h=await He(s,"tag",u);await Z(s,c,h)}else await Z(s,c,a);return{stdout:"",stderr:"",exitCode:0}}return Cd(s)}})}async function Cd(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=>cn(t,o,0)===0)),r.length===0?{stdout:"",stderr:"",exitCode:0}:{stdout:`${r.join(`
|
|
777
781
|
`)}
|
|
778
|
-
`,stderr:"",exitCode:0}}var $d=new Set(["am","annotate","apply","archive","bugreport","bundle","cat-file","check-ignore","check-mailmap","check-ref-format","checkout-index","cherry","commit-tree","count-objects","credential","daemon","diff-files","diff-index","diff-tree","difftool","fast-export","fast-import","filter-branch","for-each-ref","format-patch","fsck","hash-object","instaweb","interpret-trailers","log--hierarchical","ls-remote","ls-tree","maintenance","merge-base","merge-tree","mergetool","multi-pack-index","name-rev","notes","pack-objects","pack-refs","patch-id","prune","range-diff","read-tree","receive-pack","replace","request-pull","rerere","rev-list","send-email","send-pack","shortlog","show-branch","show-ref","sparse-checkout","stash--helper","stripspace","submodule","symbolic-ref","unpack-objects","update-index","update-ref","upload-pack","var","verify-commit","verify-pack","verify-tag","whatchanged","worktree","write-tree"]),
|
|
779
|
-
`,exitCode:1}}}),t}var
|
|
782
|
+
`,stderr:"",exitCode:0}}var $d=new Set(["am","annotate","apply","archive","bugreport","bundle","cat-file","check-ignore","check-mailmap","check-ref-format","checkout-index","cherry","commit-tree","count-objects","credential","daemon","diff-files","diff-index","diff-tree","difftool","fast-export","fast-import","filter-branch","for-each-ref","format-patch","fsck","hash-object","instaweb","interpret-trailers","log--hierarchical","ls-remote","ls-tree","maintenance","merge-base","merge-tree","mergetool","multi-pack-index","name-rev","notes","pack-objects","pack-refs","patch-id","prune","range-diff","read-tree","receive-pack","replace","request-pull","rerere","rev-list","send-email","send-pack","shortlog","show-branch","show-ref","sparse-checkout","stash--helper","stripspace","submodule","symbolic-ref","unpack-objects","update-index","update-ref","upload-pack","var","verify-commit","verify-pack","verify-tag","whatchanged","worktree","write-tree"]),vw={init:(e,t)=>jl(e,t),clone:(e,t)=>fl(e,t),describe:(e,t)=>dl(e,t),fetch:(e,t)=>Ol(e,t),pull:(e,t)=>td(e,t),push:(e,t)=>nd(e,t),add:(e,t)=>Xc(e,t),blame:(e,t)=>Tf(e,t),commit:(e,t)=>ul(e,t),status:(e,t)=>Ed(e,t),log:(e,t)=>zl(e,t),branch:(e,t)=>Af(e,t),tag:(e,t)=>Pd(e,t),checkout:(e,t)=>Df(e,t),diff:(e,t)=>Rl(e,t),reset:(e,t)=>id(e,t),merge:(e,t)=>Yl(e,t),"cherry-pick":(e,t)=>Vf(e,t),revert:(e,t)=>ld(e,t),rebase:(e,t)=>ed(e,t),mv:(e,t)=>Xl(e,t),rm:(e,t)=>dd(e,t),remote:(e,t)=>sd(e,t),config:(e,t)=>gl(e,t),show:(e,t)=>ud(e,t),stash:(e,t)=>yd(e,t),"rev-parse":(e,t)=>fd(e,t),"ls-files":(e,t)=>Vl(e,t),clean:(e,t)=>Yf(e,t),switch:(e,t)=>Rd(e,t),restore:(e,t)=>cd(e,t),reflog:(e,t)=>rd(e,t),repack:(e,t)=>Tl(e,t),gc:(e,t)=>vl(e,t),bisect:(e,t)=>gf(e,t),grep:(e,t)=>Ml(e,t)};function Od(e){let t=Zo("git",{description:"Git command"});for(let n of Object.values(vw))n(t,e);return t.command("help",{description:"Display help information",args:[q.string().name("command").describe("Command to get help for").optional()],handler:async n=>{let r=n.command;if(!r)return{stdout:yr(t),stderr:"",exitCode:0};let o=t.children.get(r);return o?{stdout:yr(o),stderr:"",exitCode:0}:{stdout:"",stderr:`git: no help available for '${r}'
|
|
783
|
+
`,exitCode:1}}}),t}var Aw="1.5.7";function Hw(e,t){if(!e)return t;let n=e.locked?"locked":"defaults",r={"user.name":e.name,"user.email":e.email};return t?{...t,[n]:{...r,...t[n]}}:{[n]:r}}var zo=class{name="git";defaultFs;defaultCwd;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.defaultCwd=t?.cwd??"/",this.hooks=t?.hooks,this.blocked=t?.disabled?.length?new Set(t.disabled):null;let n=t?.network,r=Hw(t?.identity,t?.config),o={hooks:t?.hooks,credentialProvider:t?.credentials,identityOverride:t?.identity,fetchFn:typeof n=="object"?n.fetch:void 0,networkPolicy:n,resolveRemote:t?.resolveRemote,credentialCache:new Map,...t?.objectStore?{objectStore:t.objectStore}:{},...t?.refStore?{refStore:t.refStore}:{},...t?.gitDir?{gitDir:t.gitDir,workTree:this.defaultCwd}:{},...r?{configOverrides:r}:{}};this.inner=Od(o).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??this.defaultCwd,s=Dw(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(r==="--version"||r==="version")return{stdout:`just-git version ${Aw} (virtual git implementation)
|
|
780
784
|
`,stderr:"",exitCode:0};if(this.blocked?.has(r))return{stdout:"",stderr:`git: '${r}' is not available in this environment
|
|
781
785
|
`,exitCode:1};if(r&&$d.has(r))return{stdout:"",stderr:`git: '${r}' is not implemented. Run 'git help' for available commands.
|
|
782
|
-
`,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(
|
|
786
|
+
`,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(de(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 Dw(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 Mw(e){return new zo(e)}var Id=new TextEncoder,jw=new TextDecoder;function pn(e){let t=[];for(let n of e.split("/"))n==="."||n===""||(n===".."?t.pop():t.push(n));return"/"+t.join("/")}function Ko(e){let t=e.lastIndexOf("/");return t<=0?"/":e.slice(0,t)}var Ca=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=pn(n);this.ensureParents(o),this.data.set(o,{type:"file",content:typeof r=="string"?Id.encode(r):r,mode:33188,mtime:new Date})}}ensureParents(t){let n=Ko(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 pn(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("/")?pn(a):pn(Ko(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=pn(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("/")?pn(f):pn(Ko(o)+"/"+f),a=this.data.get(o),c++}}return`${o}/${r[r.length-1]}`}async readFile(t){return jw.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"?Id.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=pn(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=Ko(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=pn(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=pn(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})}};Gn();export{zo as Git,Ca as MemoryFileSystem,vh as composeGitHooks,Mw as createGit,tr as findRepo,de as isRejection};
|