On Sun, Nov 11, 2018 at 9:59 PM Alexander Kapshuk <alexander.kaps...@gmail.com> wrote: > > 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
An even simpler approach would be: { git --no-optional-locks status -uno --porcelain 2>/dev/null || git diff-index --name-only HEAD } | grep -qv scripts/package && printf '%s' -dirty Sample run: cmd sh: cmd: command not found { cmd 2>/dev/null || date } | grep -q 2018 && printf '%s' ok ok