mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-30 04:55:54 +08:00 
			
		
		
		
	fix issue checking detached when git less than 2.22 (#128)
This commit is contained in:
		
							
								
								
									
										20
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -4799,9 +4799,11 @@ class GitCommandManager { | ||||
|     branchList(remote) { | ||||
|         return __awaiter(this, void 0, void 0, function* () { | ||||
|             const result = []; | ||||
|             // Note, this implementation uses "rev-parse --symbolic" because the output from | ||||
|             // Note, this implementation uses "rev-parse --symbolic-full-name" because the output from | ||||
|             // "branch --list" is more difficult when in a detached HEAD state. | ||||
|             const args = ['rev-parse', '--symbolic']; | ||||
|             // Note, this implementation uses "rev-parse --symbolic-full-name" because there is a bug | ||||
|             // in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names. | ||||
|             const args = ['rev-parse', '--symbolic-full-name']; | ||||
|             if (remote) { | ||||
|                 args.push('--remotes=origin'); | ||||
|             } | ||||
| @@ -4812,6 +4814,12 @@ class GitCommandManager { | ||||
|             for (let branch of output.stdout.trim().split('\n')) { | ||||
|                 branch = branch.trim(); | ||||
|                 if (branch) { | ||||
|                     if (branch.startsWith('refs/heads/')) { | ||||
|                         branch = branch.substr('refs/heads/'.length); | ||||
|                     } | ||||
|                     else if (branch.startsWith('refs/remotes/')) { | ||||
|                         branch = branch.substr('refs/remotes/'.length); | ||||
|                     } | ||||
|                     result.push(branch); | ||||
|                 } | ||||
|             } | ||||
| @@ -4887,11 +4895,9 @@ class GitCommandManager { | ||||
|     } | ||||
|     isDetached() { | ||||
|         return __awaiter(this, void 0, void 0, function* () { | ||||
|             // Note, this implementation uses "branch --show-current" because | ||||
|             // "rev-parse --symbolic-full-name HEAD" can fail on a new repo | ||||
|             // with nothing checked out. | ||||
|             const output = yield this.execGit(['branch', '--show-current']); | ||||
|             return output.stdout.trim() === ''; | ||||
|             // Note, "branch --show-current" would be simpler but isn't available until Git 2.22 | ||||
|             const output = yield this.execGit(['rev-parse', '--symbolic-full-name', '--verify', '--quiet', 'HEAD'], true); | ||||
|             return !output.stdout.trim().startsWith('refs/heads/'); | ||||
|         }); | ||||
|     } | ||||
|     lfsFetch(ref) { | ||||
|   | ||||
| @@ -77,10 +77,12 @@ class GitCommandManager { | ||||
|   async branchList(remote: boolean): Promise<string[]> { | ||||
|     const result: string[] = [] | ||||
|  | ||||
|     // Note, this implementation uses "rev-parse --symbolic" because the output from | ||||
|     // Note, this implementation uses "rev-parse --symbolic-full-name" because the output from | ||||
|     // "branch --list" is more difficult when in a detached HEAD state. | ||||
|     // Note, this implementation uses "rev-parse --symbolic-full-name" because there is a bug | ||||
|     // in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names. | ||||
|  | ||||
|     const args = ['rev-parse', '--symbolic'] | ||||
|     const args = ['rev-parse', '--symbolic-full-name'] | ||||
|     if (remote) { | ||||
|       args.push('--remotes=origin') | ||||
|     } else { | ||||
| @@ -92,6 +94,12 @@ class GitCommandManager { | ||||
|     for (let branch of output.stdout.trim().split('\n')) { | ||||
|       branch = branch.trim() | ||||
|       if (branch) { | ||||
|         if (branch.startsWith('refs/heads/')) { | ||||
|           branch = branch.substr('refs/heads/'.length) | ||||
|         } else if (branch.startsWith('refs/remotes/')) { | ||||
|           branch = branch.substr('refs/remotes/'.length) | ||||
|         } | ||||
|  | ||||
|         result.push(branch) | ||||
|       } | ||||
|     } | ||||
| @@ -170,12 +178,12 @@ class GitCommandManager { | ||||
|   } | ||||
|  | ||||
|   async isDetached(): Promise<boolean> { | ||||
|     // Note, this implementation uses "branch --show-current" because | ||||
|     // "rev-parse --symbolic-full-name HEAD" can fail on a new repo | ||||
|     // with nothing checked out. | ||||
|  | ||||
|     const output = await this.execGit(['branch', '--show-current']) | ||||
|     return output.stdout.trim() === '' | ||||
|     // Note, "branch --show-current" would be simpler but isn't available until Git 2.22 | ||||
|     const output = await this.execGit( | ||||
|       ['rev-parse', '--symbolic-full-name', '--verify', '--quiet', 'HEAD'], | ||||
|       true | ||||
|     ) | ||||
|     return !output.stdout.trim().startsWith('refs/heads/') | ||||
|   } | ||||
|  | ||||
|   async lfsFetch(ref: string): Promise<void> { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user