docs: def capture(self, commit = ""):
  		"""Capture the current state of a project based on its provider
  
  		Commit is relevant only for upstream providers.
  		If empty, the latest commit from provider repository is taken.
  		It is ignored for distribution providers.
  
  		:param provider: project provider, e.g. upstream repository, distribution builder
  		:type  provider: json/dict
  		:param commit: project's original commit
  		:type  commit: string
  		"""
  		self._validateProvider(self._provider)
  
  		# get client for repository
  		# TODO(jchaloup): read config file to switch between local and remove clients
  		# TODO(jchaloup): remote client can cover gofed infratructure or any remove source for repository info
  		client = RepositoryClientBuilder().buildWithRemoteClient(self._provider)
  
  		if self._provider["provider"] == "github":
  			self._signature = ProjectGithubRepositoryCapturer(self._provider, client).capture(commit).signature()
  		elif self._provider["provider"] == "bitbucket":
  			self._signature = ProjectBitbucketRepositoryCapturer(self._provider, client).capture(commit).signature()
  		else:
  			raise KeyError("Provider '%s' not recognized" % self._provider["provider"])
  
  		return self