mirror of
				https://github.com/actions/checkout.git
				synced 2025-11-04 07:48:09 +08:00 
			
		
		
		
	Compare commits
	
		
			8 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					8f4b7f8486 | ||
| 
						 | 
					cd6a9fd493 | ||
| 
						 | 
					24cb908017 | ||
| 
						 | 
					27135e314d | ||
| 
						 | 
					7b187184d1 | ||
| 
						 | 
					ac59398561 | ||
| 
						 | 
					3ba5ee6fac | ||
| 
						 | 
					8856415920 | 
							
								
								
									
										4
									
								
								.github/workflows/codeql-analysis.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/codeql-analysis.yml
									
									
									
									
										vendored
									
									
								
							@@ -42,7 +42,7 @@ jobs:
 | 
				
			|||||||
      uses: actions/checkout@v3
 | 
					      uses: actions/checkout@v3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Initialize CodeQL
 | 
					    - name: Initialize CodeQL
 | 
				
			||||||
      uses: github/codeql-action/init@v1
 | 
					      uses: github/codeql-action/init@v2
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        languages: ${{ matrix.language }}
 | 
					        languages: ${{ matrix.language }}
 | 
				
			||||||
        # If you wish to specify custom queries, you can do so here or in a config file.
 | 
					        # If you wish to specify custom queries, you can do so here or in a config file.
 | 
				
			||||||
@@ -55,4 +55,4 @@ jobs:
 | 
				
			|||||||
    - run: rm -rf dist # We want code scanning to analyze lib instead (individual .js files)
 | 
					    - run: rm -rf dist # We want code scanning to analyze lib instead (individual .js files)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Perform CodeQL Analysis
 | 
					    - name: Perform CodeQL Analysis
 | 
				
			||||||
      uses: github/codeql-action/analyze@v1
 | 
					      uses: github/codeql-action/analyze@v2
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								.github/workflows/update-main-version.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.github/workflows/update-main-version.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,5 @@
 | 
				
			|||||||
name: Update Main Version
 | 
					name: Update Main Version
 | 
				
			||||||
