# Non-Interactive git cl upload This skill provides instructions for uploading CLs to Gerrit without interactive prompts. ## Core Workflows ### Discover Associated Issue To discover what (if any) issue (often referred to as a CL or Gerrit Change) is associated with the current branch: 1. Run `git cl issue`: ```bash git cl issue ``` This will print the issue number and URL if associated, or "No issue associated" otherwise. ### Handle Chained Branches When uploading a branch that is part of a chain of local branches, `git cl upload` may prompt to update all branches in the chain. **Note**: A branch based directly on `origin/main` is not considered part of a chain. **Action**: Ask the user if they want to upload the entire chain or only the current branch. Uploading the entire chain should be the default option presented to the user. #### Option 1: Upload Entire Chain (Default) If the user prefers to upload the entire chain: 1. Run `git cl upload` without cherry-pick flags. 2. When prompted to update branches, use `send_input` to send a newline (`\n`) to the task to confirm. #### Option 2: Upload Only Current Branch (Cherry-Pick Approach) If the user prefers to upload only the current branch: 1. Use the `--cherry-pick-stacked` (or `--cp`) flag: ```bash git cl upload --cherry-pick-stacked ``` This uploads only the current branch cherry-picked on its parent's last uploaded commit, avoiding interactive prompts for other branches. ### Avoid Editor Prompt To avoid the editor opening for the CL description: 1. Use `--commit-description=+` to use the local commit message: ```bash git cl upload --commit-description=+ ``` 2. Or use `-T` or `--skip-title` to use the most recent commit message as the title. ### Upload Incremental Updates When an issue is already associated with the branch (verify with `git cl issue`), and you want to upload an incremental update, **strongly prefer** using the `-m` flag. This is the most reliable way to avoid interactive prompts for descriptions. 1. Use the `-m` flag to specify a one-line description of the update: ```bash git cl upload -m "One-line description of the update" ``` This avoids opening the editor and adds the description as a message for the new patchset. ### Handle Presubmit Warnings Presubmit warnings will prompt for `y/N`. In an automated environment: 1. If you are confident, answer `y` using `send_input` tool if running in background. 2. Or fix the warnings before uploading (e.g., add issue numbers to TODOs). ## Recommended Commands ### For Incremental Updates (Issue Already Associated) ```bash git cl upload -d -m "One-line description of the update" ``` ### For Initial Upload or Chained Branches ```bash git cl upload --cherry-pick-stacked -d --commit-description=+ ``` *Note*: Drop `--cherry-pick-stacked` if the branch is not part of a chain. If presubmit warnings occur, be prepared to send `y` to stdin.