git: accept explicit commit hash for git context (#1765)

* git: accept explicit commit hash for git context

When checking out code from non-github repositories, the typical
assumptions may not be valid, e.g. that the only interesting
non-branch commits have ref names starting with refs/pull. A specific
example is fetching an un-merged commit from a gerrit repository by
commit hash.

This change just looks at the second part of the git context path and
checks if it's a SHA commit hash, and if so, will fetch and check out
this commit after cloning the repository.

Sample context argument:

    https://github.repo/project#e1772f228e06d15facdf175e5385e265b57068c0

* ci: fix test script to recognize any non-zero exit as an error

hack/linter.sh didn't properly install golangci-lint in hack/bin as I
already have another version of golangci-lint on my PATH, but then it
failed to execute because it was looking for it specifically in
hack/bin.

When the executable is not found, the exit code is 127 instead of 1,
and so test.sh ignored the error.

Two fixes:

1. `test.sh`:
  - Use `if (script) ...` instead of assigning / checking a result
    variable to determine if each validation script passed or failed.

2. `hack/linter.sh`:
  - Instead of checking for golangci-lint on the path, just
    specifically check for an executable file (`test -x`) in the
    expected location.

Co-authored-by: Wade Carpenter <wwade@users.noreply.github.com>
This commit is contained in:
wwade
2021-10-19 19:27:15 -07:00
committed by GitHub
co-authored by Wade Carpenter
parent 3b42fe45ea
commit 82fc94d930
4 changed files with 102 additions and 32 deletions
+3 -7
View File
@@ -37,15 +37,11 @@ fail=0
for s in "${scripts[@]}"
do
echo "RUN ${s}"
set +e
./$s
result=$?
set -e
if [[ $result -eq 1 ]]; then
if "./${s}"; then
echo -e "${GREEN}PASSED${RESET} ${s}"
else
echo -e "${RED}FAILED${RESET} ${s}"
fail=1
else
echo -e "${GREEN}PASSED${RESET} ${s}"
fi
done
exit $fail