feat: add base_branch input to specify source branch for new Claude branches

- Add base_branch input parameter to action.yml allowing users to specify which branch to use as source
- Update setupBranch function to accept and use the base branch parameter  
- Defaults to repository default branch if no base branch is specified
- Addresses issue #62 for better branch control

Co-authored-by: ashwin-ant <ashwin-ant@users.noreply.github.com>
This commit is contained in:
claude[bot]
2025-05-27 19:23:38 +00:00
committed by GitHub
parent 253f2c6796
commit db6d3621d7
3 changed files with 15 additions and 6 deletions

View File

@@ -62,7 +62,8 @@ async function run() {
});
// Step 8: Setup branch
const branchInfo = await setupBranch(octokit, githubData, context);
const baseBranch = process.env.BASE_BRANCH;
const branchInfo = await setupBranch(octokit, githubData, context, baseBranch);
// Step 9: Update initial comment with branch link (only for issues that created a new branch)
if (branchInfo.claudeBranch) {

View File

@@ -23,6 +23,7 @@ export async function setupBranch(
octokits: Octokits,
githubData: FetchDataResult,
context: ParsedGitHubContext,
baseBranch?: string,
): Promise<BranchInfo> {
const { owner, repo } = context.repository;
const entityNumber = context.entityNumber;
@@ -34,6 +35,9 @@ export async function setupBranch(
repo,
});
const defaultBranch = repoResponse.data.default_branch;
// Use the provided base branch or fall back to default branch
const sourceBranch = baseBranch || defaultBranch;
if (isPR) {
const prData = githubData.contextData as GitHubPullRequest;
@@ -67,7 +71,7 @@ export async function setupBranch(
// Creating a new branch for either an issue or closed/merged PR
const entityType = isPR ? "pr" : "issue";
console.log(`Creating new branch for ${entityType} #${entityNumber}...`);
console.log(`Creating new branch for ${entityType} #${entityNumber} from source branch: ${sourceBranch}...`);
const timestamp = new Date()
.toISOString()
@@ -79,14 +83,14 @@ export async function setupBranch(
const newBranch = `claude/${entityType}-${entityNumber}-${timestamp}`;
try {
// Get the SHA of the default branch
const defaultBranchRef = await octokits.rest.git.getRef({
// Get the SHA of the source branch
const sourceBranchRef = await octokits.rest.git.getRef({
owner,
repo,
ref: `heads/${defaultBranch}`,
ref: `heads/${sourceBranch}`,
});
const currentSHA = defaultBranchRef.data.object.sha;
const currentSHA = sourceBranchRef.data.object.sha;
console.log(`Current SHA: ${currentSHA}`);