mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-31 19:33:35 +00:00 
			
		
		
		
	Exclude path from clean
This commit is contained in:
		
							parent
							
								
									85e6279cec
								
							
						
					
					
						commit
						9a73efb9ba
					
				| @ -1,5 +1,9 @@ | ||||
| [](https://github.com/actions/checkout/actions/workflows/test.yml) | ||||
| 
 | ||||
| Changes compared to https://github.com/actions/checkout: | ||||
| - Can exclude path when cleaning repository | ||||
| 
 | ||||
| 
 | ||||
| # Checkout V4 | ||||
| 
 | ||||
| This action checks-out your repository under `$GITHUB_WORKSPACE`, so your workflow can access it. | ||||
| @ -77,7 +81,10 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | ||||
|     # Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching | ||||
|     # Default: true | ||||
|     clean: '' | ||||
| 
 | ||||
|      | ||||
|     # Path to exclude from cleaning | ||||
|     exclude_from_clean: '' | ||||
|      | ||||
|     # Partially clone against a given filter. Overrides sparse-checkout if set. | ||||
|     # Default: null | ||||
|     filter: '' | ||||
|  | ||||
| @ -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 | undefined): 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 | undefined): Promise<boolean> { | ||||
|     let output | ||||
|     if (exclude_from_clean === undefined) { | ||||
|       output = await this.execGit(['clean', '-ffdx'], true) | ||||
|     } else { | ||||
|       output = await this.execGit(['clean', '-ffdx', '-e', exclude_from_clean], true) | ||||
|     } | ||||
|     return output.exitCode === 0 | ||||
|   } | ||||
| 
 | ||||
|  | ||||
| @ -11,6 +11,7 @@ export async function prepareExistingDirectory( | ||||
|   repositoryPath: string, | ||||
|   repositoryUrl: string, | ||||
|   clean: boolean, | ||||
|   exclude_from_clean: string | undefined, | ||||
|   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 | undefined | ||||
| 
 | ||||
|   /** | ||||
|    * 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}`) | ||||
| 
 | ||||
|   // 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