vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Put the reviewed commit in the Review header
59c0625b4227f14372f0a9802dabd8831152828d · Keenan Nemetz · 11d ago · parent 6db4cdbd
Put the reviewed commit in the Review header Drop the derived base tip and the duplicate head id from the target form and summary. The head commit now sits at the right of the Review heading like the View runs and View changes links.
server/web/request_view.go −10
| @@ -113,11 +113,6 @@ type requestSidebarView struct { | |||
| 113 | 113 | // is narrowed to the viewer's own namespace for a contributor. | |
| 114 | 114 | BaseOptions []branchOption | |
| 115 | 115 | HeadOptions []branchOption | |
| 116 | // BaseSHA is the current tip of the base branch, derived rather than stored. | ||
| 117 | // The request names a branch and an approval binds to that branch name plus the | ||
| 118 | // head commit, so the base can move without making an approval stale. The picker | ||
| 119 | // shows it as the current tip; it is not part of the record. | ||
| 120 | BaseSHA string | ||
| 121 | 116 | // CanMerge is the merge control: true only when the gate would accept the | |
| 122 | 117 | // landing now, so the button never offers something the handler would refuse. | |
| 123 | 118 | CanMerge bool | |
| @@ -209,14 +204,10 @@ func (w *Web) requestSidebar(r *http.Request, m *repo.Meta, req *metadata.Reques | |||
| 209 | 204 | approvable := req.Open() && canApproveRequest(acl, who, req.Author) && headRefNote != "branch moved" | |
| 210 | 205 | canRetarget := req.Open() && canTriage(acl, who, req.Author) | |
| 211 | 206 | var baseOptions, headOptions []branchOption | |
| 212 | var baseSHA string | ||
| 213 | 207 | if canRetarget { | |
| 214 | 208 | branches := branchNames(m) | |
| 215 | 209 | baseOptions = branchOptions(branches, req.Base) | |
| 216 | 210 | headOptions = branchOptions(headBranches(branches, acl, who), req.HeadRef) | |
| 217 | if tip, err := m.Git().RevParse("refs/heads/" + req.Base); err == nil { | ||
| 218 | baseSHA = tip | ||
| 219 | } | ||
| 220 | 211 | } | |
| 221 | 212 | // Preflight the landing rather than guessing from the approval count: the same | |
| 222 | 213 | // gate the handler calls is asked here, so the button and the write agree about | |
| @@ -253,7 +244,6 @@ func (w *Web) requestSidebar(r *http.Request, m *repo.Meta, req *metadata.Reques | |||
| 253 | 244 | Approvals: approvals, Checks: checks, Required: required, Current: current, | |
| 254 | 245 | CanApprove: approvable, CanClose: canClose, HeadRefNote: headRefNote, | |
| 255 | 246 | CanRetarget: canRetarget, BaseOptions: baseOptions, HeadOptions: headOptions, | |
| 256 | BaseSHA: baseSHA, | ||
| 257 | 247 | CanMerge: mergeable, MergeBlocked: mergeBlocked, | |
| 258 | 248 | CanDiscuss: w.canDiscuss(r, acl), | |
| 259 | 249 | ContributorCI: contributorCI, | |