From b799d545f37f7123aaa1ee1d0ff3b61f1f3cc8c2 Mon Sep 17 00:00:00 2001 From: David Ostrovsky <david@ostrovsky.org> Date: Thu, 10 Apr 2014 18:58:08 -0400 Subject: [PATCH] Add review SSH command --- src/site/tickets_using.mkd | 51 +++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/site/tickets_using.mkd b/src/site/tickets_using.mkd index 228cf92..7d9e569 100644 --- a/src/site/tickets_using.mkd +++ b/src/site/tickets_using.mkd @@ -22,35 +22,40 @@ Any authenticated user who can clone your repository. + git clone https://server/r/repo.git + cd repo git checkout -b mytopic ...add a single commit... git push origin HEAD:refs/for/new - git branch --set-upstream-to={remote}/ticket/{id} + # read ticket id from server output + git branch --set-upstream-to=origin/ticket/{id} ### Creating the first Patchset for an Existing Ticket -If you have an existing ticket that does **not** yet have a proposed patchset you can push using the magic ref. +If you have an existing ticket that does **not** yet have a proposed patchset you can push using the ticket branch ref. *Who can create the first patchset for an existing ticket?* Any authenticated user who can clone your repository. - git checkout -b mytopic + git clone https://server/r/repo.git + cd repo + git checkout -b ticket/{id} ...add one or more commits... - git push origin HEAD:refs/for/{id} - git branch --set-upstream-to={remote}/ticket/{id} + git push --set-upstream origin ticket/{id} ### Safely adding commits to a Patchset for an Existing Ticket *Who can add commits to an existing patchset?* -1. The author of the ticket -2. The author of the initial patchset +1. The ticket author +2. The initial patchset author 3. The person set as *responsible* 4. Any user with write (RW) permissions to the repository - git checkout ticket/{id} + git fetch && git checkout ticket/{id} + git pull --ff-only ...add one or more commits... git push @@ -60,9 +65,32 @@ See the above rules for who can add commits to a patchset. You do **not** need rewind (RW+) to the repository to push a non-fast-forward patchset. Gitblit will detect the non-fast-forward update and create a new patchset ref. This preserves the previous patchset. - git checkout ticket/{id} + git fetch && git checkout ticket/{id} + git pull --ff-only ...amend, rebase, squash... git push origin HEAD:refs/for/{id} + +OR if you have RW+ permissions, then you can push using *-f* flag. + + git push -f + +### Updating your copy of a rewritten Patchset + +If a patchset has been rewritten you can no longer simply *pull* to update. Let's assume your checkout **does not** have any unshared commits - i.e. it represents the previous patchset. The simplest way to update your branch to the current patchset is to reset it. + + git fetch && git checkout ticket/{id} + git reset --hard origin/ticket/{id} + +If you **do** have unshared commits then you'll could make a new temporary branch and then cherry-pick your changes onto the rewritten patchset. + + git branch oldticket ticket/{id} + git fetch && git checkout ticket/{id} + git reset --hard origin/ticket/{id} + git cherry-pick <commitid1> <commitid2> + git branch -D oldticket + +Git is a very flexible tool, there are no doubt several other strategies you could use to resolve this situation. The above solution is just one way. + ### Ticket RefSpecs @@ -130,6 +158,7 @@ git checkout master git merge ticket-{id} git push origin master + git branch -d ticket-{id} ### Closing Tickets on Push with a Completely New Patchset @@ -154,6 +183,8 @@ - -1, needs improvement: please do not merge - -2, vetoed: patchset may not be merged -Only users with write (RW) permissions to the repository can give a +2 and -2 score. All other users are allowed to score +/-1. +Only users with write (RW) permissions to the repository can give a +2 and -2 score. All other users are allowed to score +/-1. If the repository is configured to *require approval* then then +2 score has an important meaning. The merge button will only be shown if there is at least one +2 score and no -2 scores. If there is a -2 score, the merge is blocked by the web ui. Users with RW permissions, however, can still manually merge and push the patchset to the integration branch; Gitblit does not enforce vetoed patchsets on push. + +#### Reviews and Updated or Rewritten Patchsets If the patchset is updated or rewritten, all former review scores are ignored; review scores apply to specific revisions of patchsets - they are not blanket approvals/disapprovals. -- Gitblit v1.9.1