phase1: fix gitcheckout with corrupted .git
authorPetr Štetiar <ynezz@true.cz>
Tue, 9 Feb 2021 21:21:15 +0000 (22:21 +0100)
committerPetr Štetiar <ynezz@true.cz>
Tue, 9 Feb 2021 21:21:15 +0000 (22:21 +0100)
When the container running `git clone` is killed it will leave the .git
directory in unusable state which then leads in the following errors:

 if [ -d .git ]; then git checkout -f master; git branch --set-upstream-to origin/master; else exit 0; fi
 error: pathspec 'master' did not match any file(s) known to git.
 fatal: branch 'master' does not exist

Fix it by removing .git completely if this happens, otherwise it might
simply leave shared build directory in the unusable state.

Signed-off-by: Petr Štetiar <ynezz@true.cz>
phase1/master.cfg

index 7186f5ae994aaa5e767eec892bd08ed3bc84b884..2cba85ee86850b53e1954fe709ea98e0190c2f2a 100644 (file)
@@ -710,7 +710,7 @@ for target in targets:
        factory.addStep(ShellCommand(
                name = "gitcheckout",
                description = "Ensure that Git HEAD is sane",
-               command = "if [ -d .git ]; then git checkout -f %s; git branch --set-upstream-to origin/%s; else exit 0; fi" %(repo_branch, repo_branch),
+               command = "if [ -d .git ]; then git checkout -f %s && git branch --set-upstream-to origin/%s || rm -fr .git; else exit 0; fi" %(repo_branch, repo_branch),
                haltOnFailure = True))
 
        # check out the source