def create(self):
if self.exists:<EOL><INDENT>logger.debug("<STR_LIT>",<EOL>self.friendly_name, format_path(self.local))<EOL>return False<EOL><DEDENT>else:<EOL><INDENT>timer = Timer()<EOL>if self.remote:<EOL><INDENT>logger.info("<STR_LIT>",<EOL>self.friendly_name, format_path(self.local), self.remote)<EOL><DEDENT>else:<EOL><INDENT>logger.info("<STR_LIT>",<EOL>self.friendly_name, format_path(self.local))<EOL><DEDENT>self.context.execute(*self.get_create_command())<EOL>logger.debug("<STR_LIT>",<EOL>timer, "<STR_LIT>" if self.remote else "<STR_LIT>",<EOL>self.friendly_name)<EOL>if self.remote:<EOL><INDENT>self.mark_updated()<EOL><DEDENT>self.update_context()<EOL>return True<EOL><DEDENT>
Create the local repository (if it doesn't already exist).

:returns: :data:`True` if the local repository was just created,
          :data:`False` if it already existed.

What :func:`create()` does depends on the situation:

- When :attr:`exists` is :data:`True` nothing is done.
- When the :attr:`local` repository doesn't exist but a :attr:`remote`
  repository location is given, a clone of the remote repository is
  created.
- When the :attr:`local` repository doesn't exist and no :attr:`remote`
  repository has been specified then a new local repository will be
  created.

When :func:`create()` is responsible for creating the :attr:`local`
repository it will make sure the :attr:`bare` option is respected.