Check out the repo indicated by url.

	If dest_ctx is supplied, it should be a context manager
	to yield the target directory for the check out.

def repo_context(url, branch=None, quiet=True, dest_ctx=temp_dir):
	"""
	Check out the repo indicated by url.

	If dest_ctx is supplied, it should be a context manager
	to yield the target directory for the check out.
	"""
	exe = 'git' if 'git' in url else 'hg'
	with dest_ctx() as repo_dir:
		cmd = [exe, 'clone', url, repo_dir]
		if branch:
			cmd.extend(['--branch', branch])
		devnull = open(os.path.devnull, 'w')
		stdout = devnull if quiet else None
		subprocess.check_call(cmd, stdout=stdout)
		yield repo_dir