Read-only mirror — the public repositories of the Forgejo instance, refreshed every 10 minutes. The live instance (fg.dieschoenewolke.de) is reachable only over the VPN; clone here with https://git.dieschoenewolke.de/git/<owner>/<repo>.git.
summaryrefslogtreecommitdiff
path: root/dist
diff options
context:
space:
mode:
authorYashwanth Anantharaju <yaananth@users.noreply.github.com>2026-06-01 11:35:58 -0400
committerGitHub <noreply@github.com>2026-06-01 11:35:58 -0400
commiteb9dcad7e007cb96364b4e612799ce0ff736cb09 (patch)
tree2730243bfbc90a8bc802720dc13e2e7ce433e7f2 /dist
parent45c7dc79a6c1ac19a6a0981f08146cb419b30891 (diff)
Fix checkout init for SHA-256 repositories (#2439)
* Fix checkout init for SHA-256 repositories * Remove unused object format result field
Diffstat (limited to 'dist')
-rw-r--r--dist/index.js55
1 files changed, 52 insertions, 3 deletions
diff --git a/dist/index.js b/dist/index.js
index 57729b2..906b59a 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -896,9 +896,14 @@ class GitCommandManager {
getWorkingDirectory() {
return this.workingDirectory;
}
- init() {
+ init(objectFormat) {
return __awaiter(this, void 0, void 0, function* () {
- yield this.execGit(['init', this.workingDirectory]);
+ const args = ['init'];
+ if (objectFormat === 'sha256') {
+ args.push('--object-format=sha256');
+ }
+ args.push(this.workingDirectory);
+ yield this.execGit(args);
});
}
isDetached() {
@@ -1486,8 +1491,17 @@ function getSource(settings) {
stateHelper.setRepositoryPath(settings.repositoryPath);
// Initialize the repository
if (!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))) {
+ core.startGroup('Determining repository object format');
+ const objectFormatResult = yield githubApiHelper.tryGetRepositoryObjectFormat(settings.authToken, settings.repositoryOwner, settings.repositoryName, settings.githubServerUrl, settings.commit);
+ const objectFormat = objectFormatResult.succeeded
+ ? objectFormatResult.format
+ : '';
+ if (objectFormat === 'sha256') {
+ core.info('Detected SHA-256 repository object format');
+ }
+ core.endGroup();
core.startGroup('Initializing the repository');
- yield git.init();
+ yield git.init(objectFormat);
yield git.remoteAdd('origin', repositoryUrl);
core.endGroup();
}
@@ -1810,6 +1824,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.downloadRepository = downloadRepository;
exports.getDefaultBranch = getDefaultBranch;
+exports.tryGetRepositoryObjectFormat = tryGetRepositoryObjectFormat;
const assert = __importStar(__nccwpck_require__(9491));
const core = __importStar(__nccwpck_require__(2186));
const fs = __importStar(__nccwpck_require__(7147));
@@ -1911,6 +1926,40 @@ function getDefaultBranch(authToken, owner, repo, baseUrl) {
}));
});
}
+function tryGetRepositoryObjectFormat(authToken, owner, repo, baseUrl, commit) {
+ return __awaiter(this, void 0, void 0, function* () {
+ var _a;
+ const commitFormat = getObjectFormat(commit);
+ if (commitFormat) {
+ return { format: commitFormat, succeeded: true };
+ }
+ try {
+ const octokit = github.getOctokit(authToken, {
+ baseUrl: (0, url_helper_1.getServerApiUrl)(baseUrl)
+ });
+ const response = yield octokit.request('GET /repos/{owner}/{repo}/hash-algorithm', { owner, repo });
+ const hashAlgorithm = response.data.hash_algorithm;
+ if (hashAlgorithm === 'sha256' || hashAlgorithm === 'sha1') {
+ return { format: hashAlgorithm, succeeded: true };
+ }
+ core.debug('Unable to determine repository object format from hash-algorithm endpoint');
+ return { format: '', succeeded: false };
+ }
+ catch (err) {
+ core.debug(`Unable to determine repository object format from hash-algorithm endpoint: ${(_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : err}`);
+ return { format: '', succeeded: false };
+ }
+ });
+}
+function getObjectFormat(sha) {
+ if (/^[0-9a-fA-F]{64}$/.test(sha || '')) {
+ return 'sha256';
+ }
+ if (/^[0-9a-fA-F]{40}$/.test(sha || '')) {
+ return 'sha1';
+ }
+ return '';
+}
function downloadArchive(authToken, owner, repo, ref, commit, baseUrl) {
return __awaiter(this, void 0, void 0, function* () {
const octokit = github.getOctokit(authToken, {