mirror of
				https://github.com/actions/checkout.git
				synced 2025-11-03 22:31:56 +02:00 
			
		
		
		
	update
This commit is contained in:
		
							parent
							
								
									ebd82bae91
								
							
						
					
					
						commit
						6503dcd44c
					
				
					 3 changed files with 41 additions and 7 deletions
				
			
		
							
								
								
									
										24
									
								
								dist/index.js
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								dist/index.js
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1033,13 +1033,17 @@ const fs = __importStar(__nccwpck_require__(7147));
 | 
				
			||||||
const fsHelper = __importStar(__nccwpck_require__(7219));
 | 
					const fsHelper = __importStar(__nccwpck_require__(7219));
 | 
				
			||||||
const io = __importStar(__nccwpck_require__(7436));
 | 
					const io = __importStar(__nccwpck_require__(7436));
 | 
				
			||||||
const path = __importStar(__nccwpck_require__(1017));
 | 
					const path = __importStar(__nccwpck_require__(1017));
 | 
				
			||||||
function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean, ref) {
 | 
					function prepareExistingDirectory(git_1, repositoryPath_1, repositoryUrl_1, clean_1, ref_1) {
 | 
				
			||||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
					    return __awaiter(this, arguments, void 0, function* (git, repositoryPath, repositoryUrl, clean, ref, preserveLocalChanges = false) {
 | 
				
			||||||
        var _a;
 | 
					        var _a;
 | 
				
			||||||
        assert.ok(repositoryPath, 'Expected repositoryPath to be defined');
 | 
					        assert.ok(repositoryPath, 'Expected repositoryPath to be defined');
 | 
				
			||||||
        assert.ok(repositoryUrl, 'Expected repositoryUrl to be defined');
 | 
					        assert.ok(repositoryUrl, 'Expected repositoryUrl to be defined');
 | 
				
			||||||
        // Indicates whether to delete the directory contents
 | 
					        // Indicates whether to delete the directory contents
 | 
				
			||||||
        let remove = false;
 | 
					        let remove = false;
 | 
				
			||||||
 | 
					        // If preserveLocalChanges is true, log it
 | 
				
			||||||
 | 
					        if (preserveLocalChanges) {
 | 
				
			||||||
 | 
					            core.info(`Preserve local changes is enabled, will attempt to keep local files`);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        // Check whether using git or REST API
 | 
					        // Check whether using git or REST API
 | 
				
			||||||
        if (!git) {
 | 
					        if (!git) {
 | 
				
			||||||
            remove = true;
 | 
					            remove = true;
 | 
				
			||||||
| 
						 | 
					@ -1120,14 +1124,26 @@ function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean, ref
 | 
				
			||||||
                remove = true;
 | 
					                remove = true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (remove) {
 | 
					        if (remove && !preserveLocalChanges) {
 | 
				
			||||||
            // Delete the contents of the directory. Don't delete the directory itself
 | 
					            // Delete the contents of the directory. Don't delete the directory itself
 | 
				
			||||||
            // since it might be the current working directory.
 | 
					            // since it might be the current working directory.
 | 
				
			||||||
            core.info(`Deleting the contents of '${repositoryPath}'`);
 | 
					            core.info(`Deleting the contents of '${repositoryPath}'`);
 | 
				
			||||||
            for (const file of yield fs.promises.readdir(repositoryPath)) {
 | 
					            for (const file of yield fs.promises.readdir(repositoryPath)) {
 | 
				
			||||||
 | 
					                // Skip .git directory as we need it to determine if a file is tracked
 | 
				
			||||||
 | 
					                if (file === '.git') {
 | 
				
			||||||
 | 
					                    continue;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                yield io.rmRF(path.join(repositoryPath, file));
 | 
					                yield io.rmRF(path.join(repositoryPath, file));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        else if (remove && preserveLocalChanges) {
 | 
				
			||||||
 | 
					            core.info(`Skipping deletion of directory contents due to preserve-local-changes setting`);
 | 
				
			||||||
 | 
					            // We still need to make sure we have a git repository to work with
 | 
				
			||||||
 | 
					            if (!git) {
 | 
				
			||||||
 | 
					                core.info(`Initializing git repository to prepare for checkout with preserved changes`);
 | 
				
			||||||
 | 
					                yield fs.promises.mkdir(path.join(repositoryPath, '.git'), { recursive: true });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1224,7 +1240,7 @@ function getSource(settings) {
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // Prepare existing directory, otherwise recreate
 | 
					            // Prepare existing directory, otherwise recreate
 | 
				
			||||||
            if (isExisting) {
 | 
					            if (isExisting) {
 | 
				
			||||||
                yield gitDirectoryHelper.prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean, settings.ref);
 | 
					                yield gitDirectoryHelper.prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean, settings.ref, settings.preserveLocalChanges);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (!git) {
 | 
					            if (!git) {
 | 
				
			||||||
                // Downloading using REST API
 | 
					                // Downloading using REST API
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,8 @@ export async function prepareExistingDirectory(
 | 
				
			||||||
  repositoryPath: string,
 | 
					  repositoryPath: string,
 | 
				
			||||||
  repositoryUrl: string,
 | 
					  repositoryUrl: string,
 | 
				
			||||||
  clean: boolean,
 | 
					  clean: boolean,
 | 
				
			||||||
  ref: string
 | 
					  ref: string,
 | 
				
			||||||
 | 
					  preserveLocalChanges: boolean = false
 | 
				
			||||||
): Promise<void> {
 | 
					): Promise<void> {
 | 
				
			||||||
  assert.ok(repositoryPath, 'Expected repositoryPath to be defined')
 | 
					  assert.ok(repositoryPath, 'Expected repositoryPath to be defined')
 | 
				
			||||||
  assert.ok(repositoryUrl, 'Expected repositoryUrl to be defined')
 | 
					  assert.ok(repositoryUrl, 'Expected repositoryUrl to be defined')
 | 
				
			||||||
| 
						 | 
					@ -19,6 +20,11 @@ export async function prepareExistingDirectory(
 | 
				
			||||||
  // Indicates whether to delete the directory contents
 | 
					  // Indicates whether to delete the directory contents
 | 
				
			||||||
  let remove = false
 | 
					  let remove = false
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  // If preserveLocalChanges is true, log it
 | 
				
			||||||
 | 
					  if (preserveLocalChanges) {
 | 
				
			||||||
 | 
					    core.info(`Preserve local changes is enabled, will attempt to keep local files`)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Check whether using git or REST API
 | 
					  // Check whether using git or REST API
 | 
				
			||||||
  if (!git) {
 | 
					  if (!git) {
 | 
				
			||||||
    remove = true
 | 
					    remove = true
 | 
				
			||||||
| 
						 | 
					@ -114,12 +120,23 @@ export async function prepareExistingDirectory(
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (remove) {
 | 
					  if (remove && !preserveLocalChanges) {
 | 
				
			||||||
    // Delete the contents of the directory. Don't delete the directory itself
 | 
					    // Delete the contents of the directory. Don't delete the directory itself
 | 
				
			||||||
    // since it might be the current working directory.
 | 
					    // since it might be the current working directory.
 | 
				
			||||||
    core.info(`Deleting the contents of '${repositoryPath}'`)
 | 
					    core.info(`Deleting the contents of '${repositoryPath}'`)
 | 
				
			||||||
    for (const file of await fs.promises.readdir(repositoryPath)) {
 | 
					    for (const file of await fs.promises.readdir(repositoryPath)) {
 | 
				
			||||||
 | 
					      // Skip .git directory as we need it to determine if a file is tracked
 | 
				
			||||||
 | 
					      if (file === '.git') {
 | 
				
			||||||
 | 
					        continue
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      await io.rmRF(path.join(repositoryPath, file))
 | 
					      await io.rmRF(path.join(repositoryPath, file))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					  } else if (remove && preserveLocalChanges) {
 | 
				
			||||||
 | 
					    core.info(`Skipping deletion of directory contents due to preserve-local-changes setting`)
 | 
				
			||||||
 | 
					    // We still need to make sure we have a git repository to work with
 | 
				
			||||||
 | 
					    if (!git) {
 | 
				
			||||||
 | 
					      core.info(`Initializing git repository to prepare for checkout with preserved changes`)
 | 
				
			||||||
 | 
					      await fs.promises.mkdir(path.join(repositoryPath, '.git'), { recursive: true })
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,8 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
 | 
				
			||||||
        settings.repositoryPath,
 | 
					        settings.repositoryPath,
 | 
				
			||||||
        repositoryUrl,
 | 
					        repositoryUrl,
 | 
				
			||||||
        settings.clean,
 | 
					        settings.clean,
 | 
				
			||||||
        settings.ref
 | 
					        settings.ref,
 | 
				
			||||||
 | 
					        settings.preserveLocalChanges
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue