mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-31 23:43:35 +00:00 
			
		
		
		
	Merge ed2311a594464e30b7189963bdc844e2ab800112 into 8edcb1bdb4e267140fa742c62e395cd74f332709
This commit is contained in:
		
						commit
						ca79052ab8
					
				| @ -1,5 +1,8 @@ | ||||
| [](https://github.com/actions/checkout/actions/workflows/test.yml) | ||||
| 
 | ||||
| Changes compared to https://github.com/actions/checkout: | ||||
| - Can exclude path when cleaning repository (see `exclude_from_clean` argument) | ||||
| 
 | ||||
| # Checkout V4 | ||||
| 
 | ||||
| This action checks-out your repository under `$GITHUB_WORKSPACE`, so your workflow can access it. | ||||
| @ -96,6 +99,9 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | ||||
|     # Default: true | ||||
|     clean: '' | ||||
| 
 | ||||
|     # The path to exclude from cleaning | ||||
|     exclude_from_clean: '' | ||||
| 
 | ||||
|     # Partially clone against a given filter. Overrides sparse-checkout if set. | ||||
|     # Default: null | ||||
|     filter: '' | ||||
|  | ||||
| @ -57,6 +57,8 @@ inputs: | ||||
|   clean: | ||||
|     description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching' | ||||
|     default: true | ||||
|   exclude_from_clean: | ||||
|     description: 'The path to exclude from cleaning' | ||||
|   filter: | ||||
|     description: > | ||||
|       Partially clone against a given filter. | ||||
|  | ||||
							
								
								
									
										19
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -819,9 +819,15 @@ class GitCommandManager { | ||||
|             return !!output.stdout.trim(); | ||||
|         }); | ||||
|     } | ||||
|     tryClean() { | ||||
|     tryClean(exclude_from_clean) { | ||||
|         return __awaiter(this, void 0, void 0, function* () { | ||||
|             const output = yield this.execGit(['clean', '-ffdx'], true); | ||||
|             let output; | ||||
|             if (exclude_from_clean) { | ||||
|                 output = yield this.execGit(['clean', '-ffdx', '-e', exclude_from_clean], true); | ||||
|             } | ||||
|             else { | ||||
|                 output = yield this.execGit(['clean', '-ffdx'], true); | ||||
|             } | ||||
|             return output.exitCode === 0; | ||||
|         }); | ||||
|     } | ||||
| @ -1025,7 +1031,7 @@ const fs = __importStar(__nccwpck_require__(7147)); | ||||
| const fsHelper = __importStar(__nccwpck_require__(7219)); | ||||
| const io = __importStar(__nccwpck_require__(7436)); | ||||
| const path = __importStar(__nccwpck_require__(1017)); | ||||
| function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean, ref) { | ||||
| function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean, exclude_from_clean, ref) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         var _a; | ||||
|         assert.ok(repositoryPath, 'Expected repositoryPath to be defined'); | ||||
| @ -1094,7 +1100,7 @@ function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean, ref | ||||
|                 // Clean
 | ||||
