diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/tools/git/git-arc.1 | 19 | ||||
-rw-r--r-- | tools/tools/git/git-arc.sh | 37 |
2 files changed, 44 insertions, 12 deletions
diff --git a/tools/tools/git/git-arc.1 b/tools/tools/git/git-arc.1 index e449875c5043..5ada942d13a9 100644 --- a/tools/tools/git/git-arc.1 +++ b/tools/tools/git/git-arc.1 @@ -50,6 +50,7 @@ .Op Ar commit ... Ns | Ns Ar commit-range .Nm .Cm update +.Op Fl l .Op Fl m Ar message .Op Ar commit ... Ns | Ns Ar commit-range .Sh DESCRIPTION @@ -117,6 +118,11 @@ each revision. If an empty message is supplied via .Fl m , then no notes will be added when updating Differential Revisions. +.Pp +If +.Fl l +is used, display list of commits to be updated and wait for confirmation +of the list rather than prompting for each commit. .El .Sh CONFIGURATION These are manipulated by @@ -138,9 +144,9 @@ Defaults to false. Always use .Dq list mode .Pq Fl l -with create. -In this mode, the list of git revisions to create reviews for -is listed with a single prompt before creating reviews. +with create and update. +In this mode, the list of git revisions to use +is listed with a single prompt before creating or updating reviews. The diffs for individual commits are not shown. Defaults to false. .It Va arc.verbose @@ -227,6 +233,13 @@ List the status of reviews for all the commits in the branch .Bd -literal -offset indent $ git arc list main..feature .Ed +.Pp +Update reviews for all commits in the branch +.Dq feature +after rebasing: +.Bd -literal -offset indent +$ git arc update -lm "Rebase" main..feature +.Ed .Sh SEE ALSO .Xr build 7 , .Xr development 7 diff --git a/tools/tools/git/git-arc.sh b/tools/tools/git/git-arc.sh index 1c828f3194af..e8da1f1ed32a 100644 --- a/tools/tools/git/git-arc.sh +++ b/tools/tools/git/git-arc.sh @@ -53,7 +53,7 @@ Commands: list <commit>|<commit range> patch [-c] <diff1> [<diff2> ...] stage [-b branch] [<commit>|<commit range>] - update [-m message] [<commit>|<commit range>] + update [-l] [-m message] [<commit>|<commit range>] Description: Create or manage FreeBSD Phabricator reviews based on git commits. There @@ -100,11 +100,11 @@ Config Variables: arc.browse [bool] -- Try to open newly created reviews in a browser tab. Defaults to false. - arc.list [bool] -- Always use "list mode" (-l) with create. In this - mode, the list of git revisions to create reviews for - is listed with a single prompt before creating - reviews. The diffs for individual commits are not - shown. + arc.list [bool] -- Always use "list mode" (-l) with create and update. + In this mode, the list of git revisions to use + is listed with a single prompt before creating or + updating reviews. The diffs for individual commits + are not shown. arc.verbose [bool] -- Verbose output. Equivalent to the -v flag. @@ -669,10 +669,18 @@ gitarc__stage() gitarc__update() { - local commit commits diff have_msg msg + local commit commits diff doprompt have_msg list o msg - while getopts m: o; do + list= + if [ "$(git config --bool --get arc.list 2>/dev/null || echo false)" != "false" ]; then + list=1 + fi + doprompt=1 + while getopts lm: o; do case "$o" in + l) + list=1 + ;; m) msg="$OPTARG" have_msg=1 @@ -685,10 +693,21 @@ gitarc__update() shift $((OPTIND-1)) commits=$(build_commit_list "$@") + + if [ "$list" ]; then + for commit in ${commits}; do + git --no-pager show --oneline --no-patch "$commit" + done | git_pager + if ! prompt; then + return + fi + doprompt= + fi + for commit in ${commits}; do diff=$(commit2diff "$commit") - if ! show_and_prompt "$commit"; then + if [ "$doprompt" ] && ! show_and_prompt "$commit"; then break fi |