Feat/azure devops pr - #555
Conversation
agavra
left a comment
There was a problem hiding this comment.
I looked at all the non-azure related code and it LGTM! We just merged bitbucket support so we need to apply the merge conflicts. There's a lot bit they're quite simple.
I can't test the azure related stuff, so if it works for you then I'm happy with it.
I'll merge after that.
|
I'll take a look in the morning, thanks. |
Review Azure DevOps Git PRs like GitHub PRs and GitLab MRs: open a PR, read its diff, comment inline, pull down existing threads, and push the review back. - New src/forge/azure/ backend implementing ForgeBackend. Transport is pluggable: a Personal Access Token (AZURE_DEVOPS_EXT_PAT) drives the REST API directly over HTTPS (preferred - works with enterprise tenants where the Azure DevOps AAD app isn't provisioned), falling back to `az rest` (az login) when no PAT is set. - Diffs come from the local clone (git diff base...head), since Azure exposes no unified-diff endpoint - mirrors GitLab's range-diff path. - Fetches/renders existing comment threads (inline + PR-level), dropping Azure's system threads; submits inline comments as threads and maps Approve/Request-changes to reviewer votes (+10/-10). - Wires ForgeKind::AzureDevOps through the backend factory, slug (az:), remote detection, PR-target parser chain, and --repo-url. - Generalizes the PR-slug parser to accept multi-segment owners (Azure org/project; also fixes GitLab subgroups). - Docs: docs/AZURE.md + README section. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- spawn_pr_open resolves the local checkout before the background fetch thread, so opening an Azure PR from the Pull Requests tab can source its diff from the local clone (previously errored "needs a local clone"). - Fix connectionData: call it without api-version (Azure rejects 7.1 as "under preview"), unblocking the Approve/Request-changes reviewer vote. - list_pull_requests honors the ReviewRequested scope via searchCriteria.reviewerId, so the all/requested toggle filters. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
rustfmt reflow of the Azure backend/models; no behavior change. `cargo fmt --all --check` now passes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
68f8778 to
1ec6bba
Compare
|
Rebased to main, resolved conflicts, and tested local build as working. |
|
Wow big fan of Tuicr, but also big user of Azure DevOps, so I'm happy to give it a try as soon as is ready! Thanks a lot for the work here! |
|
@agavra @jresnick3 Seems good to me. Found an unrelated bug while testing, and opened an issue/draft pr separate from this branch. Have a great weekend. |
Feel free to pull the branch and build to give it a test whirl. Been using it all week. Have a great weekend. |
|
I didn't do more than skim through the code but I've been using it for a few days and seems great so far! |
I think this project is super cool. My day to day is tied to AzureDevops, so I had the robit help me extend this for AzureDevops. I compiled and tested/am using this from a local build. Figured I share with others.
Full caveat, I have no Rust experience before this and relied heavily on the robit to incrementally make the code work.