|                 if (clean) { | ||||
|                     core.startGroup('Cleaning the repository'); | ||||
|                     if (!(yield git.tryClean())) { | ||||
|                     if (!(yield git.tryClean(exclude_from_clean))) { | ||||
|                         core.debug(`The clean command failed. This might be caused by: 1) path too long, 2) permission issue, or 3) file in use. For further investigation, manually run 'git clean -ffdx' on the directory '${repositoryPath}'.`); | ||||
|                         remove = true; | ||||
|                     } | ||||
| @ -1216,7 +1222,7 @@ function getSource(settings) { | ||||
|             } | ||||
|             // Prepare existing directory, otherwise recreate
 | ||||
|             if (isExisting) { | ||||
|                 yield gitDirectoryHelper.prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean, settings.ref); | ||||
|                 yield gitDirectoryHelper.prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean, settings.exclude_from_clean, settings.ref); | ||||
|             } | ||||
|             if (!git) { | ||||
|                 // Downloading using REST API
 | ||||
| @ -1766,6 +1772,9 @@ function getInputs() { | ||||
|         // Clean
 | ||||
|         result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE'; | ||||
|         core.debug(`clean = ${result.clean}`); | ||||
|         // Exclude from clean
 | ||||
|         result.exclude_from_clean = core.getInput('exclude_from_clean'); | ||||
|         core.debug(`exclude_from_clean = ${result.exclude_from_clean}`); | ||||
|         // Filter
 | ||||
|         const filter = core.getInput('filter'); | ||||
|         if (filter) { | ||||
|  | ||||
							
								
								
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -1,12 +1,12 @@ | ||||
| { | ||||
|   "name": "checkout", | ||||
|   "version": "4.2.2", | ||||
|   "version": "4.2.3", | ||||
|   "lockfileVersion": 3, | ||||
|   "requires": true, | ||||
|   "packages": { | ||||
|     "": { | ||||
|       "name": "checkout", | ||||
|       "version": "4.2.2", | ||||
|       "version": "4.2.3", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/core": "^1.10.1", | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "checkout", | ||||
|   "version": "4.2.2", | ||||
|   "version": "4.2.3", | ||||
|   "description": "checkout action", | ||||
|   "main": "lib/main.js", | ||||
|   "scripts": { | ||||
|  | ||||
| @ -57,7 +57,7 @@ export interface IGitCommandManager { | ||||
|   submoduleUpdate(fetchDepth: number, recursive: boolean): Promise<void> | ||||
|   submoduleStatus(): Promise<boolean> | ||||
|   tagExists(pattern: string): Promise<boolean> | ||||
|   tryClean(): Promise<boolean> | ||||
|   tryClean(exclude_from_clean: string): Promise<boolean> | ||||
|   tryConfigUnset(configKey: string, globalConfig?: boolean): Promise<boolean> | ||||
|   tryDisableAutomaticGarbageCollection(): Promise<boolean> | ||||
|   tryGetFetchUrl(): Promise<string> | ||||
| @ -434,8 +434,13 @@ class GitCommandManager { | ||||
|     return !!output.stdout.trim() | ||||
|   } | ||||
| 
 | ||||
|   async tryClean(): Promise<boolean> { | ||||
|     const output = await this.execGit(['clean', '-ffdx'], true) | ||||
|   async tryClean(exclude_from_clean: string): Promise<boolean> { | ||||
|     let output | ||||
|     if (exclude_from_clean) { | ||||
|       output = await this.execGit(['clean', '-ffdx', '-e', exclude_from_clean], true) | ||||
|     } else { | ||||
|       output = await this.execGit(['clean', '-ffdx'], true) | ||||
|     } | ||||
|     return output.exitCode === 0 | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -11,6 +11,7 @@ export async function prepareExistingDirectory( | ||||
|   repositoryPath: string, | ||||
|   repositoryUrl: string, | ||||
|   clean: boolean, | ||||
|   exclude_from_clean: string, | ||||
|   ref: string | ||||
| ): Promise<void> { | ||||
|   assert.ok(repositoryPath, 'Expected repositoryPath to be defined') | ||||
| @ -90,7 +91,7 @@ export async function prepareExistingDirectory( | ||||
|       // Clean
 | ||||
|       if (clean) { | ||||
|         core.startGroup('Cleaning the repository') | ||||
|         if (!(await git.tryClean())) { | ||||
|         if (!(await git.tryClean(exclude_from_clean))) { | ||||
|           core.debug( | ||||
|             `The clean command failed. This might be caused by: 1) path too long, 2) permission issue, or 3) file in use. For further investigation, manually run 'git clean -ffdx' on the directory '${repositoryPath}'.` | ||||
|           ) | ||||
|  | ||||
| @ -70,6 +70,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | ||||
|         settings.repositoryPath, | ||||
|         repositoryUrl, | ||||
|         settings.clean, | ||||
|         settings.exclude_from_clean, | ||||
|         settings.ref | ||||
|       ) | ||||
|     } | ||||
|  | ||||
| @ -29,6 +29,11 @@ export interface IGitSourceSettings { | ||||
|    */ | ||||
|   clean: boolean | ||||
| 
 | ||||
|   /** | ||||
|    * Indicates path to exclude when cleaning | ||||
|    */ | ||||
|   exclude_from_clean: string | ||||
| 
 | ||||
|   /** | ||||
|    * The filter determining which objects to include | ||||
|    */ | ||||
|  | ||||
| @ -82,6 +82,10 @@ export async function getInputs(): Promise<IGitSourceSettings> { | ||||
|   result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE' | ||||
|   core.debug(`clean = ${result.clean}`) | ||||
| 
 | ||||
|   // Exclude from clean
 | ||||
|   result.exclude_from_clean = core.getInput('exclude_from_clean') | ||||
|   core.debug(`exclude_from_clean = ${result.exclude_from_clean}`) | ||||
| 
 | ||||
|   // Filter
 | ||||
|   const filter = core.getInput('filter') | ||||
|   if (filter) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user