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
diff options
context:
space:
mode:
authoreric sciple <ericsciple@users.noreply.github.com>2020-03-27 13:12:15 -0400
committerGitHub <noreply@github.com>2020-03-27 13:12:15 -0400
commit10e37f5ca370a159eb6364bd241689e58d844f91 (patch)
tree2d03ad39da90db0da9aca6b6a4ebc043ea7b1924
parent18fd0bc59958dd73f02ac7a98cb5995f83e6f1de (diff)
group output (#191)v2.1.0
-rw-r--r--dist/index.js34
-rw-r--r--src/git-auth-helper.ts2
-rw-r--r--src/git-directory-helper.ts10
-rw-r--r--src/git-source-provider.ts24
-rw-r--r--src/git-source-settings.ts59
5 files changed, 127 insertions, 2 deletions
diff --git a/dist/index.js b/dist/index.js
index 5fa23c3..2fcc800 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -5267,7 +5267,7 @@ class GitAuthHelper {
}
removeGlobalAuth() {
return __awaiter(this, void 0, void 0, function* () {
- core.info(`Unsetting HOME override`);
+ core.debug(`Unsetting HOME override`);
this.git.removeEnvironmentVariable('HOME');
yield io.rmRF(this.temporaryHomePath);
});
@@ -5856,7 +5856,9 @@ function getSource(settings) {
yield io.mkdirP(settings.repositoryPath);
}
// Git command manager
+ core.startGroup('Getting Git version info');
const git = yield getGitCommandManager(settings);
+ core.endGroup();
// Prepare existing directory, otherwise recreate
if (isExisting) {
yield gitDirectoryHelper.prepareExistingDirectory(git, settings.repositoryPath, repositoryUrl, settings.clean);
@@ -5878,46 +5880,66 @@ function getSource(settings) {
stateHelper.setRepositoryPath(settings.repositoryPath);
// Initialize the repository
if (!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))) {
+ core.startGroup('Initializing the repository');
yield git.init();
yield git.remoteAdd('origin', repositoryUrl);
+ core.endGroup();
}
// Disable automatic garbage collection
+ core.startGroup('Disabling automatic garbage collection');
if (!(yield git.tryDisableAutomaticGarbageCollection())) {
core.warning(`Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay.`);
}
+ core.endGroup();
const authHelper = gitAuthHelper.createAuthHelper(git, settings);
try {
// Configure auth
+ core.startGroup('Setting up auth');
yield authHelper.configureAuth();
+ core.endGroup();
// LFS install
if (settings.lfs) {
yield git.lfsInstall();
}
// Fetch
+ core.startGroup('Fetching the repository');
const refSpec = refHelper.getRefSpec(settings.ref, settings.commit);
yield git.fetch(settings.fetchDepth, refSpec);
+ core.endGroup();
// Checkout info
+ core.startGroup('Determining the checkout info');
const checkoutInfo = yield refHelper.getCheckoutInfo(git, settings.ref, settings.commit);
+ core.endGroup();
// LFS fetch
// Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
// Explicit lfs fetch will fetch lfs objects in parallel.
if (settings.lfs) {
+ core.startGroup('Fetching LFS objects');
yield git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref);
+ core.endGroup();
}
// Checkout
+ core.startGroup('Checking out the ref');
yield git.checkout(checkoutInfo.ref, checkoutInfo.startPoint);
+ core.endGroup();
// Submodules
if (settings.submodules) {
try {
// Temporarily override global config
+ core.startGroup('Setting up auth for fetching submodules');
yield authHelper.configureGlobalAuth();
+ core.endGroup();
// Checkout submodules
+ core.startGroup('Fetching submodules');
yield git.submoduleSync(settings.nestedSubmodules);
yield git.submoduleUpdate(settings.fetchDepth, settings.nestedSubmodules);
yield git.submoduleForeach('git config --local gc.auto 0', settings.nestedSubmodules);
+ core.endGroup();
// Persist credentials
if (settings.persistCredentials) {
+ core.startGroup('Persisting credentials for submodules');
yield authHelper.configureSubmoduleAuth();
+ core.endGroup();
}
}
finally {
@@ -5931,7 +5953,9 @@ function getSource(settings) {
finally {
// Remove auth
if (!settings.persistCredentials) {
+ core.startGroup('Removing auth');
yield authHelper.removeAuth();
+ core.endGroup();
}
}
});
@@ -7231,6 +7255,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
+const assert = __importStar(__webpack_require__(357));
const core = __importStar(__webpack_require__(470));
const fs = __importStar(__webpack_require__(747));
const fsHelper = __importStar(__webpack_require__(618));
@@ -7238,6 +7263,9 @@ const io = __importStar(__webpack_require__(1));
const path = __importStar(__webpack_require__(622));
function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean) {
return __awaiter(this, void 0, void 0, function* () {
+ assert.ok(repositoryPath, 'Expected repositoryPath to be defined');
+ assert.ok(repositoryUrl, 'Expected repositoryUrl to be defined');
+ // Indicates whether to delete the directory contents
let remove = false;
// Check whether using git or REST API
if (!git) {
@@ -7263,6 +7291,7 @@ function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean) {
}
}
try {
+ core.startGroup('Removing previously created refs, to avoid conflicts');
// Checkout detached HEAD
if (!(yield git.isDetached())) {
yield git.checkoutDetach();
@@ -7277,8 +7306,10 @@ function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean) {
for (const branch of branches) {
yield git.branchDelete(true, branch);
}
+ core.endGroup();
// Clean
if (clean) {
+ core.startGroup('Cleaning the repository');
if (!(yield git.tryClean())) {
core.debug(`The clean command failed. This might be caused by: 1) path too long, 2) permission issue, or 3) file in use. For futher investigation, manually run 'git clean -ffdx' on the directory '${repositoryPath}'.`);
remove = true;
@@ -7286,6 +7317,7 @@ function prepareExistingDirectory(git, repositoryPath, repositoryUrl, clean) {
else if (!(yield git.tryReset())) {
remove = true;
}
+ core.endGroup();
if (remove) {
core.warning(`Unable to clean or reset the repository. The repository will be recreated instead.`);
}
diff --git a/src/git-auth-helper.ts b/src/git-auth-helper.ts
index 92763b8..fc1404c 100644
--- a/src/git-auth-helper.ts
+++ b/src/git-auth-helper.ts
@@ -173,7 +173,7 @@ class GitAuthHelper {
}
async removeGlobalAuth(): Promise<void> {
- core.info(`Unsetting HOME override`)
+ core.debug(`Unsetting HOME override`)
this.git.removeEnvironmentVariable('HOME')
await io.rmRF(this.temporaryHomePath)
}
diff --git a/src/git-directory-helper.ts b/src/git-directory-helper.ts
index bfaa4a9..3866866 100644
--- a/src/git-directory-helper.ts
+++ b/src/git-directory-helper.ts
@@ -1,9 +1,11 @@
+import * as assert from 'assert'
import * as core from '@actions/core'
import * as fs from 'fs'
import * as fsHelper from './fs-helper'
import * as io from '@actions/io'
import * as path from 'path'
import {IGitCommandManager} from './git-command-manager'
+import {IGitSourceSettings} from './git-source-settings'
export async function prepareExistingDirectory(
git: IGitCommandManager | undefined,
@@ -11,6 +13,10 @@ export async function prepareExistingDirectory(
repositoryUrl: string,
clean: boolean
): Promise<void> {
+ assert.ok(repositoryPath, 'Expected repositoryPath to be defined')
+ assert.ok(repositoryUrl, 'Expected repositoryUrl to be defined')
+
+ // Indicates whether to delete the directory contents
let remove = false
// Check whether using git or REST API
@@ -38,6 +44,7 @@ export async function prepareExistingDirectory(
}
try {
+ core.startGroup('Removing previously created refs, to avoid conflicts')
// Checkout detached HEAD
if (!(await git.isDetached())) {
await git.checkoutDetach()
@@ -54,9 +61,11 @@ export async function prepareExistingDirectory(
for (const branch of branches) {
await git.branchDelete(true, branch)
}
+ core.endGroup()
// Clean
if (clean) {
+ core.startGroup('Cleaning the repository')
if (!(await git.tryClean())) {
core.debug(
`The clean command failed. This might be caused by: 1) path too long, 2) permission issue, or 3) file in use. For futher investigation, manually run 'git clean -ffdx' on the directory '${repositoryPath}'.`
@@ -65,6 +74,7 @@ export async function prepareExistingDirectory(
} else if (!(await git.tryReset())) {
remove = true
}
+ core.endGroup()
if (remove) {
core.warning(
diff --git a/src/git-source-provider.ts b/src/git-source-provider.ts
index 85806bb..6855288 100644
--- a/src/git-source-provider.ts
+++ b/src/git-source-provider.ts
@@ -32,7 +32,9 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
}
// Git command manager
+ core.startGroup('Getting Git version info')
const git = await getGitCommandManager(settings)
+ core.endGroup()
// Prepare existing directory, otherwise recreate
if (isExisting) {
@@ -78,21 +80,27 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
if (
!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))
) {
+ core.startGroup('Initializing the repository')
await git.init()
await git.remoteAdd('origin', repositoryUrl)
+ core.endGroup()
}
// Disable automatic garbage collection
+ core.startGroup('Disabling automatic garbage collection')
if (!(await git.tryDisableAutomaticGarbageCollection())) {
core.warning(
`Unable to turn off git automatic garbage collection. The git fetch operation may trigger garbage collection and cause a delay.`
)
}
+ core.endGroup()
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
try {
// Configure auth
+ core.startGroup('Setting up auth')
await authHelper.configureAuth()
+ core.endGroup()
// LFS install
if (settings.lfs) {
@@ -100,33 +108,44 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
}
// Fetch
+ core.startGroup('Fetching the repository')
const refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
await git.fetch(settings.fetchDepth, refSpec)
+ core.endGroup()
// Checkout info
+ core.startGroup('Determining the checkout info')
const checkoutInfo = await refHelper.getCheckoutInfo(
git,
settings.ref,
settings.commit
)
+ core.endGroup()
// LFS fetch
// Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
// Explicit lfs fetch will fetch lfs objects in parallel.
if (settings.lfs) {
+ core.startGroup('Fetching LFS objects')
await git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref)
+ core.endGroup()
}
// Checkout
+ core.startGroup('Checking out the ref')
await git.checkout(checkoutInfo.ref, checkoutInfo.startPoint)
+ core.endGroup()
// Submodules
if (settings.submodules) {
try {
// Temporarily override global config
+ core.startGroup('Setting up auth for fetching submodules')
await authHelper.configureGlobalAuth()
+ core.endGroup()
// Checkout submodules
+ core.startGroup('Fetching submodules')
await git.submoduleSync(settings.nestedSubmodules)
await git.submoduleUpdate(
settings.fetchDepth,
@@ -136,10 +155,13 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
'git config --local gc.auto 0',
settings.nestedSubmodules
)
+ core.endGroup()
// Persist credentials
if (settings.persistCredentials) {
+ core.startGroup('Persisting credentials for submodules')
await authHelper.configureSubmoduleAuth()
+ core.endGroup()
}
} finally {
// Remove temporary global config override
@@ -152,7 +174,9 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
} finally {
// Remove auth
if (!settings.persistCredentials) {
+ core.startGroup('Removing auth')
await authHelper.removeAuth()
+ core.endGroup()
}
}
}
diff --git a/src/git-source-settings.ts b/src/git-source-settings.ts
index 04d548c..2786222 100644
--- a/src/git-source-settings.ts
+++ b/src/git-source-settings.ts
@@ -1,17 +1,76 @@
export interface IGitSourceSettings {
+ /**
+ * The location on disk where the repository will be placed
+ */
repositoryPath: string
+
+ /**
+ * The repository owner
+ */
repositoryOwner: string
+
+ /**
+ * The repository name
+ */
repositoryName: string
+
+ /**
+ * The ref to fetch
+ */
ref: string
+
+ /**
+ * The commit to checkout
+ */
commit: string
+
+ /**
+ * Indicates whether to clean the repository
+ */
clean: boolean
+
+ /**
+ * The depth when fetching
+ */
fetchDepth: number
+
+ /**
+ * Indicates whether to fetch LFS objects
+ */
lfs: boolean
+
+ /**
+ * Indicates whether to checkout submodules
+ */
submodules: boolean
+
+ /**
+ * Indicates whether to recursively checkout submodules
+ */
nestedSubmodules: boolean
+
+ /**
+ * The auth token to use when fetching the repository
+ */
authToken: string
+
+ /**
+ * The SSH key to configure
+ */
sshKey: string
+
+ /**
+ * Additional SSH known hosts
+ */
sshKnownHosts: string
+
+ /**
+ * Indicates whether the server must be a known host
+ */
sshStrict: boolean
+
+ /**
+ * Indicates whether to persist the credentials on disk to enable scripting authenticated git commands
+ */
persistCredentials: boolean
}