mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-20 13:50:12 +01:00
vcs: don't fail when git remote set-head fails
There's valid use-cases for setups where set-head --auto fails. This happens when building an app from a gitlab CI checkout where no remote tracking branches are setup. This isn't really a fatal error. When a remote HEAD exists we'll continue setting it and if none exists and something requires this being set up later on (either a build script or fdroid checkupdates) then we'll fail later on with "origin/HEAD not being known to git". By not failing early we allow the majority of use-cases that don't need a remote HEAD to continue with just a warning. The setup in which this can be reproduced is as follows: (This is roughly what gitlab runner does when setting up a git checkout for CI) - mkdir test && cd test - git init - git remote add https://gitlab.com/Bubu/fdroidclassic.git - git fetch --all - git checkout db0d2a9a5d1d89101a344169013ac5d518185f31 - mkdir nested_repo && cd nested_repo - git clone .. . - git remote set-head origin --auto > error: Cannot determine remote HEAD
This commit is contained in:
parent
fce4721695
commit
d5311fff09
@ -994,12 +994,14 @@ class vcs_git(vcs):
|
||||
if p.returncode != 0:
|
||||
lines = p.output.splitlines()
|
||||
if 'Multiple remote HEAD branches' not in lines[0]:
|
||||
raise VCSException(_("Git remote set-head failed"), p.output)
|
||||
branch = lines[1].split(' ')[-1]
|
||||
p2 = FDroidPopen(['git', 'remote', 'set-head', 'origin', '--', branch],
|
||||
cwd=self.local, output=False)
|
||||
if p2.returncode != 0:
|
||||
raise VCSException(_("Git remote set-head failed"), p.output + '\n' + p2.output)
|
||||
logging.warning(_("Git remote set-head failed: \"%s\"") % p.output.strip())
|
||||
else:
|
||||
branch = lines[1].split(' ')[-1]
|
||||
p2 = FDroidPopen(['git', 'remote', 'set-head', 'origin', '--', branch],
|
||||
cwd=self.local, output=False)
|
||||
if p2.returncode != 0:
|
||||
logging.warning(_("Git remote set-head failed: \"%s\"")
|
||||
% p.output.strip() + '\n' + p2.output.strip())
|
||||
self.refreshed = True
|
||||
# origin/HEAD is the HEAD of the remote, e.g. the "default branch" on
|
||||
# a github repo. Most of the time this is the same as origin/master.
|
||||
|
Loading…
Reference in New Issue
Block a user