On Sun, Nov 11, 2018 at 7:41 PM Genki Sky <s...@genki.is> wrote: > > Hi Alexander, > > On Sun, 11 Nov 2018 16:48:38 +0200, Alexander Kapshuk > <alexander.kaps...@gmail.com> wrote: > > Piping the output of the git command to grep and using the return status > > of grep as the test condition within the if block, would be sufficient > > to determine whether or not '-dirty' should be printed. > > > > Sample run: > > % if git --no-optional-locks \ > > status -uno --porcelain \ > > 2>/dev/null | > > grep -qv '^.. scripts/package' > > then > > printf '%s' -dirty > > fi > > I don't think this works well for us. We need to check whether > --no-optional-locks is available before using the output to determine > whether the tree is dirty or not. If it's not available, we have to > fall back on diff-index. Let me know if I'm misreading you.
It was I who failed to read the proposed patch in its entirety in the first place. I did not get the full picture as a result. My apologies. Would something like this work for you? local git_status git_status=$(git --no-optional-locks status -uno --porcelain 2>/dev/null) test $? -eq 0 || git_status=$(git diff-index --name-only HEAD) if printf '%s' "$git_status" | grep -qv scripts/package; then printf '%s' -dirty fi