Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suppress hint: You are in 'detached HEAD' state. #494

Open
jsoref opened this issue May 5, 2021 · 1 comment · May be fixed by #981
Open

Suppress hint: You are in 'detached HEAD' state. #494

jsoref opened this issue May 5, 2021 · 1 comment · May be fixed by #981

Comments

@jsoref
Copy link
Contributor

jsoref commented May 5, 2021

Downstream consumers of actions shouldn't see noise that git is checking out a detached head. When actions/checkout is used, it will be given something specific to check out, and if that results in a detached head, that's clearly intentional...

name: Spell checking
on:
  pull_request_target:

jobs:
  check-spelling:
    name: Spell checking
    runs-on: ubuntu-latest
    steps:
    - name: checkout-merge
      if: "contains(github.event_name, 'pull_request')"
      uses: actions/checkout@v2.0.0
      with:
        ref: refs/pull/${{github.event.pull_request.number}}/merge
Run actions/checkout@v2.0.0
  with:
    ref: refs/pull/1/merge
    repository: check-spelling/sticky-pull-request-comment
    token: ***
    persist-credentials: true
    clean: true
    fetch-depth: 1
    lfs: false
Syncing repository: check-spelling/sticky-pull-request-comment
Working directory is '/home/runner/work/sticky-pull-request-comment/sticky-pull-request-comment'
...
From https://github.com/check-spelling/sticky-pull-request-comment
 * [new ref]         refs/pull/1/merge -> pull/1/merge
/usr/bin/git checkout --progress --force refs/remotes/pull/1/merge
Note: switching to 'refs/remotes/pull/1/merge'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 4ea2184 Merge b9cf99a584fe42271c3aaee8ad2337ed41fe71b5 into 49d94c2e2fd173b2af1fedaabb95dbd37c0e80e4
/usr/bin/git log -1
commit 4ea21846857440dff5c72b5cd423d1f8d56400c5
Author: Josh Soref <jsoref@users.noreply.github.com>
Date:   Wed May 5 08:47:45 2021 -0400

    Merge b9cf99a584fe42271c3aaee8ad2337ed41fe71b5 into 49d94c2e2fd173b2af1fedaabb95dbd37c0e80e4
@andrewbanchich
Copy link

andrewbanchich commented Oct 28, 2021

I disagree. I caught a bug in our GitHub Actions workflow only because I noticed this log.

The log offers clarity about what is going on (which is the point of logs). If people misinterpret them, that's on them.

jeffwidman added a commit to jeffwidman/checkout that referenced this issue Oct 24, 2022
Checking out certain `ref` values will result in a warning about a detached `HEAD`:
```
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false
```

However, this warning isn't useful in a CI environment... so suppress it.

I realize on the original bug report that one user mentioned this warning
highlighted a bug in his actions flow, but I consider that a super rare / happy accident.
99% of use cases will be _intentionally_ checking out a specific ref where
the detached head state is inevitable, so the warning is pure noise.

Passing the config this way sets it _only_ for this command. Note that it
must be set [_before_ calling `checkout`](https://stackoverflow.com/a/72588008/770425).

Resolve: actions#494
@jeffwidman jeffwidman linked a pull request Oct 24, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants