Many workflows require Git operations. Codegen provides a high-level API for common Git operations through the Codebase class, including:
Committing Changes to Git
You can commit changes to Git using the Codebase.git_commit(…):
# Make some changes and call `commit()` to sync them to disk
codebase.functions[0].rename('foo')
codebase.commit()
# Commit all staged changes to git with a message
commit = codebase.git_commit("feat: update function signatures")
# You can also verify the commit (runs pre-commit hooks)
commit = codebase.git_commit("feat: update signatures", verify=True)
# The method returns the commit object if changes were committed, None otherwise
if commit:
print(f"Created commit: {commit.hexsha}")
Checking Current Git State
Codegen provides properties to check the current Git state:
# Get the default branch (e.g. 'main' or 'master')
default = codebase.default_branch
print(f"Default branch: {default}")
# Get the current commit
current = codebase.current_commit
if current:
print(f"Current commit: {current.hexsha}")
Checking Out Branches and Commits
The Codebase.checkout(…) method allows you to switch between branches and commits.
This will automatically re-parse the codebase to reflect the new state.
# Checkout a branch
result = codebase.checkout(branch="feature/new-api")
# Create a new branch if it doesn't exist
result = codebase.checkout(branch="feature/new-api", create_if_missing=True)
# Checkout a specific commit
result = codebase.checkout(commit="abc123")
# Checkout and pull from remote
result = codebase.checkout(branch="main", remote=True)