mirror of
				https://github.com/actions/checkout.git
				synced 2025-10-31 22:08:09 +08:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			dependabot
			...
			a222d11a61
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | a222d11a61 | ||
|  | 68a03db899 | 
							
								
								
									
										36
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								README.md
									
									
									
									
									
								
							| @@ -126,6 +126,11 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | ||||
|     # running from unless specified. Example URLs are https://github.com or | ||||
|     # https://my-ghes-server.example.com | ||||
|     github-server-url: '' | ||||
|  | ||||
|     # Use the given object format when creating local repository.  Specifically, use | ||||
|     # 'sha256' to checkout a SHA-256 repository. | ||||
|     # Defualt: null | ||||
|     object-format: '' | ||||
| ``` | ||||
| <!-- end usage --> | ||||
|  | ||||
| @@ -143,7 +148,7 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | ||||
| - [Checkout pull request HEAD commit instead of merge commit](#Checkout-pull-request-HEAD-commit-instead-of-merge-commit) | ||||
| - [Checkout pull request on closed event](#Checkout-pull-request-on-closed-event) | ||||
| - [Push a commit using the built-in token](#Push-a-commit-using-the-built-in-token) | ||||
| - [Push a commit to a PR using the built-in token](#Push-a-commit-to-a-PR-using-the-built-in-token) | ||||
| - [Checkout SHA-256 repository](#checkout-sha-256-repository) | ||||
|  | ||||
| ## Fetch only the root files | ||||
|  | ||||
| @@ -212,7 +217,7 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | ||||
|     repository: my-org/my-tools | ||||
|     path: my-tools | ||||
| ``` | ||||
| > - If your secondary repository is private or internal you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private) | ||||
| > - If your secondary repository is private you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private) | ||||
|  | ||||
| ## Checkout multiple repos (nested) | ||||
|  | ||||
| @@ -226,7 +231,7 @@ Please refer to the [release page](https://github.com/actions/checkout/releases/ | ||||
|     repository: my-org/my-tools | ||||
|     path: my-tools | ||||
| ``` | ||||
| > - If your secondary repository is private or internal you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private) | ||||
| > - If your secondary repository is private you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private) | ||||
|  | ||||
| ## Checkout multiple repos (private) | ||||
|  | ||||
| @@ -289,30 +294,13 @@ jobs: | ||||
| ``` | ||||
| *NOTE:* The user email is `{user.id}+{user.login}@users.noreply.github.com`. See users API: https://api.github.com/users/github-actions%5Bbot%5D | ||||
|  | ||||
| ## Push a commit to a PR using the built-in token | ||||
|  | ||||
| In a pull request trigger, `ref` is required as GitHub Actions checks out in detached HEAD mode, meaning it doesn’t check out your branch by default. | ||||
| ## Checkout SHA-256 repository | ||||
|  | ||||
| ```yaml | ||||
| on: pull_request | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|         with: | ||||
|           ref: ${{ github.head_ref }} | ||||
|       - run: | | ||||
|           date > generated.txt | ||||
|           # Note: the following account information will not work on GHES | ||||
|           git config user.name "github-actions[bot]" | ||||
|           git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||||
|           git add . | ||||
|           git commit -m "generated" | ||||
|           git push | ||||
| - uses: actions/checkout@v4 | ||||
|   with: | ||||
|     object-format: sha256 | ||||
| ``` | ||||
| *NOTE:* The user email is `{user.id}+{user.login}@users.noreply.github.com`. See users API: https://api.github.com/users/github-actions%5Bbot%5D | ||||
|  | ||||
|  | ||||
| # License | ||||
|  | ||||
|   | ||||
| @@ -824,7 +824,8 @@ async function setup(testName: string): Promise<void> { | ||||
|     sshUser: '', | ||||
|     workflowOrganizationId: 123456, | ||||
|     setSafeDirectory: true, | ||||
|     githubServerUrl: githubServerUrl | ||||
|     githubServerUrl: githubServerUrl, | ||||
|     objectFormat: undefined | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -375,4 +375,31 @@ describe('Test fetchDepth and fetchTags options', () => { | ||||
|       expect.any(Object) | ||||
|     ) | ||||
|   }) | ||||
|  | ||||
|   it('should call execGit wiwth the correct arguments when sha256 is used', async () => { | ||||
|     jest.spyOn(exec, 'exec').mockImplementation(mockExec) | ||||
|  | ||||
|     const workingDirectory = 'test' | ||||
|     const lfs = false | ||||
|     const doSparseCheckout = false | ||||
|     git = await commandManager.createCommandManager( | ||||
|       workingDirectory, | ||||
|       lfs, | ||||
|       doSparseCheckout | ||||
|     ) | ||||
|  | ||||
|     await git.init({objectFormat: 'sha256'}) | ||||
|     // await git.init({objectFormat: undefined}) | ||||
|  | ||||
|     expect(mockExec).toHaveBeenCalledWith( | ||||
|       expect.any(String), | ||||
|       [ | ||||
|         'init', | ||||
|         '--object-format=sha256', | ||||
|         'test' | ||||
|       ], | ||||
|       expect.any(Object) | ||||
|     ) | ||||
|   }) | ||||
| }) | ||||
|  | ||||
|   | ||||
							
								
								
									
										89
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										89
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -30,9 +30,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     return result; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.directoryExistsSync = directoryExistsSync; | ||||
| exports.existsSync = existsSync; | ||||
| exports.fileExistsSync = fileExistsSync; | ||||
| exports.fileExistsSync = exports.existsSync = exports.directoryExistsSync = void 0; | ||||
| const fs = __importStar(__nccwpck_require__(7147)); | ||||
| function directoryExistsSync(path, required) { | ||||
|     var _a; | ||||
| @@ -60,6 +58,7 @@ function directoryExistsSync(path, required) { | ||||
|     } | ||||
|     throw new Error(`Directory '${path}' does not exist`); | ||||
| } | ||||
| exports.directoryExistsSync = directoryExistsSync; | ||||
| function existsSync(path) { | ||||
|     var _a; | ||||
|     if (!path) { | ||||
| @@ -76,6 +75,7 @@ function existsSync(path) { | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
| exports.existsSync = existsSync; | ||||
| function fileExistsSync(path) { | ||||
|     var _a; | ||||
|     if (!path) { | ||||
| @@ -96,6 +96,7 @@ function fileExistsSync(path) { | ||||
|     } | ||||
|     return false; | ||||
| } | ||||
| exports.fileExistsSync = fileExistsSync; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @@ -138,7 +139,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.createAuthHelper = createAuthHelper; | ||||
| exports.createAuthHelper = void 0; | ||||
| const assert = __importStar(__nccwpck_require__(9491)); | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const exec = __importStar(__nccwpck_require__(1514)); | ||||
| @@ -155,6 +156,7 @@ const SSH_COMMAND_KEY = 'core.sshCommand'; | ||||
| function createAuthHelper(git, settings) { | ||||
|     return new GitAuthHelper(git, settings); | ||||
| } | ||||
| exports.createAuthHelper = createAuthHelper; | ||||
| class GitAuthHelper { | ||||
|     constructor(gitCommandManager, gitSourceSettings) { | ||||
|         this.insteadOfValues = []; | ||||
| @@ -473,8 +475,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.MinimumGitSparseCheckoutVersion = exports.MinimumGitVersion = void 0; | ||||
| exports.createCommandManager = createCommandManager; | ||||
| exports.createCommandManager = exports.MinimumGitSparseCheckoutVersion = exports.MinimumGitVersion = void 0; | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const exec = __importStar(__nccwpck_require__(1514)); | ||||
| const fs = __importStar(__nccwpck_require__(7147)); | ||||
| @@ -495,6 +496,7 @@ function createCommandManager(workingDirectory, lfs, doSparseCheckout) { | ||||
|         return yield GitCommandManager.createCommandManager(workingDirectory, lfs, doSparseCheckout); | ||||
|     }); | ||||
| } | ||||
| exports.createCommandManager = createCommandManager; | ||||
| class GitCommandManager { | ||||
|     // Private constructor; use createCommandManager()
 | ||||
|     constructor() { | ||||
| @@ -709,9 +711,13 @@ class GitCommandManager { | ||||
|     getWorkingDirectory() { | ||||
|         return this.workingDirectory; | ||||
|     } | ||||
|     init() { | ||||
|     init(options) { | ||||
|         return __awaiter(this, void 0, void 0, function* () { | ||||
|             yield this.execGit(['init', this.workingDirectory]); | ||||
|             yield this.execGit([ | ||||
|                 'init', | ||||
|                 ...((options === null || options === void 0 ? void 0 : options.objectFormat) ? [`--object-format=${options.objectFormat}`] : []), | ||||
|                 this.workingDirectory | ||||
|             ]); | ||||
|         }); | ||||
|     } | ||||
|     isDetached() { | ||||
| @@ -1018,7 +1024,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.prepareExistingDirectory = prepareExistingDirectory; | ||||
| exports.prepareExistingDirectory = void 0; | ||||
| const assert = __importStar(__nccwpck_require__(9491)); | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const fs = __importStar(__nccwpck_require__(7147)); | ||||
| @@ -1122,6 +1128,7 @@ function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean, ref | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| exports.prepareExistingDirectory = prepareExistingDirectory; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @@ -1164,8 +1171,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.getSource = getSource; | ||||
| exports.cleanup = cleanup; | ||||
| exports.cleanup = exports.getSource = void 0; | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const fsHelper = __importStar(__nccwpck_require__(7219)); | ||||
| const gitAuthHelper = __importStar(__nccwpck_require__(2565)); | ||||
| @@ -1236,7 +1242,7 @@ function getSource(settings) { | ||||
|             // Initialize the repository
 | ||||
|             if (!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))) { | ||||
|                 core.startGroup('Initializing the repository'); | ||||
|                 yield git.init(); | ||||
|                 yield git.init({ objectFormat: settings.objectFormat }); | ||||
|                 yield git.remoteAdd('origin', repositoryUrl); | ||||
|                 core.endGroup(); | ||||
|             } | ||||
| @@ -1371,6 +1377,7 @@ function getSource(settings) { | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| exports.getSource = getSource; | ||||
| function cleanup(repositoryPath) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         // Repo exists?
 | ||||
| @@ -1406,6 +1413,7 @@ function cleanup(repositoryPath) { | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| exports.cleanup = cleanup; | ||||
| function getGitCommandManager(settings) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         core.info(`Working directory is '${settings.repositoryPath}'`); | ||||
| @@ -1544,8 +1552,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.downloadRepository = downloadRepository; | ||||
| exports.getDefaultBranch = getDefaultBranch; | ||||
| exports.getDefaultBranch = exports.downloadRepository = void 0; | ||||
| const assert = __importStar(__nccwpck_require__(9491)); | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const fs = __importStar(__nccwpck_require__(7147)); | ||||
| @@ -1609,6 +1616,7 @@ function downloadRepository(authToken, owner, repo, ref, commit, repositoryPath, | ||||
|         yield io.rmRF(extractPath); | ||||
|     }); | ||||
| } | ||||
| exports.downloadRepository = downloadRepository; | ||||
| /** | ||||
|  * Looks up the default branch name | ||||
|  */ | ||||
| @@ -1647,6 +1655,7 @@ function getDefaultBranch(authToken, owner, repo, baseUrl) { | ||||
|         })); | ||||
|     }); | ||||
| } | ||||
| exports.getDefaultBranch = getDefaultBranch; | ||||
| function downloadArchive(authToken, owner, repo, ref, commit, baseUrl) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         const octokit = github.getOctokit(authToken, { | ||||
| @@ -1705,7 +1714,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.getInputs = getInputs; | ||||
| exports.getInputs = void 0; | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const fsHelper = __importStar(__nccwpck_require__(7219)); | ||||
| const github = __importStar(__nccwpck_require__(5438)); | ||||
| @@ -1831,9 +1840,18 @@ function getInputs() { | ||||
|         // Determine the GitHub URL that the repository is being hosted from
 | ||||
|         result.githubServerUrl = core.getInput('github-server-url'); | ||||
|         core.debug(`GitHub Host URL = ${result.githubServerUrl}`); | ||||
|         // Object format
 | ||||
|         const objectFormat = core.getInput('object-format'); | ||||
|         if (objectFormat) { | ||||
|             if (objectFormat != 'sha1' && objectFormat != 'sha256') { | ||||
|                 throw Error(`Invalid object format '${objectFormat}'`); | ||||
|             } | ||||
|             result.objectFormat = objectFormat; | ||||
|         } | ||||
|         return result; | ||||
|     }); | ||||
| } | ||||
| exports.getInputs = getInputs; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @@ -1965,12 +1983,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.tagsRefSpec = void 0; | ||||
| exports.getCheckoutInfo = getCheckoutInfo; | ||||
| exports.getRefSpecForAllHistory = getRefSpecForAllHistory; | ||||
| exports.getRefSpec = getRefSpec; | ||||
| exports.testRef = testRef; | ||||
| exports.checkCommitInfo = checkCommitInfo; | ||||
| exports.checkCommitInfo = exports.testRef = exports.getRefSpec = exports.getRefSpecForAllHistory = exports.getCheckoutInfo = exports.tagsRefSpec = void 0; | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const github = __importStar(__nccwpck_require__(5438)); | ||||
| const url_helper_1 = __nccwpck_require__(9437); | ||||
| @@ -2024,6 +2037,7 @@ function getCheckoutInfo(git, ref, commit) { | ||||
|         return result; | ||||
|     }); | ||||
| } | ||||
| exports.getCheckoutInfo = getCheckoutInfo; | ||||
| function getRefSpecForAllHistory(ref, commit) { | ||||
|     const result = ['+refs/heads/*:refs/remotes/origin/*', exports.tagsRefSpec]; | ||||
|     if (ref && ref.toUpperCase().startsWith('REFS/PULL/')) { | ||||
| @@ -2032,6 +2046,7 @@ function getRefSpecForAllHistory(ref, commit) { | ||||
|     } | ||||
|     return result; | ||||
| } | ||||
| exports.getRefSpecForAllHistory = getRefSpecForAllHistory; | ||||
| function getRefSpec(ref, commit) { | ||||
|     if (!ref && !commit) { | ||||
|         throw new Error('Args ref and commit cannot both be empty'); | ||||
| @@ -2080,6 +2095,7 @@ function getRefSpec(ref, commit) { | ||||
|         return [`+${ref}:${ref}`]; | ||||
|     } | ||||
| } | ||||
| exports.getRefSpec = getRefSpec; | ||||
| /** | ||||
|  * Tests whether the initial fetch created the ref at the expected commit | ||||
|  */ | ||||
| @@ -2123,6 +2139,7 @@ function testRef(git, ref, commit) { | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| exports.testRef = testRef; | ||||
| function checkCommitInfo(token, commitInfo, repositoryOwner, repositoryName, ref, commit, baseUrl) { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         var _a; | ||||
| @@ -2188,6 +2205,7 @@ function checkCommitInfo(token, commitInfo, repositoryOwner, repositoryName, ref | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| exports.checkCommitInfo = checkCommitInfo; | ||||
| function fromPayload(path) { | ||||
|     return select(github.context.payload, path); | ||||
| } | ||||
| @@ -2212,12 +2230,13 @@ function select(obj, path) { | ||||
| "use strict"; | ||||
| 
 | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.escape = escape; | ||||
| exports.escape = void 0; | ||||
| function escape(value) { | ||||
|     return value.replace(/[^a-zA-Z0-9_]/g, x => { | ||||
|         return `\\${x}`; | ||||
|     }); | ||||
| } | ||||
| exports.escape = escape; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @@ -2260,8 +2279,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.RetryHelper = void 0; | ||||
| exports.execute = execute; | ||||
| exports.execute = exports.RetryHelper = void 0; | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const defaultMaxAttempts = 3; | ||||
| const defaultMinSeconds = 10; | ||||
| @@ -2313,6 +2331,7 @@ function execute(action) { | ||||
|         return yield retryHelper.execute(action); | ||||
|     }); | ||||
| } | ||||
| exports.execute = execute; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @@ -2346,11 +2365,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     return result; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.SshKnownHostsPath = exports.SshKeyPath = exports.PostSetSafeDirectory = exports.RepositoryPath = exports.IsPost = void 0; | ||||
| exports.setRepositoryPath = setRepositoryPath; | ||||
| exports.setSshKeyPath = setSshKeyPath; | ||||
| exports.setSshKnownHostsPath = setSshKnownHostsPath; | ||||
| exports.setSafeDirectory = setSafeDirectory; | ||||
| exports.setSafeDirectory = exports.setSshKnownHostsPath = exports.setSshKeyPath = exports.setRepositoryPath = exports.SshKnownHostsPath = exports.SshKeyPath = exports.PostSetSafeDirectory = exports.RepositoryPath = exports.IsPost = void 0; | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| /** | ||||
|  * Indicates whether the POST action is running | ||||
| @@ -2378,24 +2393,28 @@ exports.SshKnownHostsPath = core.getState('sshKnownHostsPath'); | ||||
| function setRepositoryPath(repositoryPath) { | ||||
|     core.saveState('repositoryPath', repositoryPath); | ||||
| } | ||||
| exports.setRepositoryPath = setRepositoryPath; | ||||
| /** | ||||
|  * Save the SSH key path so the POST action can retrieve the value. | ||||
|  */ | ||||
| function setSshKeyPath(sshKeyPath) { | ||||
|     core.saveState('sshKeyPath', sshKeyPath); | ||||
| } | ||||
| exports.setSshKeyPath = setSshKeyPath; | ||||
| /** | ||||
|  * Save the SSH known hosts path so the POST action can retrieve the value. | ||||
|  */ | ||||
| function setSshKnownHostsPath(sshKnownHostsPath) { | ||||
|     core.saveState('sshKnownHostsPath', sshKnownHostsPath); | ||||
| } | ||||
| exports.setSshKnownHostsPath = setSshKnownHostsPath; | ||||
| /** | ||||
|  * Save the set-safe-directory input so the POST action can retrieve the value. | ||||
|  */ | ||||
| function setSafeDirectory() { | ||||
|     core.saveState('setSafeDirectory', 'true'); | ||||
| } | ||||
| exports.setSafeDirectory = setSafeDirectory; | ||||
| // Publish a variable so that when the POST action runs, it can determine it should run the cleanup logic.
 | ||||
| // This is necessary since we don't have a separate entry point.
 | ||||
| if (!exports.IsPost) { | ||||
| @@ -2434,10 +2453,7 @@ var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     return result; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.getFetchUrl = getFetchUrl; | ||||
| exports.getServerUrl = getServerUrl; | ||||
| exports.getServerApiUrl = getServerApiUrl; | ||||
| exports.isGhes = isGhes; | ||||
| exports.isGhes = exports.getServerApiUrl = exports.getServerUrl = exports.getFetchUrl = void 0; | ||||
| const assert = __importStar(__nccwpck_require__(9491)); | ||||
| const url_1 = __nccwpck_require__(7310); | ||||
| function getFetchUrl(settings) { | ||||
| @@ -2453,6 +2469,7 @@ function getFetchUrl(settings) { | ||||
|     // "origin" is SCHEME://HOSTNAME[:PORT]
 | ||||
|     return `${serviceUrl.origin}/${encodedOwner}/${encodedName}`; | ||||
| } | ||||
| exports.getFetchUrl = getFetchUrl; | ||||
| function getServerUrl(url) { | ||||
|     let resolvedUrl = process.env['GITHUB_SERVER_URL'] || 'https://github.com'; | ||||
|     if (hasContent(url, WhitespaceMode.Trim)) { | ||||
| @@ -2460,6 +2477,7 @@ function getServerUrl(url) { | ||||
|     } | ||||
|     return new url_1.URL(resolvedUrl); | ||||
| } | ||||
| exports.getServerUrl = getServerUrl; | ||||
| function getServerApiUrl(url) { | ||||
|     if (hasContent(url, WhitespaceMode.Trim)) { | ||||
|         let serverUrl = getServerUrl(url); | ||||
| @@ -2473,6 +2491,7 @@ function getServerApiUrl(url) { | ||||
|     } | ||||
|     return process.env['GITHUB_API_URL'] || 'https://api.github.com'; | ||||
| } | ||||
| exports.getServerApiUrl = getServerApiUrl; | ||||
| function isGhes(url) { | ||||
|     const ghUrl = new url_1.URL(url || process.env['GITHUB_SERVER_URL'] || 'https://github.com'); | ||||
|     const hostname = ghUrl.hostname.trimEnd().toUpperCase(); | ||||
| @@ -2499,6 +2518,7 @@ function hasContent(text, whitespaceMode) { | ||||
|     } | ||||
|     return refinedText.length > 0; | ||||
| } | ||||
| exports.isGhes = isGhes; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @@ -2541,7 +2561,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge | ||||
|     }); | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||
| exports.getOrganizationId = getOrganizationId; | ||||
| exports.getOrganizationId = void 0; | ||||
| const core = __importStar(__nccwpck_require__(2186)); | ||||
| const fs = __importStar(__nccwpck_require__(7147)); | ||||
| /** | ||||
| @@ -2570,6 +2590,7 @@ function getOrganizationId() { | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| exports.getOrganizationId = getOrganizationId; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
|   | ||||
							
								
								
									
										66
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										66
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -9,7 +9,7 @@ | ||||
|       "version": "4.2.2", | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@actions/core": "^1.11.1", | ||||
|         "@actions/core": "^1.10.1", | ||||
|         "@actions/exec": "^1.1.1", | ||||
|         "@actions/github": "^6.0.0", | ||||
|         "@actions/io": "^1.1.3", | ||||
| @@ -17,21 +17,21 @@ | ||||
|         "uuid": "^9.0.1" | ||||
|       }, | ||||
|       "devDependencies": { | ||||
|         "@types/jest": "^29.5.14", | ||||
|         "@types/jest": "^29.5.12", | ||||
|         "@types/node": "^20.12.12", | ||||
|         "@types/uuid": "^9.0.8", | ||||
|         "@typescript-eslint/eslint-plugin": "^7.9.0", | ||||
|         "@typescript-eslint/parser": "^7.9.0", | ||||
|         "@vercel/ncc": "^0.38.3", | ||||
|         "@vercel/ncc": "^0.38.1", | ||||
|         "eslint": "^8.57.0", | ||||
|         "eslint-plugin-github": "^4.10.2", | ||||
|         "eslint-plugin-jest": "^28.9.0", | ||||
|         "eslint-plugin-jest": "^28.8.2", | ||||
|         "jest": "^29.7.0", | ||||
|         "jest-circus": "^29.7.0", | ||||
|         "js-yaml": "^4.1.0", | ||||
|         "prettier": "^3.4.1", | ||||
|         "prettier": "^3.3.3", | ||||
|         "ts-jest": "^29.2.5", | ||||
|         "typescript": "^5.7.2" | ||||
|         "typescript": "^5.5.4" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@aashutoshrathi/word-wrap": { | ||||
| @@ -44,13 +44,20 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/core": { | ||||
|       "version": "1.11.1", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", | ||||
|       "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", | ||||
|       "license": "MIT", | ||||
|       "version": "1.10.1", | ||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz", | ||||
|       "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", | ||||
|       "dependencies": { | ||||
|         "@actions/exec": "^1.1.1", | ||||
|         "@actions/http-client": "^2.0.1" | ||||
|         "@actions/http-client": "^2.0.1", | ||||
|         "uuid": "^8.3.2" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/core/node_modules/uuid": { | ||||
|       "version": "8.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", | ||||
|       "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", | ||||
|       "bin": { | ||||
|         "uuid": "dist/bin/uuid" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@actions/exec": { | ||||
| @@ -1565,11 +1572,10 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/@types/jest": { | ||||
|       "version": "29.5.14", | ||||
|       "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", | ||||
|       "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", | ||||
|       "version": "29.5.12", | ||||
|       "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", | ||||
|       "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "expect": "^29.0.0", | ||||
|         "pretty-format": "^29.0.0" | ||||
| @@ -1821,11 +1827,10 @@ | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/@vercel/ncc": { | ||||
|       "version": "0.38.3", | ||||
|       "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.3.tgz", | ||||
|       "integrity": "sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==", | ||||
|       "version": "0.38.1", | ||||
|       "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz", | ||||
|       "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "bin": { | ||||
|         "ncc": "dist/ncc/cli.js" | ||||
|       } | ||||
| @@ -3213,11 +3218,10 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/eslint-plugin-jest": { | ||||
|       "version": "28.9.0", | ||||
|       "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.9.0.tgz", | ||||
|       "integrity": "sha512-rLu1s1Wf96TgUUxSw6loVIkNtUjq1Re7A9QdCCHSohnvXEBAjuL420h0T/fMmkQlNsQP2GhQzEUpYHPfxBkvYQ==", | ||||
|       "version": "28.8.2", | ||||
|       "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.2.tgz", | ||||
|       "integrity": "sha512-mC3OyklHmS5i7wYU1rGId9EnxRI8TVlnFG56AE+8U9iRy6zwaNygZR+DsdZuCL0gRG0wVeyzq+uWcPt6yJrrMA==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "dependencies": { | ||||
|         "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" | ||||
|       }, | ||||
| @@ -5974,11 +5978,10 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/prettier": { | ||||
|       "version": "3.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", | ||||
|       "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", | ||||
|       "version": "3.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", | ||||
|       "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "bin": { | ||||
|         "prettier": "bin/prettier.cjs" | ||||
|       }, | ||||
| @@ -6899,11 +6902,10 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/typescript": { | ||||
|       "version": "5.7.2", | ||||
|       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", | ||||
|       "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", | ||||
|       "version": "5.5.4", | ||||
|       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", | ||||
|       "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", | ||||
|       "dev": true, | ||||
|       "license": "Apache-2.0", | ||||
|       "bin": { | ||||
|         "tsc": "bin/tsc", | ||||
|         "tsserver": "bin/tsserver" | ||||
|   | ||||
							
								
								
									
										12
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
									
									
									
									
								
							| @@ -28,7 +28,7 @@ | ||||
|   }, | ||||
|   "homepage": "https://github.com/actions/checkout#readme", | ||||
|   "dependencies": { | ||||
|     "@actions/core": "^1.11.1", | ||||
|     "@actions/core": "^1.10.1", | ||||
|     "@actions/exec": "^1.1.1", | ||||
|     "@actions/github": "^6.0.0", | ||||
|     "@actions/io": "^1.1.3", | ||||
| @@ -36,20 +36,20 @@ | ||||
|     "uuid": "^9.0.1" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/jest": "^29.5.14", | ||||
|     "@types/jest": "^29.5.12", | ||||
|     "@types/node": "^20.12.12", | ||||
|     "@types/uuid": "^9.0.8", | ||||
|     "@typescript-eslint/eslint-plugin": "^7.9.0", | ||||
|     "@typescript-eslint/parser": "^7.9.0", | ||||
|     "@vercel/ncc": "^0.38.3", | ||||
|     "@vercel/ncc": "^0.38.1", | ||||
|     "eslint": "^8.57.0", | ||||
|     "eslint-plugin-github": "^4.10.2", | ||||
|     "eslint-plugin-jest": "^28.9.0", | ||||
|     "eslint-plugin-jest": "^28.8.2", | ||||
|     "jest": "^29.7.0", | ||||
|     "jest-circus": "^29.7.0", | ||||
|     "js-yaml": "^4.1.0", | ||||
|     "prettier": "^3.4.1", | ||||
|     "prettier": "^3.3.3", | ||||
|     "ts-jest": "^29.2.5", | ||||
|     "typescript": "^5.7.2" | ||||
|     "typescript": "^5.5.4" | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -42,7 +42,7 @@ export interface IGitCommandManager { | ||||
|   ): Promise<void> | ||||
|   getDefaultBranch(repositoryUrl: string): Promise<string> | ||||
|   getWorkingDirectory(): string | ||||
|   init(): Promise<void> | ||||
|   init(options?: { objectFormat?: string }): Promise<void> | ||||
|   isDetached(): Promise<boolean> | ||||
|   lfsFetch(ref: string): Promise<void> | ||||
|   lfsInstall(): Promise<void> | ||||
| @@ -327,8 +327,12 @@ class GitCommandManager { | ||||
|     return this.workingDirectory | ||||
|   } | ||||
|  | ||||
|   async init(): Promise<void> { | ||||
|     await this.execGit(['init', this.workingDirectory]) | ||||
|   async init(options?: { objectFormat?: string }): Promise<void> { | ||||
|     await this.execGit([ | ||||
|       'init', | ||||
|       ...(options?.objectFormat ? [`--object-format=${options.objectFormat}`] : []), | ||||
|       this.workingDirectory | ||||
|     ]) | ||||
|   } | ||||
|  | ||||
|   async isDetached(): Promise<boolean> { | ||||
|   | ||||
| @@ -110,7 +110,7 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> { | ||||
|       !fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git')) | ||||
|     ) { | ||||
|       core.startGroup('Initializing the repository') | ||||
|       await git.init() | ||||
|       await git.init({ objectFormat: settings.objectFormat }) | ||||
|       await git.remoteAdd('origin', repositoryUrl) | ||||
|       core.endGroup() | ||||
|     } | ||||
|   | ||||
| @@ -118,4 +118,9 @@ export interface IGitSourceSettings { | ||||
|    * User override on the GitHub Server/Host URL that hosts the repository to be cloned | ||||
|    */ | ||||
|   githubServerUrl: string | undefined | ||||
|  | ||||
|   /** | ||||
|    * Object format used for the repo, if it is not default | ||||
|    */ | ||||
|   objectFormat: 'sha1' | 'sha256' | undefined | ||||
| } | ||||
|   | ||||
| @@ -161,5 +161,14 @@ export async function getInputs(): Promise<IGitSourceSettings> { | ||||
|   result.githubServerUrl = core.getInput('github-server-url') | ||||
|   core.debug(`GitHub Host URL = ${result.githubServerUrl}`) | ||||
|  | ||||
|   // Object format | ||||
|   const objectFormat = core.getInput('object-format') | ||||
|   if (objectFormat) { | ||||
|     if (objectFormat != 'sha1' && objectFormat != 'sha256') { | ||||
|       throw Error(`Invalid object format '${objectFormat}'`) | ||||
|     } | ||||
|     result.objectFormat = objectFormat | ||||
|   } | ||||
|  | ||||
|   return result | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user