run-name: Move ${{ github.event.inputs.main_version }} to ${{ github.event.inputs.target }}
 | 
					run-name: Move ${{ github.event.inputs.major_version }} to ${{ github.event.inputs.target }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
on:
 | 
					on:
 | 
				
			||||||
  workflow_dispatch:
 | 
					  workflow_dispatch:
 | 
				
			||||||
@@ -7,11 +7,12 @@ on:
 | 
				
			|||||||
      target:
 | 
					      target:
 | 
				
			||||||
        description: The tag or reference to use
 | 
					        description: The tag or reference to use
 | 
				
			||||||
        required: true
 | 
					        required: true
 | 
				
			||||||
      main_version:
 | 
					      major_version:
 | 
				
			||||||
        type: choice
 | 
					        type: choice
 | 
				
			||||||
        description: The main version to update
 | 
					        description: The major version to update
 | 
				
			||||||
        options:
 | 
					        options:
 | 
				
			||||||
          - v3
 | 
					          - v3
 | 
				
			||||||
 | 
					          - v2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  tag:
 | 
					  tag:
 | 
				
			||||||
@@ -25,6 +26,6 @@ jobs:
 | 
				
			|||||||
        git config user.name github-actions
 | 
					        git config user.name github-actions
 | 
				
			||||||
        git config user.email github-actions@github.com
 | 
					        git config user.email github-actions@github.com
 | 
				
			||||||
    - name: Tag new target
 | 
					    - name: Tag new target
 | 
				
			||||||
      run: git tag -f ${{ github.event.inputs.main_version }} ${{ github.event.inputs.target }}
 | 
					      run: git tag -f ${{ github.event.inputs.major_version }} ${{ github.event.inputs.target }}
 | 
				
			||||||
    - name: Push new tag
 | 
					    - name: Push new tag
 | 
				
			||||||
      run: git push origin ${{ github.event.inputs.main_version }} --force
 | 
					      run: git push origin ${{ github.event.inputs.major_version }} --force
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.licenses/npm/@actions/io.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/io.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
name: "@actions/io"
 | 
					name: "@actions/io"
 | 
				
			||||||
version: 1.1.2
 | 
					version: 1.1.3
 | 
				
			||||||
type: npm
 | 
					type: npm
 | 
				
			||||||
summary: Actions io lib
 | 
					summary: Actions io lib
 | 
				
			||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/io
 | 
					homepage: https://github.com/actions/toolkit/tree/main/packages/io
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.licenses/npm/qs.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/qs.dep.yml
									
									
									
										generated
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
name: qs
 | 
					name: qs
 | 
				
			||||||
version: 6.10.1
 | 
					version: 6.11.0
 | 
				
			||||||
type: npm
 | 
					type: npm
 | 
				
			||||||
summary: A querystring parser that supports nesting and arrays, with a depth limit
 | 
					summary: A querystring parser that supports nesting and arrays, with a depth limit
 | 
				
			||||||
homepage: https://github.com/ljharb/qs
 | 
					homepage: https://github.com/ljharb/qs
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -1,5 +1,23 @@
 | 
				
			|||||||
# Changelog
 | 
					# Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## v3.4.0
 | 
				
			||||||
 | 
					- [Upgrade codeql actions to v2](https://github.com/actions/checkout/pull/1209)
 | 
				
			||||||
 | 
					- [Upgrade dependencies](https://github.com/actions/checkout/pull/1210)
 | 
				
			||||||
 | 
					- [Upgrade @actions/io](https://github.com/actions/checkout/pull/1225)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## v3.3.0
 | 
				
			||||||
 | 
					- [Implement branch list using callbacks from exec function](https://github.com/actions/checkout/pull/1045)
 | 
				
			||||||
 | 
					- [Add in explicit reference to private checkout options](https://github.com/actions/checkout/pull/1050)
 | 
				
			||||||
 | 
					- [Fix comment typos (that got added in #770)](https://github.com/actions/checkout/pull/1057)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## v3.2.0
 | 
				
			||||||
 | 
					- [Add GitHub Action to perform release](https://github.com/actions/checkout/pull/942)
 | 
				
			||||||
 | 
					- [Fix status badge](https://github.com/actions/checkout/pull/967)
 | 
				
			||||||
 | 
					- [Replace datadog/squid with ubuntu/squid Docker image](https://github.com/actions/checkout/pull/1002)
 | 
				
			||||||
 | 
					- [Wrap pipeline commands for submoduleForeach in quotes](https://github.com/actions/checkout/pull/964)
 | 
				
			||||||
 | 
					- [Update @actions/io to 1.1.2](https://github.com/actions/checkout/pull/1029)
 | 
				
			||||||
 | 
					- [Upgrading version to 3.2.0](https://github.com/actions/checkout/pull/1039)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## v3.1.0
 | 
					## v3.1.0
 | 
				
			||||||
- [Use @actions/core `saveState` and `getState`](https://github.com/actions/checkout/pull/939)
 | 
					- [Use @actions/core `saveState` and `getState`](https://github.com/actions/checkout/pull/939)
 | 
				
			||||||
- [Add `github-server-url` input](https://github.com/actions/checkout/pull/922)
 | 
					- [Add `github-server-url` input](https://github.com/actions/checkout/pull/922)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -155,6 +155,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
 | 
				
			|||||||
    repository: my-org/my-tools
 | 
					    repository: my-org/my-tools
 | 
				
			||||||
    path: my-tools
 | 
					    path: my-tools
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					> - If your secondary repository is private you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Checkout multiple repos (nested)
 | 
					## Checkout multiple repos (nested)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -168,6 +169,7 @@ When Git 2.18 or higher is not in your PATH, falls back to the REST API to downl
 | 
				
			|||||||
    repository: my-org/my-tools
 | 
					    repository: my-org/my-tools
 | 
				
			||||||
    path: my-tools
 | 
					    path: my-tools
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					> - If your secondary repository is private you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Checkout multiple repos (private)
 | 
					## Checkout multiple repos (private)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										80
									
								
								__test__/git-command-manager.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								__test__/git-command-manager.test.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
				
			|||||||
 | 
					import * as exec from '@actions/exec'
 | 
				
			||||||
 | 
					import * as fshelper from '../lib/fs-helper'
 | 
				
			||||||
 | 
					import * as commandManager from '../lib/git-command-manager'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					let git: commandManager.IGitCommandManager
 | 
				
			||||||
 | 
					let mockExec = jest.fn()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('git-auth-helper tests', () => {
 | 
				
			||||||
 | 
					  beforeAll(async () => {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(async () => {
 | 
				
			||||||
 | 
					    jest.spyOn(fshelper, 'fileExistsSync').mockImplementation(jest.fn())
 | 
				
			||||||
 | 
					    jest.spyOn(fshelper, 'directoryExistsSync').mockImplementation(jest.fn())
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  afterEach(() => {
 | 
				
			||||||
 | 
					    jest.restoreAllMocks()
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  afterAll(() => {})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('branch list matches', async () => {
 | 
				
			||||||
 | 
					    mockExec.mockImplementation((path, args, options) => {
 | 
				
			||||||
 | 
					      console.log(args, options.listeners.stdout)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (args.includes('version')) {
 | 
				
			||||||
 | 
					        options.listeners.stdout(Buffer.from('2.18'))
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (args.includes('rev-parse')) {
 | 
				
			||||||
 | 
					        options.listeners.stdline(Buffer.from('refs/heads/foo'))
 | 
				
			||||||
 | 
					        options.listeners.stdline(Buffer.from('refs/heads/bar'))
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return 1
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    jest.spyOn(exec, 'exec').mockImplementation(mockExec)
 | 
				
			||||||
 | 
					    const workingDirectory = 'test'
 | 
				
			||||||
 | 
					    const lfs = false
 | 
				
			||||||
 | 
					    git = await commandManager.createCommandManager(workingDirectory, lfs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let branches = await git.branchList(false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(branches).toHaveLength(2)
 | 
				
			||||||
 | 
					    expect(branches.sort()).toEqual(['foo', 'bar'].sort())
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('ambiguous ref name output is captured', async () => {
 | 
				
			||||||
 | 
					    mockExec.mockImplementation((path, args, options) => {
 | 
				
			||||||
 | 
					      console.log(args, options.listeners.stdout)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (args.includes('version')) {
 | 
				
			||||||
 | 
					        options.listeners.stdout(Buffer.from('2.18'))
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (args.includes('rev-parse')) {
 | 
				
			||||||
 | 
					        options.listeners.stdline(Buffer.from('refs/heads/foo'))
 | 
				
			||||||
 | 
					        // If refs/tags/v1 and refs/heads/tags/v1 existed on this repository
 | 
				
			||||||
 | 
					        options.listeners.errline(
 | 
				
			||||||
 | 
					          Buffer.from("error: refname 'tags/v1' is ambiguous")
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      return 1
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    jest.spyOn(exec, 'exec').mockImplementation(mockExec)
 | 
				
			||||||
 | 
					    const workingDirectory = 'test'
 | 
				
			||||||
 | 
					    const lfs = false
 | 
				
			||||||
 | 
					    git = await commandManager.createCommandManager(workingDirectory, lfs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let branches = await git.branchList(false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    expect(branches).toHaveLength(1)
 | 
				
			||||||
 | 
					    expect(branches.sort()).toEqual(['foo'].sort())
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
							
								
								
									
										36885
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36885
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										69
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										69
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -12,7 +12,7 @@
 | 
				
			|||||||
        "@actions/core": "^1.10.0",
 | 
					        "@actions/core": "^1.10.0",
 | 
				
			||||||
        "@actions/exec": "^1.0.1",
 | 
					        "@actions/exec": "^1.0.1",
 | 
				
			||||||
        "@actions/github": "^2.2.0",
 | 
					        "@actions/github": "^2.2.0",
 | 
				
			||||||
        "@actions/io": "^1.1.2",
 | 
					        "@actions/io": "^1.1.3",
 | 
				
			||||||
        "@actions/tool-cache": "^1.1.2",
 | 
					        "@actions/tool-cache": "^1.1.2",
 | 
				
			||||||
        "uuid": "^3.3.3"
 | 
					        "uuid": "^3.3.3"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
        "@types/uuid": "^3.4.6",
 | 
					        "@types/uuid": "^3.4.6",
 | 
				
			||||||
        "@typescript-eslint/eslint-plugin": "^5.45.0",
 | 
					        "@typescript-eslint/eslint-plugin": "^5.45.0",
 | 
				
			||||||
        "@typescript-eslint/parser": "^5.45.0",
 | 
					        "@typescript-eslint/parser": "^5.45.0",
 | 
				
			||||||
        "@zeit/ncc": "^0.20.5",
 | 
					        "@vercel/ncc": "^0.36.1",
 | 
				
			||||||
        "eslint": "^7.32.0",
 | 
					        "eslint": "^7.32.0",
 | 
				
			||||||
        "eslint-plugin-github": "^4.3.2",
 | 
					        "eslint-plugin-github": "^4.3.2",
 | 
				
			||||||
        "eslint-plugin-jest": "^25.7.0",
 | 
					        "eslint-plugin-jest": "^25.7.0",
 | 
				
			||||||
@@ -91,9 +91,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@actions/io": {
 | 
					    "node_modules/@actions/io": {
 | 
				
			||||||
      "version": "1.1.2",
 | 
					      "version": "1.1.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
 | 
					      "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@actions/tool-cache": {
 | 
					    "node_modules/@actions/tool-cache": {
 | 
				
			||||||
      "version": "1.1.2",
 | 
					      "version": "1.1.2",
 | 
				
			||||||
@@ -4891,11 +4891,10 @@
 | 
				
			|||||||
        "node": ">=10"
 | 
					        "node": ">=10"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@zeit/ncc": {
 | 
					    "node_modules/@vercel/ncc": {
 | 
				
			||||||
      "version": "0.20.5",
 | 
					      "version": "0.36.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.20.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-XU6uzwvv95DqxciQx+aOLhbyBx/13ky+RK1y88Age9Du3BlA4mMPCy13BGjayOrrumOzlq1XV3SD/BWiZENXlw==",
 | 
					      "integrity": "sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==",
 | 
				
			||||||
      "deprecated": "@zeit/ncc is no longer maintained. Please use @vercel/ncc instead.",
 | 
					 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "bin": {
 | 
					      "bin": {
 | 
				
			||||||
        "ncc": "dist/ncc/cli.js"
 | 
					        "ncc": "dist/ncc/cli.js"
 | 
				
			||||||
@@ -16394,9 +16393,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/json5": {
 | 
					    "node_modules/json5": {
 | 
				
			||||||
      "version": "2.2.1",
 | 
					      "version": "2.2.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
 | 
					      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "bin": {
 | 
					      "bin": {
 | 
				
			||||||
        "json5": "lib/cli.js"
 | 
					        "json5": "lib/cli.js"
 | 
				
			||||||
@@ -17110,9 +17109,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/qs": {
 | 
					    "node_modules/qs": {
 | 
				
			||||||
      "version": "6.10.1",
 | 
					      "version": "6.11.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
 | 
					      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "side-channel": "^1.0.4"
 | 
					        "side-channel": "^1.0.4"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
@@ -17843,9 +17842,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/tsconfig-paths/node_modules/json5": {
 | 
					    "node_modules/tsconfig-paths/node_modules/json5": {
 | 
				
			||||||
      "version": "1.0.1",
 | 
					      "version": "1.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
 | 
					      "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "minimist": "^1.2.0"
 | 
					        "minimist": "^1.2.0"
 | 
				
			||||||
@@ -18476,9 +18475,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@actions/io": {
 | 
					    "@actions/io": {
 | 
				
			||||||
      "version": "1.1.2",
 | 
					      "version": "1.1.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
 | 
					      "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@actions/tool-cache": {
 | 
					    "@actions/tool-cache": {
 | 
				
			||||||
      "version": "1.1.2",
 | 
					      "version": "1.1.2",
 | 
				
			||||||
@@ -22185,10 +22184,10 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@zeit/ncc": {
 | 
					    "@vercel/ncc": {
 | 
				
			||||||
      "version": "0.20.5",
 | 
					      "version": "0.36.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.20.5.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-XU6uzwvv95DqxciQx+aOLhbyBx/13ky+RK1y88Age9Du3BlA4mMPCy13BGjayOrrumOzlq1XV3SD/BWiZENXlw==",
 | 
					      "integrity": "sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "abab": {
 | 
					    "abab": {
 | 
				
			||||||
@@ -30995,9 +30994,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "json5": {
 | 
					    "json5": {
 | 
				
			||||||
      "version": "2.2.1",
 | 
					      "version": "2.2.3",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
 | 
				
			||||||
      "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
 | 
					      "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "kleur": {
 | 
					    "kleur": {
 | 
				
			||||||
@@ -31553,9 +31552,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "qs": {
 | 
					    "qs": {
 | 
				
			||||||
      "version": "6.10.1",
 | 
					      "version": "6.11.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
 | 
					      "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "side-channel": "^1.0.4"
 | 
					        "side-channel": "^1.0.4"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -32078,9 +32077,9 @@
 | 
				
			|||||||
      },
 | 
					      },
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "json5": {
 | 
					        "json5": {
 | 
				
			||||||
          "version": "1.0.1",
 | 
					          "version": "1.0.2",
 | 
				
			||||||
          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
 | 
					          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
 | 
				
			||||||
          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
 | 
					          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
 | 
				
			||||||
          "dev": true,
 | 
					          "dev": true,
 | 
				
			||||||
          "requires": {
 | 
					          "requires": {
 | 
				
			||||||
            "minimist": "^1.2.0"
 | 
					            "minimist": "^1.2.0"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,7 +31,7 @@
 | 
				
			|||||||
    "@actions/core": "^1.10.0",
 | 
					    "@actions/core": "^1.10.0",
 | 
				
			||||||
    "@actions/exec": "^1.0.1",
 | 
					    "@actions/exec": "^1.0.1",
 | 
				
			||||||
    "@actions/github": "^2.2.0",
 | 
					    "@actions/github": "^2.2.0",
 | 
				
			||||||
    "@actions/io": "^1.1.2",
 | 
					    "@actions/io": "^1.1.3",
 | 
				
			||||||
    "@actions/tool-cache": "^1.1.2",
 | 
					    "@actions/tool-cache": "^1.1.2",
 | 
				
			||||||
    "uuid": "^3.3.3"
 | 
					    "uuid": "^3.3.3"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
@@ -41,7 +41,7 @@
 | 
				
			|||||||
    "@types/uuid": "^3.4.6",
 | 
					    "@types/uuid": "^3.4.6",
 | 
				
			||||||
    "@typescript-eslint/eslint-plugin": "^5.45.0",
 | 
					    "@typescript-eslint/eslint-plugin": "^5.45.0",
 | 
				
			||||||
    "@typescript-eslint/parser": "^5.45.0",
 | 
					    "@typescript-eslint/parser": "^5.45.0",
 | 
				
			||||||
    "@zeit/ncc": "^0.20.5",
 | 
					    "@vercel/ncc": "^0.36.1",
 | 
				
			||||||
    "eslint": "^7.32.0",
 | 
					    "eslint": "^7.32.0",
 | 
				
			||||||
    "eslint-plugin-github": "^4.3.2",
 | 
					    "eslint-plugin-github": "^4.3.2",
 | 
				
			||||||
    "eslint-plugin-jest": "^25.7.0",
 | 
					    "eslint-plugin-jest": "^25.7.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -247,7 +247,7 @@ class GitAuthHelper {
 | 
				
			|||||||
    if (this.settings.sshKnownHosts) {
 | 
					    if (this.settings.sshKnownHosts) {
 | 
				
			||||||
      knownHosts += `# Begin from input known hosts\n${this.settings.sshKnownHosts}\n# end from input known hosts\n`
 | 
					      knownHosts += `# Begin from input known hosts\n${this.settings.sshKnownHosts}\n# end from input known hosts\n`
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    knownHosts += `# Begin implicitly added github.com\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n# End implicitly added github.com\n`
 | 
					    knownHosts += `# Begin implicitly added github.com\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=\n# End implicitly added github.com\n`
 | 
				
			||||||
    this.sshKnownHostsPath = path.join(runnerTemp, `${uniqueId}_known_hosts`)
 | 
					    this.sshKnownHostsPath = path.join(runnerTemp, `${uniqueId}_known_hosts`)
 | 
				
			||||||
    stateHelper.setSshKnownHostsPath(this.sshKnownHostsPath)
 | 
					    stateHelper.setSshKnownHostsPath(this.sshKnownHostsPath)
 | 
				
			||||||
    await fs.promises.writeFile(this.sshKnownHostsPath, knownHosts)
 | 
					    await fs.promises.writeFile(this.sshKnownHostsPath, knownHosts)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -94,8 +94,11 @@ class GitCommandManager {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Note, this implementation uses "rev-parse --symbolic-full-name" because the output from
 | 
					    // Note, this implementation uses "rev-parse --symbolic-full-name" because the output from
 | 
				
			||||||
    // "branch --list" is more difficult when in a detached HEAD state.
 | 
					    // "branch --list" is more difficult when in a detached HEAD state.
 | 
				
			||||||
    // Note, this implementation uses "rev-parse --symbolic-full-name" because there is a bug
 | 
					
 | 
				
			||||||
    // in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names.
 | 
					    // TODO(https://github.com/actions/checkout/issues/786): this implementation uses
 | 
				
			||||||
 | 
					    // "rev-parse --symbolic-full-name" because there is a bug
 | 
				
			||||||
 | 
					    // in Git 2.18 that causes "rev-parse --symbolic" to output symbolic full names. When
 | 
				
			||||||
 | 
					    // 2.18 is no longer supported, we can switch back to --symbolic.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const args = ['rev-parse', '--symbolic-full-name']
 | 
					    const args = ['rev-parse', '--symbolic-full-name']
 | 
				
			||||||
    if (remote) {
 | 
					    if (remote) {
 | 
				
			||||||
@@ -104,21 +107,49 @@ class GitCommandManager {
 | 
				
			|||||||
      args.push('--branches')
 | 
					      args.push('--branches')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const output = await this.execGit(args)
 | 
					    const stderr: string[] = []
 | 
				
			||||||
 | 
					    const errline: string[] = []
 | 
				
			||||||
 | 
					    const stdout: string[] = []
 | 
				
			||||||
 | 
					    const stdline: string[] = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (let branch of output.stdout.trim().split('\n')) {
 | 
					    const listeners = {
 | 
				
			||||||
      branch = branch.trim()
 | 
					      stderr: (data: Buffer) => {
 | 
				
			||||||
      if (branch) {
 | 
					        stderr.push(data.toString())
 | 
				
			||||||
        if (branch.startsWith('refs/heads/')) {
 | 
					      },
 | 
				
			||||||
          branch = branch.substr('refs/heads/'.length)
 | 
					      errline: (data: Buffer) => {
 | 
				
			||||||
        } else if (branch.startsWith('refs/remotes/')) {
 | 
					        errline.push(data.toString())
 | 
				
			||||||
          branch = branch.substr('refs/remotes/'.length)
 | 
					      },
 | 
				
			||||||
        }
 | 
					      stdout: (data: Buffer) => {
 | 
				
			||||||
 | 
					        stdout.push(data.toString())
 | 
				
			||||||
        result.push(branch)
 | 
					      },
 | 
				
			||||||
 | 
					      stdline: (data: Buffer) => {
 | 
				
			||||||
 | 
					        stdline.push(data.toString())
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Suppress the output in order to avoid flooding annotations with innocuous errors.
 | 
				
			||||||
 | 
					    await this.execGit(args, false, true, listeners)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.debug(`stderr callback is: ${stderr}`)
 | 
				
			||||||
 | 
					    core.debug(`errline callback is: ${errline}`)
 | 
				
			||||||
 | 
					    core.debug(`stdout callback is: ${stdout}`)
 | 
				
			||||||
 | 
					    core.debug(`stdline callback is: ${stdline}`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (let branch of stdline) {
 | 
				
			||||||
 | 
					      branch = branch.trim()
 | 
				
			||||||
 | 
					      if (!branch) {
 | 
				
			||||||
 | 
					        continue
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (branch.startsWith('refs/heads/')) {
 | 
				
			||||||
 | 
					        branch = branch.substring('refs/heads/'.length)
 | 
				
			||||||
 | 
					      } else if (branch.startsWith('refs/remotes/')) {
 | 
				
			||||||
 | 
					        branch = branch.substring('refs/remotes/'.length)
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      result.push(branch)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return result
 | 
					    return result
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -395,7 +426,8 @@ class GitCommandManager {
 | 
				
			|||||||
  private async execGit(
 | 
					  private async execGit(
 | 
				
			||||||
    args: string[],
 | 
					    args: string[],
 | 
				
			||||||
    allowAllExitCodes = false,
 | 
					    allowAllExitCodes = false,
 | 
				
			||||||
    silent = false
 | 
					    silent = false,
 | 
				
			||||||
 | 
					    customListeners = {}
 | 
				
			||||||
  ): Promise<GitOutput> {
 | 
					  ): Promise<GitOutput> {
 | 
				
			||||||
    fshelper.directoryExistsSync(this.workingDirectory, true)
 | 
					    fshelper.directoryExistsSync(this.workingDirectory, true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -409,22 +441,29 @@ class GitCommandManager {
 | 
				
			|||||||
      env[key] = this.gitEnv[key]
 | 
					      env[key] = this.gitEnv[key]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const stdout: string[] = []
 | 
					    const defaultListener = {
 | 
				
			||||||
 | 
					      stdout: (data: Buffer) => {
 | 
				
			||||||
 | 
					        stdout.push(data.toString())
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const mergedListeners = {...defaultListener, ...customListeners}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const stdout: string[] = []
 | 
				
			||||||
    const options = {
 | 
					    const options = {
 | 
				
			||||||
      cwd: this.workingDirectory,
 | 
					      cwd: this.workingDirectory,
 | 
				
			||||||
      env,
 | 
					      env,
 | 
				
			||||||
      silent,
 | 
					      silent,
 | 
				
			||||||
      ignoreReturnCode: allowAllExitCodes,
 | 
					      ignoreReturnCode: allowAllExitCodes,
 | 
				
			||||||
      listeners: {
 | 
					      listeners: mergedListeners
 | 
				
			||||||
        stdout: (data: Buffer) => {
 | 
					 | 
				
			||||||
          stdout.push(data.toString())
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    result.exitCode = await exec.exec(`"${this.gitPath}"`, args, options)
 | 
					    result.exitCode = await exec.exec(`"${this.gitPath}"`, args, options)
 | 
				
			||||||
    result.stdout = stdout.join('')
 | 
					    result.stdout = stdout.join('')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.debug(result.exitCode.toString())
 | 
				
			||||||
 | 
					    core.debug(result.stdout)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return result
 | 
					    return result
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,7 +47,7 @@ export function setSshKnownHostsPath(sshKnownHostsPath: string) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Save the sef-safe-directory input so the POST action can retrieve the value.
 | 
					 * Save the set-safe-directory input so the POST action can retrieve the value.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export function setSafeDirectory() {
 | 
					export function setSafeDirectory() {
 | 
				
			||||||
  core.saveState('setSafeDirectory', 'true')
 | 
					  core.saveState('setSafeDirectory', 'true')
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user