|
@@ -896,9 +896,14 @@ class GitCommandManager {
|
|
|
getWorkingDirectory() {
|
|
getWorkingDirectory() {
|
|
|
return this.workingDirectory;
|
|
return this.workingDirectory;
|
|
|
}
|
|
}
|
|
|
- init() {
|
|
|
|
|
|
|
+ init(objectFormat) {
|
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
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() {
|
|
isDetached() {
|
|
@@ -1486,8 +1491,17 @@ function getSource(settings) {
|
|
|
stateHelper.setRepositoryPath(settings.repositoryPath);
|
|
stateHelper.setRepositoryPath(settings.repositoryPath);
|
|
|
// Initialize the repository
|
|
// Initialize the repository
|
|
|
if (!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))) {
|
|
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');
|
|
core.startGroup('Initializing the repository');
|
|
|
- yield git.init();
|
|
|
|
|
|
|
+ yield git.init(objectFormat);
|
|
|
yield git.remoteAdd('origin', repositoryUrl);
|
|
yield git.remoteAdd('origin', repositoryUrl);
|
|
|
core.endGroup();
|
|
core.endGroup();
|
|
|
}
|
|
}
|
|
@@ -1810,6 +1824,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
exports.downloadRepository = downloadRepository;
|
|
exports.downloadRepository = downloadRepository;
|
|
|
exports.getDefaultBranch = getDefaultBranch;
|
|
exports.getDefaultBranch = getDefaultBranch;
|
|
|
|
|
+exports.tryGetRepositoryObjectFormat = tryGetRepositoryObjectFormat;
|
|
|
const assert = __importStar(__nccwpck_require__(9491));
|
|
const assert = __importStar(__nccwpck_require__(9491));
|
|
|
const core = __importStar(__nccwpck_require__(2186));
|
|
const core = __importStar(__nccwpck_require__(2186));
|
|
|
const fs = __importStar(__nccwpck_require__(7147));
|
|
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) {
|
|
function downloadArchive(authToken, owner, repo, ref, commit, baseUrl) {
|
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
|
const octokit = github.getOctokit(authToken, {
|
|
const octokit = github.getOctokit(authToken, {
|