def fetch_pool(repo_url, branch='<STR_LIT>', reuse_existing=False):
repo_name = get_repo_name(repo_url)<EOL>lib_dir = get_lib_dir()<EOL>pool_dir = get_pool_dir(repo_name)<EOL>print('<STR_LIT>' % repo_name)<EOL>if os.path.exists(pool_dir):<EOL><INDENT>if not reuse_existing:<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT><DEDENT>else:<EOL><INDENT>try:<EOL><INDENT>a = call(['<STR_LIT>', '<STR_LIT>', repo_url], cwd=lib_dir)<EOL><DEDENT>except OSError:<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT>if a != <NUM_LIT:0>:<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT><DEDENT>try:<EOL><INDENT>call(['<STR_LIT>', '<STR_LIT>', branch], cwd=pool_dir)<EOL><DEDENT>except OSError:<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT>print('<STR_LIT>')<EOL>return FeaturePool(pool_dir)<EOL>
Fetch a git repository from ``repo_url`` and returns a ``FeaturePool`` object.