refactor git checkout process

for better control and monitoring
see above - it would be far easier to always assume giving the function an AbstractLogger instance and just injecting a NullLogger explicitely when needed, imho