pathspec is not respected because of bash expansion
alexgarel opened this issue · comments
Version of the Action
v4.14.1
Describe the bug
I my workflow action,
I am converting jupyter notebook to markdown.
I want to commit all "md" files changed by previous steps in the repository
If I use file_pattern: "*.md"
, according to pathspec, it should commit every ".md" file it the repository but it does not work.
This is due to the fact that I have a Threshold.md file at the root of my repository, so *.md
is expanded to Threshold.md before being send to git command.
I can reproduce it locally, if I use git status *.md
, I only get status for Threshold.md,
while if I use git status "*.md"
, I get status for all ".md" file in the repository.
I tried to use filepattern: "'*.md'"
but it did not work. I think quotes are lost during evaluation to pass it in ENV variable ($INPUT_FILE_PATTERN
)
To Reproduce
- Create git repo with a structure:
- a.md
- subdir/b.md
- Add a step that modifies those files by eg. appending some value.
- Use the action to commit all md file with
file_pattern: "*.md"
. - See that file are not commited.
Expected behavior
I think the script should split $INPUT_FILE_PATTERN
on spaces to get the different patterns in an array variable, then use quoting of arguments.
read -a INPUT_FILES <<< "$INPUT_FILE_PATTERN"
... (later on) ...
git status "${INPUT_FILES[@]}"
...
git add "${INPUT_FILES[@]}"
Used Workflow
See link above
Thanks for your feedback and idea for a solution to this problem.
You're correct that quotes are lost in translation between the YAML, the Bash script and Git.
There's a previous discussion about this here: #196 (review)
In February I've opened a PR which tries to fix this; but I'm not sure why I haven't merged or worked more on this.
Will take a closer look on this in the upcoming days. It's time we close this problem for good.
Ok, good to know, I made suggestions on your PR :-)
@alexgarel Oh man. Thank you so much!
My bash knowledge is still so limited … even after all these years.
Will review your comments in detail when I get the time.
Gentle ping
@alexgarel It's on my todo list. Currently a lot to do at my day-job and didn't had the energy to invest the time into this issue.
I plan to tackle this tonight.
What I can alrady tell is that <<<
didn't seem to work. More later today.
@alexgarel #205 has been updated with your suggestion. Could you give this version a try by updating your workflow to use:
- uses: stefanzweifel/git-auto-commit-action@refactor/expand-file-pattern
If this change resolved your issues, I'm going to merge the PR and tag a new version.
I've tested the changes made in #205 extensivly in a test project of mine. file_pattern
should now work more reliably.
The original issue you described here was primarily solved by adding disable_globbing: true
to the Workflow. I've updated the README with an example, when someone might run into this:
https://github.com/stefanzweifel/git-auto-commit-action#custom-file_pattern-changed-files-but-seeing-working-tree-clean-nothing-to-commit-in-the-logs
(In a future v5 I would like to permanently fix this issue without resorting to a disable_globbing
-option.)
Thanks for helping solving this issue!