Loading lib/galaxy/config/sample/tool_shed.yml.sample +4 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,10 @@ tool_shed: # installation directory. #hgweb_config_dir: null # Default URL prefix for repositories served via hgweb. If running an # external hgweb server you should set this to an empty string. #hgweb_repo_prefix: repos/ # Allow pushing directly to mercurial repositories directly and # without authentication. #config_hg_for_dev: null Loading lib/galaxy/config/schemas/tool_shed_config_schema.yml +8 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,14 @@ mapping: Where the hgweb.config file is stored. The default is the Galaxy installation directory. hgweb_repo_prefix: type: str required: false default: repos/ desc: | Default URL prefix for repositories served via hgweb. If running an external hgweb server you should set this to an empty string. config_hg_for_dev: type: str required: false Loading lib/tool_shed/util/hgweb_config.py +5 −6 Original line number Diff line number Diff line Loading @@ -19,11 +19,11 @@ class HgWebConfigManager: def __init__(self): self.hgweb_config_dir = None self.in_memory_config = None self.lock = threading.Lock() def add_entry(self, lhs, rhs): """Add an entry in the hgweb.config file for a new repository.""" lock = threading.Lock() lock.acquire(True) self.lock.acquire(True) try: # Since we're changing the config, make sure the latest is loaded into memory. self.read_config(force_read=True) Loading @@ -38,12 +38,11 @@ class HgWebConfigManager: except Exception as e: log.debug("Exception in HgWebConfigManager.add_entry(): %s", unicodify(e)) finally: lock.release() self.lock.release() def change_entry(self, old_lhs, new_lhs, new_rhs): """Change an entry in the hgweb.config file for a repository - this only happens when the owner changes the name of the repository.""" lock = threading.Lock() lock.acquire(True) self.lock.acquire(True) try: self.make_backup() # Remove the old entry. Loading @@ -55,7 +54,7 @@ class HgWebConfigManager: except Exception as e: log.debug("Exception in HgWebConfigManager.change_entry(): %s", unicodify(e)) finally: lock.release() self.lock.release() def get_entry(self, lhs): """Return an entry in the hgweb.config file for a repository""" Loading lib/tool_shed/util/repository_util.py +1 −1 Original line number Diff line number Diff line Loading @@ -228,7 +228,7 @@ def create_repository( # Create the local repository. init_repository(repo_path=repository_path) # Add an entry in the hgweb.config file for the local repository. lhs = f"repos/{repository.user.username}/{repository.name}" lhs = f"{app.config.hgweb_repo_prefix}{repository.user.username}/{repository.name}" app.hgweb_config_manager.add_entry(lhs, repository_path) # Create a .hg/hgrc file for the local repository. create_hgrc_file(app, repository) Loading Loading
lib/galaxy/config/sample/tool_shed.yml.sample +4 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,10 @@ tool_shed: # installation directory. #hgweb_config_dir: null # Default URL prefix for repositories served via hgweb. If running an # external hgweb server you should set this to an empty string. #hgweb_repo_prefix: repos/ # Allow pushing directly to mercurial repositories directly and # without authentication. #config_hg_for_dev: null Loading
lib/galaxy/config/schemas/tool_shed_config_schema.yml +8 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,14 @@ mapping: Where the hgweb.config file is stored. The default is the Galaxy installation directory. hgweb_repo_prefix: type: str required: false default: repos/ desc: | Default URL prefix for repositories served via hgweb. If running an external hgweb server you should set this to an empty string. config_hg_for_dev: type: str required: false Loading
lib/tool_shed/util/hgweb_config.py +5 −6 Original line number Diff line number Diff line Loading @@ -19,11 +19,11 @@ class HgWebConfigManager: def __init__(self): self.hgweb_config_dir = None self.in_memory_config = None self.lock = threading.Lock() def add_entry(self, lhs, rhs): """Add an entry in the hgweb.config file for a new repository.""" lock = threading.Lock() lock.acquire(True) self.lock.acquire(True) try: # Since we're changing the config, make sure the latest is loaded into memory. self.read_config(force_read=True) Loading @@ -38,12 +38,11 @@ class HgWebConfigManager: except Exception as e: log.debug("Exception in HgWebConfigManager.add_entry(): %s", unicodify(e)) finally: lock.release() self.lock.release() def change_entry(self, old_lhs, new_lhs, new_rhs): """Change an entry in the hgweb.config file for a repository - this only happens when the owner changes the name of the repository.""" lock = threading.Lock() lock.acquire(True) self.lock.acquire(True) try: self.make_backup() # Remove the old entry. Loading @@ -55,7 +54,7 @@ class HgWebConfigManager: except Exception as e: log.debug("Exception in HgWebConfigManager.change_entry(): %s", unicodify(e)) finally: lock.release() self.lock.release() def get_entry(self, lhs): """Return an entry in the hgweb.config file for a repository""" Loading
lib/tool_shed/util/repository_util.py +1 −1 Original line number Diff line number Diff line Loading @@ -228,7 +228,7 @@ def create_repository( # Create the local repository. init_repository(repo_path=repository_path) # Add an entry in the hgweb.config file for the local repository. lhs = f"repos/{repository.user.username}/{repository.name}" lhs = f"{app.config.hgweb_repo_prefix}{repository.user.username}/{repository.name}" app.hgweb_config_manager.add_entry(lhs, repository_path) # Create a .hg/hgrc file for the local repository. create_hgrc_file(app, repository) Loading