@@ -898,6 +898,10 @@ def checkout(
898898 result = self ._op .checkout_commit (commit_hash = commit )
899899 if result == CheckoutResult .SUCCESS :
900900 logger .info (f"Checked out { branch or commit } " )
901+ if self ._op .head_commit is None :
902+ logger .info ("No commit exists in the repository yet" )
903+ return CheckoutResult .SUCCESS
904+
901905 self .sync_to_commit (self ._op .head_commit )
902906 elif result == CheckoutResult .NOT_FOUND :
903907 logger .info (f"Could not find branch { branch or commit } " )
@@ -1382,13 +1386,25 @@ def from_repo(
13821386
13831387 # Initialize and return codebase with proper context
13841388 logger .info ("Initializing Codebase..." )
1385- project = ProjectConfig .from_repo_operator (
1386- repo_operator = repo_operator ,
1387- programming_language = ProgrammingLanguage (language .upper ()) if language else None ,
1388- )
1389- codebase = Codebase (projects = [project ], config = config , secrets = secrets )
1390- logger .info ("Codebase initialization complete" )
1391- return codebase
1389+ try :
1390+ project = ProjectConfig .from_repo_operator (
1391+ repo_operator = repo_operator ,
1392+ programming_language = ProgrammingLanguage (language .upper ()) if language else None ,
1393+ )
1394+ codebase = Codebase (projects = [project ], config = config , secrets = secrets )
1395+ logger .info ("Codebase initialization complete" )
1396+ return codebase
1397+ except ValueError as e :
1398+ if "Reference at 'refs/heads/main' does not exist" in str (e ):
1399+ logger .warning ("Repository appears to be empty (no main branch). Creating empty codebase." )
1400+ project = ProjectConfig (
1401+ repo_operator = repo_operator ,
1402+ programming_language = ProgrammingLanguage (language .upper ()) if language else None ,
1403+ )
1404+ codebase = Codebase (projects = [project ], config = config , secrets = secrets )
1405+ logger .info ("Empty codebase initialization complete" )
1406+ return codebase
1407+ raise
13921408 except Exception as e :
13931409 logger .exception (f"Failed to initialize codebase: { e } " )
13941410 raise
@@ -1435,6 +1451,12 @@ def from_string(
14351451
14361452 with tempfile .TemporaryDirectory (prefix = "codegen_" ) as tmp_dir :
14371453 logger .info (f"Using directory: { tmp_dir } " )
1454+
1455+ # Initialize git repo to avoid "not in a git repository" error
1456+ import subprocess
1457+
1458+ subprocess .run (["git" , "init" ], cwd = tmp_dir , check = True , capture_output = True )
1459+
14381460 codebase = CodebaseFactory .get_codebase_from_files (repo_path = tmp_dir , files = files , programming_language = prog_lang )
14391461 logger .info ("Codebase initialization complete" )
14401462 return codebase
0 commit comments