From 036772999d42e4aa9fd02a4e6ab1c837df8bab02 Mon Sep 17 00:00:00 2001
From: eric sciple <ericsciple@users.noreply.github.com>
Date: Thu, 19 Mar 2020 00:14:00 -0400
Subject: [PATCH] .

---
 dist/index.js               | 20 ++++++++++++++++++++
 src/git-directory-helper.ts |  4 ++++
 src/git-source-provider.ts  | 16 ++++++++++++++++
 3 files changed, 40 insertions(+)

diff --git a/dist/index.js b/dist/index.js
index 348e621..2625f81 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -5822,7 +5822,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, initialRemoteUrl, [httpsUrl, sshUrl], settings.clean);
@@ -5854,21 +5856,27 @@ function getSource(settings) {
         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
             const checkoutInfo = yield refHelper.getCheckoutInfo(git, settings.ref, settings.commit);
             // 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();
             }
             // Fix URL when using SSH
             if (settings.sshKey && initialRemoteUrl !== sshUrl) {
@@ -5880,14 +5888,20 @@ function getSource(settings) {
             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 {
@@ -5901,7 +5915,9 @@ function getSource(settings) {
         finally {
             // Remove auth
             if (!settings.persistCredentials) {
+                core.startGroup('Removing auth');
                 yield authHelper.removeAuth();
+                core.endGroup();
             }
         }
     });
@@ -7241,6 +7257,7 @@ function prepareExistingDirectory(git, repositoryPath, preferredRemoteUrl, allow
                 }
             }
             try {
+                core.startGroup('Removing previously created refs, to avoid conflicts');
                 // Checkout detached HEAD
                 if (!(yield git.isDetached())) {
                     yield git.checkoutDetach();
@@ -7255,8 +7272,10 @@ function prepareExistingDirectory(git, repositoryPath, preferredRemoteUrl, allow
                 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;
@@ -7264,6 +7283,7 @@ function prepareExistingDirectory(git, repositoryPath, preferredRemoteUrl, allow
                     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-directory-helper.ts b/src/git-directory-helper.ts
index 37f06e1..f449e5c 100644
--- a/src/git-directory-helper.ts
+++ b/src/git-directory-helper.ts
@@ -53,6 +53,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()
@@ -69,9 +70,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}'.`
@@ -80,6 +83,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 9495ece..8c2a75c 100644
--- a/src/git-source-provider.ts
+++ b/src/git-source-provider.ts
@@ -43,7 +43,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) {
@@ -104,7 +106,9 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
   const authHelper = gitAuthHelper.createAuthHelper(git, settings)
   try {
     // Configure auth
+    core.startGroup('Setting up auth')
     await authHelper.configureAuth()
+    core.endGroup()
 
     // LFS install
     if (settings.lfs) {
@@ -112,8 +116,10 @@ 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
     const checkoutInfo = await refHelper.getCheckoutInfo(
@@ -126,7 +132,9 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
     // 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()
     }
 
     // Fix URL when using SSH
@@ -141,9 +149,12 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
     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,
@@ -153,10 +164,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
@@ -169,7 +183,9 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
   } finally {
     // Remove auth
     if (!settings.persistCredentials) {
+      core.startGroup('Removing auth')
       await authHelper.removeAuth()
+      core.endGroup()
     }
   }
 }