forked from kiss-community/kiss
kiss: fix pkg_update for extra colons in KISS_PATH (#59)
If KISS_PATH=:: or even KISS_PATH=:/repo1:/repo2, the `IFS=:; set -- $KISS_PATH` trick leaves some of $@ as empty strings. These cause git to print errors. Instead, skip empty arguments. Demonstration of bug: $ cd $ KISS_PATH=::: kiss u 2>&1 | sed '/Checking/q' -> Updating repositories fatal: not a git repository (or any of the parent directories): .git fatal: not a git repository (or any of the parent directories): .git fatal: not a git repository (or any of the parent directories): .git -> Checking for new package versions The git commands producing the errors are: git -C "" rev-parse 'HEAD@{upstream}' and when the argument to -C is empty, the current working directory is unchanged. Therefore, if PWD happens to be inside a git tree, this command could have unexpected effects: currently, if KISS_PATH contains (an) extra colon(s), and PWD is in a git repo with an upstream, the repo is updated irrespective of whether it is in KISS_PATH or a package repo. This behaviour is also fixed by this commit.
This commit is contained in:
parent
6887884127
commit
96bb00372c
1
kiss
1
kiss
@ -1577,6 +1577,7 @@ pkg_update() {
|
|||||||
|
|
||||||
# Update each repository in '$KISS_PATH'.
|
# Update each repository in '$KISS_PATH'.
|
||||||
for repo do
|
for repo do
|
||||||
|
ok "$repo" || continue
|
||||||
if git -C "$repo" rev-parse 'HEAD@{upstream}' >/dev/null; then
|
if git -C "$repo" rev-parse 'HEAD@{upstream}' >/dev/null; then
|
||||||
repo_type=git
|
repo_type=git
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user