Skip to content

Repository.getFilesChanged(start, end) contains the empty path filename and breaks Actions paths filter #23919

Closed
@ChristopherHX

Description

@ChristopherHX

Description

I wondered why this Gitea Actions workflow is triggered while changing the workflow file

Enable Gitea Actions and add the following file
Add .github/workflows/main.yml

on:
  push:
    paths-ignore:
    - '**.yml'
jobs:
  _:
    runs-on: ubuntu-latest
    steps:
    - run: exit 0

I expect that the workflow doesn't trigger unless I add a file without .yml extension

Workaround exclude the empty filepath

on:
  push:
    paths-ignore:
    - ''
    - '**.yml'
jobs:
  _:
    runs-on: ubuntu-latest
    steps:
    - run: exit 0

I tracked the bug down to this function:

return strings.Split(string(stdout), "\n"), nil

Callstack

Based on comment in another very similar function (without this bug)

// Because Git will always emit filenames with a terminal NUL ignore the last entry in the split - which will always be empty.

the empty filepath should be removed by the function before returning the path.

Furthermore it looks like these functions are duplicated, one bugfree and the other not.

Gitea Version

1.19.0+53-gdff3ce089

Can you reproduce the bug on the Gitea demo site?

No

Log Gist

No response

Screenshots

No response

Git Version

2.17.1

Operating System

Linux

How are you running Gitea?

I just downloaded https://dl.gitea.com/gitea/1.19/gitea-1.19-linux-arm64.xz and enabled actions for testing purposes.

Database

SQLite

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions