docs: def _fullClone(self, shallowClone=False):
          """Perform full clone and checkout to the revision if specified
             In the case of shallow clones if any of the step fail abort whole build step.
          """
          res = yield self._clone(shallowClone)
          if res != RC_SUCCESS:
              return res
  
          # If revision specified checkout that revision
          if self.revision:
              res = yield self._dovccmd(['reset', '--hard',
                                         self.revision, '--'],
                                        shallowClone)
          # init and update submodules, recursively. If there's not recursion
          # it will not do it.
          if self.submodules:
              res = yield self._dovccmd(['submodule', 'update',
                                         '--init', '--recursive'],
                                        shallowClone)
  
          return res