diff --git a/src/codegen/git/repo_operator/repo_operator.py b/src/codegen/git/repo_operator/repo_operator.py index 07f59b742..edee45a18 100644 --- a/src/codegen/git/repo_operator/repo_operator.py +++ b/src/codegen/git/repo_operator/repo_operator.py @@ -166,8 +166,14 @@ def git_cli(self) -> GitCLI: return git_cli @property - def head_commit(self) -> GitCommit: - return self.git_cli.head.commit + def head_commit(self) -> GitCommit | None: + try: + return self.git_cli.head.commit + except ValueError as e: + if (f"Reference at {self.git_cli.head.ref.path!r} does not exist") in str(e): + logger.info(f"Ref: {self.git_cli.head.ref.name} has no commits") + return None + raise @property def git_diff(self) -> str: diff --git a/src/codegen/sdk/core/codebase.py b/src/codegen/sdk/core/codebase.py index b46659cf5..6b4c103aa 100644 --- a/src/codegen/sdk/core/codebase.py +++ b/src/codegen/sdk/core/codebase.py @@ -898,6 +898,10 @@ def checkout( result = self._op.checkout_commit(commit_hash=commit) if result == CheckoutResult.SUCCESS: logger.info(f"Checked out {branch or commit}") + if self._op.head_commit is None: + logger.info(f"Ref: {self._op.git_cli.head.ref.name} has no commits") + return CheckoutResult.SUCCESS + self.sync_to_commit(self._op.head_commit) elif result == CheckoutResult.NOT_FOUND: logger.info(f"Could not find branch {branch or commit}") @@ -1435,6 +1439,7 @@ def from_string( with tempfile.TemporaryDirectory(prefix="codegen_") as tmp_dir: logger.info(f"Using directory: {tmp_dir}") + codebase = CodebaseFactory.get_codebase_from_files(repo_path=tmp_dir, files=files, programming_language=prog_lang) logger.info("Codebase initialization complete") return codebase