Compare commits

...

2 Commits

Author SHA1 Message Date
Mohammad Ismail
2f05c72bde
Merge 83f93bf255d9c8d8d30434cb4497fcc8e3dd59b1 into 009b9ae9e446ad8d9b8c809870b0fbcc5e03573e 2025-01-16 11:31:45 -08:00
Mohammad Ismail
83f93bf255 Add bare option to checkout action
Fixes #603
2024-11-27 13:44:30 +01:00
4 changed files with 159 additions and 110 deletions

View File

@ -126,6 +126,10 @@ 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: ''
# Whether to clone the repository as a bare repository
# Default: false
bare: ''
```
<!-- end usage -->

View File

@ -375,4 +375,42 @@ describe('Test fetchDepth and fetchTags options', () => {
expect.any(Object)
)
})
it('should call execGit with the correct arguments when bare is true', async () => {
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
const workingDirectory = 'test'
const lfs = false
const doSparseCheckout = false
git = await commandManager.createCommandManager(
workingDirectory,
lfs,
doSparseCheckout
)
const refSpec = ['refspec1', 'refspec2']
const options = {
filter: 'filterValue',
bare: true
}
await git.fetch(refSpec, options)
expect(mockExec).toHaveBeenCalledWith(
expect.any(String),
[
'-c',
'protocol.version=2',
'fetch',
'--bare',
'--no-tags',
'--prune',
'--no-recurse-submodules',
'--filter=filterValue',
'origin',
'refspec1',
'refspec2'
],
expect.any(Object)
)
})
})

View File

@ -98,6 +98,9 @@ inputs:
github-server-url:
description: The base URL for the GitHub instance that you are trying to clone from, will use environment defaults to fetch from the same instance that the workflow is running from unless specified. Example URLs are https://github.com or https://my-ghes-server.example.com
required: false
bare:
description: 'Whether to clone the repository as a bare repository'
default: false
outputs:
ref:
description: 'The branch, tag or SHA that was checked out'

View File

@ -110,7 +110,11 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
!fsHelper.directoryExistsSync(path.join(settings.repositoryPath, '.git'))
) {
core.startGroup('Initializing the repository')
await git.init()
const initArgs = ['init']
if (settings.bare) {
initArgs.push('--bare')
}
await git.execGit(initArgs)
await git.remoteAdd('origin', repositoryUrl)
core.endGroup()
}