xorpaul/g10k

retry with `main` as a default branch if `master` is not available

xorpaul opened this issue · 4 comments

puppetlabs/concat for example switched from master to main as the default branch:

https://github.com/puppetlabs/puppetlabs-concat

This means that the following Puppetfile entry now fails with g10k:

mod 'concat':
  :git => 'https://github.com/puppetlabs/puppetlabs-concat'

Would this example from the main page cover this issue?

try multiple Git branches for a Puppet module until one can be used

mod 'stdlib',
:git => 'https://github.com/puppetlabs/puppetlabs-stdlib.git',
:fallback => '4.889.x|foobar|master'

Obviously you'd do :fallback =>'master|main' (or just main if you're not using the link stuff and dealing with this on a branch)

Sure that would work, but then you still would have to modify each git module, which doesn't have a reference configured.

I'm currently looking into auto-detecting the correct HEAD branch for the each git repository.

Something like this:

/tmp/test/puppetlabs-vcsrepo.git(BARE:main) $ git --git-dir . remote show origin | grep "HEAD branch" | cut -d ":" -f 2
 main
git --git-dir . remote show origin

queries the remotes/Git server for the tracked branches and thus can slow down the g10k run with many git modules significantly and is not really necessary, because g10k did just update all git repositories before its trying to auto-detect the default branch.

git --git-dir . symbolic-ref HEAD

only reports the default branch of the currently checked out repository, which doesn't update if this default branches was changed. So this is not usable for g10k with older caches of the Puppetlabs modules.

This leaves me with:

git ls-remote --symref .

which also seems to be sufficiently fast enough:

$ time git ls-remote --symref /var/cache/g10k/modules/https-__github.com_puppetlabs_puppetlabs-vcsrepo.git | head -2
7e08de9823a54670493dc5afbf38bbfe179fd430        refs/heads/main
efcd9bfeedc41d76de622a884d5317b8e6a05dff        refs/heads/maint/main/release_checks_7_config

real    0m0.026s
user    0m0.012s
sys     0m0.008s

Check out https://github.com/xorpaul/g10k/releases/tag/v0.8.15

I suspect that you were using -puppetfile, which did not set the correct cache directories:
https://github.com/xorpaul/g10k/blob/master/g10k.go#L313-L314

and then failed to detect that it is not a control repository here:
https://github.com/xorpaul/g10k/blob/master/git.go#L104-L107