original_docstring: 
          Checkout the configured branch/tag. We catch an "Exception" class here
          instead of a specific exception class because the exceptions raised by
          GitPython when running these functions vary in different versions of
          GitPython.
          
docstring: Checkout the configured branch/tag. We catch an "Exception" class here
  instead of a specific exception class because the exceptions raised by
  GitPython when running these functions vary in different versions of
  GitPython.
docstring_tokens: Checkout the configured branch / tag . We catch an " Exception " class here instead of a specific exception class because the exceptions raised by GitPython when running these functions vary in different versions of GitPython .
code: def checkout(self):
          '''
          Checkout the configured branch/tag. We catch an "Exception" class here
          instead of a specific exception class because the exceptions raised by
          GitPython when running these functions vary in different versions of
          GitPython.
          '''
          tgt_ref = self.get_checkout_target()
          try:
              head_sha = self.repo.rev_parse('HEAD').hexsha
          except Exception:
              # Should only happen the first time we are checking out, since
              # we fetch first before ever checking anything out.
              head_sha = None
  
          # 'origin/' + tgt_ref ==> matches a branch head
          # 'tags/' + tgt_ref + '@{commit}' ==> matches tag's commit
          for rev_parse_target, checkout_ref in (
                  ('origin/' + tgt_ref, 'origin/' + tgt_ref),
                  ('tags/' + tgt_ref, 'tags/' + tgt_ref)):
              try:
                  target_sha = self.repo.rev_parse(rev_parse_target).hexsha
              except Exception:
                  # ref does not exist
                  continue
              else:
                  if head_sha == target_sha:
                      # No need to checkout, we're already up-to-date
                      return self.check_root()
  
              try:
                  with self.gen_lock(lock_type='checkout'):
                      self.repo.git.checkout(checkout_ref)
                      log.debug(
                          '%s remote \'%s\' has been checked out to %s',
                          self.role,
                          self.id,
                          checkout_ref
                      )
              except GitLockError as exc:
                  if exc.errno == errno.EEXIST:
                      # Re-raise with a different strerror containing a
                      # more meaningful error message for the calling
                      # function.
                      raise GitLockError(
                          exc.errno,
                          'Checkout lock exists for {0} remote \'{1}\''
                          .format(self.role, self.id)
                      )
                  else:
                      log.error(
                          'Error %d encountered obtaining checkout lock '
                          'for %s remote \'%s\'',
                          exc.errno,
                          self.role,
                          self.id
                      )
                      return None
              except Exception:
                  continue
              return self.check_root()
          log.error(
              'Failed to checkout %s from %s remote \'%s\': remote ref does '
              'not exist', tgt_ref, self.role, self.id
          )
          return None
code_tokens: def checkout ( self ) : tgt_ref = self . get_checkout_target ( ) try : head_sha = self . repo . rev_parse ( 'HEAD' ) . hexsha except Exception : head_sha = None for rev_parse_target , checkout_ref in ( ( 'origin/' + tgt_ref , 'origin/' + tgt_ref ) , ( 'tags/' + tgt_ref , 'tags/' + tgt_ref ) ) : try : target_sha = self . repo . rev_parse ( rev_parse_target ) . hexsha except Exception : continue else : if head_sha == target_sha : return self . check_root ( ) try : with self . gen_lock ( lock_type = 'checkout' ) : self . repo . git . checkout ( checkout_ref ) log . debug ( '%s remote \'%s\' has been checked out to %s' , self . role , self . id , checkout_ref ) except GitLockError as exc : if exc . errno == errno . EEXIST : raise GitLockError ( exc . errno , 'Checkout lock exists for {0} remote \'{1}\'' . format ( self . role , self . id ) ) else : log . error ( 'Error %d encountered obtaining checkout lock ' 'for %s remote \'%s\'' , exc . errno , self . role , self . id ) return None except Exception : continue return self . check_root ( ) log . error ( 'Failed to checkout %s from %s remote \'%s\': remote ref does ' 'not exist' , tgt_ref , self . role , self . id ) return None
short_docstring: Checkout the configured branch/tag.
short_docstring_tokens: Checkout the configured branch / tag .
comment: '''
          Checkout the configured branch/tag. We catch an "Exception" class here
          instead of a specific exception class because the exceptions raised by
          GitPython when running these functions vary in different versions of
          GitPython.
          '''$SEP$# Should only happen the first time we are checking out, since$SEP$# we fetch first before ever checking anything out.$SEP$# 'origin/' + tgt_ref ==> matches a branch head$SEP$# 'tags/' + tgt_ref + '@{commit}' ==> matches tag's commit$SEP$# ref does not exist$SEP$# No need to checkout, we're already up-to-date$SEP$# Re-raise with a different strerror containing a$SEP$# more meaningful error message for the calling$SEP$# function.