diff --git a/neurons/miner.py b/neurons/miner.py index 2706e9e..02591b2 100644 --- a/neurons/miner.py +++ b/neurons/miner.py @@ -119,7 +119,7 @@ async def forward( self.logger.info(f"Using {jobs_dir.absolute()} as the directory for code repositories") self.logger.info(f"Cloning repo {repo}...") - local_repo_dir = clone_repo(author_name, repo_name, current_dir.parent, logger=self.logger) + local_repo_dir = clone_repo(author_name, repo_name, current_dir.parent, logger=self.logger, base_commit=synapse.base_commit) self.logger.info(f"Finished cloning repo {repo}") if repo not in SUPPORTED_REPOS: diff --git a/ridges/helpers/helpers.py b/ridges/helpers/helpers.py index 6708368..af0234b 100644 --- a/ridges/helpers/helpers.py +++ b/ridges/helpers/helpers.py @@ -8,7 +8,7 @@ from logging import Logger -def clone_repo(author_name: str, repo_name: str, base_path: Path, logger: Logger) -> Path: +def clone_repo(author_name: str, repo_name: str, base_path: Path, logger: Logger, base_commit: str = None) -> Path: """ Clone a GitHub repository to a specified directory under 'repos' and return the path. @@ -26,11 +26,14 @@ def clone_repo(author_name: str, repo_name: str, base_path: Path, logger: Logger shutil.rmtree(clone_to_path) logger.debug(f"Directory {clone_to_path} has been removed.") - Repo.clone_from(f"https://github.com/{author_name}/{repo_name}.git", clone_to_path) + repo = Repo.clone_from(f"https://github.com/{author_name}/{repo_name}.git", clone_to_path) logger.debug(f"Repository cloned to {clone_to_path}") + if base_commit: + repo.git.checkout(base_commit) + logger.debug(f"Checked out base commit {base_commit}") return clone_to_path - except Exception: - logger.exception(f"Failed to clone repository") + except Exception as e: + logger.exception(f"Failed to clone repository: {e}") raise diff --git a/ridges/protocol.py b/ridges/protocol.py index 73c0418..641d8c1 100644 --- a/ridges/protocol.py +++ b/ridges/protocol.py @@ -33,6 +33,7 @@ class CodingTask(bt.Synapse): ########################## Payload definition ############################## repo: str # Format: / + base_commit: Optional[str] = None # The base commit to use for the benchmark # The issue description problem_statement: str