mirror of
https://code.forgejo.org/actions/checkout.git
synced 2025-08-14 17:30:50 +00: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