Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Apr 2026 14:05:47 +0000
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 448ec129bcef - main - git-arc: Add a create-draft mode
Message-ID:  <69f0bebb.387d2.2325bf33@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=448ec129bcef6bf147b76956ec588e357a21d310

commit 448ec129bcef6bf147b76956ec588e357a21d310
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2026-04-28 14:02:58 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-04-28 14:02:58 +0000

    git-arc: Add a create-draft mode
    
    Make it possible to create a review without publishing it.  This should
    be useful when one wants to restrict the visibility of a review, as that
    cannot be done via the command line.  Note that a draft review is still
    publicly visible if one can guess the URL, but creating one does not
    result in email notifications to subscribers etc., nor does a draft
    appear in the creating user's activity log.
    
    Once a draft is ready, one can publish it via the web UI.
    
    Reviewed by:    jrm
    Differential Revision:  https://reviews.freebsd.org/D56664
---
 tools/tools/git/git-arc.1  | 10 ++++++++--
 tools/tools/git/git-arc.sh | 21 ++++++++++++++++-----
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/tools/tools/git/git-arc.1 b/tools/tools/git/git-arc.1
index 6dfec53a84ad..da5732fdba26 100644
--- a/tools/tools/git/git-arc.1
+++ b/tools/tools/git/git-arc.1
@@ -24,7 +24,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd February 10, 2026
+.Dd April 27, 2026
 .Dt GIT-ARC 1
 .Os
 .Sh NAME
@@ -33,7 +33,7 @@
 .Sh SYNOPSIS
 .Nm
 .Cm create
-.Op Fl l
+.Op Fl dl
 .Op Fl r Ar reviewer1 Ns Op Cm \&, Ns Ar reviewer2 ...
 .Op Fl s Ar subscriber1 Ns Op Cm \&, Ns Ar subscriber2 ...
 .Op Fl p Ar parent
@@ -95,6 +95,12 @@ The available verbs are:
 Create new Differential Revisions from the specified commits.
 Accepts options:
 .Bl -tag -width "-s subscriber"
+.It Fl d
+Create the diff as a draft.
+In this mode, notifications are not sent to reviewers and subscribers
+until the review is published via the web UI.
+The draft is still visible to anyone with the URL (or able to guess it),
+but the review's visibility settings can be modified before publishing.
 .It Fl l
 Before processing commit(s) display list of commits to be processed
 and wait for confirmation.
diff --git a/tools/tools/git/git-arc.sh b/tools/tools/git/git-arc.sh
index 23b855aef8af..395787df970c 100755
--- a/tools/tools/git/git-arc.sh
+++ b/tools/tools/git/git-arc.sh
@@ -234,7 +234,7 @@ commit2diff()
 
 create_one_review()
 {
-    local childphid commit doprompt msg parent parentphid reviewers
+    local childphid commit doprompt draft msg parent parentphid reviewers
     local subscribers
 
     commit=$1
@@ -242,11 +242,18 @@ create_one_review()
     subscribers=$3
     parent=$4
     doprompt=$5
+    draft=$6
 
     if [ "$doprompt" ] && ! show_and_prompt "$commit"; then
         return 1
     fi
 
+    if [ "$draft" -eq 1 ]; then
+        draft=--draft
+    else
+        unset draft
+    fi
+
     msg=$(xmktemp)
     git show -s --format='%B' "$commit" > "$msg"
     printf "\nTest Plan:\n" >> "$msg"
@@ -257,7 +264,7 @@ create_one_review()
 
     yes | EDITOR=true \
         arc diff --message-file "$msg" --never-apply-patches --create \
-        --allow-untracked $BROWSE --head "$commit" "${commit}~"
+        --allow-untracked $draft $BROWSE --head "$commit" "${commit}~"
     [ $? -eq 0 ] || err "could not create Phabricator diff"
 
     if [ -n "$parent" ]; then
@@ -351,7 +358,7 @@ build_commit_list()
 
 gitarc__create()
 {
-    local commit commits doprompt list o prev reviewers subscribers
+    local commit commits doprompt draft list o prev reviewers subscribers
 
     list=
     prev=""
@@ -359,8 +366,12 @@ gitarc__create()
         list=1
     fi
     doprompt=1
-    while getopts lp:r:s: o; do
+    draft=0
+    while getopts dlp:r:s: o; do
         case "$o" in
+        d)
+            draft=1
+            ;;
         l)
             list=1
             ;;
@@ -394,7 +405,7 @@ gitarc__create()
 
     for commit in ${commits}; do
         if create_one_review "$commit" "$reviewers" "$subscribers" "$prev" \
-            "$doprompt"; then
+            "$doprompt" "$draft"; then
             prev=$(commit2diff "$commit")
         else
             prev=""


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f0bebb.387d2.2325bf33>