git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] RFC: git-request-get maintainer receiving from git-request-pull
@ 2025-01-07 18:56 Matěj Cepl
  2025-01-07 19:37 ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Matěj Cepl @ 2025-01-07 18:56 UTC (permalink / raw)
  To: git; +Cc: Matěj Cepl

This should be fulfilment of my comment on the GitLab bug [1] from 2016-05-01:

> Well, the minimal solution would be a parser for the
> git-request-pull(1), which would check every comment and if recognized
> the comment as the pull request, it would add button for the owner of
> the repo (e.g., [Create Pull Request]). After pressing that (so it is
> constantly under the control of the owner repo), gitlab would setup
> new remote (if doesn't exist still), fetch it, and create a merge
> request.

In the end, the best UI I could come up with is to pull all
commits to the new review branch and send all of them via
git-send-email(1) to the review email list.

The script can either receive git-request-pull(1) output on
stdin, or it can be driven by the command line arguments with URL
and (optionally) branch names for all those “I have some commits
on SOMEWHERE, but I don’t want to fiddle with git-send-email(1)
just because of that.”

[1] https://gitlab.com/gitlab-org/gitlab/-/issues/14116
---

I would like to get these types of comments (before I finalize
a proper commit for git):

* whether the idea of the script makes sense at all (or
  suggestions on the UI improvement),
* a general code review
* advice how to proceed with testing before rewriting it into the
  proper git test harness: is there only way to add those ugly
  `if test -z "$DEBUG"` constructs everywhere, or there is some
  better way?

Thank you for any reply,

Matěj

 Makefile        |   8 +++
 git-request-get | 186 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 194 insertions(+)
 create mode 100644 Makefile
 create mode 100755 git-request-get

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..4d686f5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,8 @@
+export DEBUG := true
+export WANT_REMOTE := 1
+
+test:
+	./git-request-get < gitk-email.mbx 2>&1 | \
+	grep -e "ensure_remote: getting REMOTE = j6t and URL = https://github.com/j6t/gitk.git" \
+		-e "make_branch: getting BRANCH_NAME = mcepl-07012025 and HEAD = master" \
+		-e "main: DEST_ADDR= ~mcepl/git-test@lists.sr.ht, AUTHOR=Matěj Cepl <mcepl@cepl.eu>, BASE=c18400c6bb04f4e8875c1930db72ddd9b94649ca, HEAD=master"
diff --git a/git-request-get b/git-request-get
new file mode 100755
index 0000000..1f6edfa
--- /dev/null
+++ b/git-request-get
@@ -0,0 +1,186 @@
+#!/bin/sh
+# Requires: perl, sed, awk
+set -eux
+
+# Initialize internal variables
+DEBUG="${DEBUG:-}"
+WANT_REMOTE="${WANT_REMOTE:-"$(git config get --type int --default=0 git-request-get.wantRemote)"}"
+BASE=""
+HEAD=""
+DEST_ADDR=""
+
+usage() {
+    echo "usage: $(basename "$0") [-t ADDRTO] [-s] [-h] URL [HEAD] [BASE]" >&2
+    echo "Generate git-send-email messages from remote URL or from the email message"
+    echo "formatted by git-request-pull"
+    echo
+    echo "-t ADDRTO send emails to this email address"
+    exit 1
+}
+
+die() {
+    echo "$1" >&2
+    if test $# -gt 1
+    then
+        exit "$2"
+    else
+        exit 1
+    fi
+}
+
+log() {
+    echo "$1" >&2
+}
+
+parse_message() {
+    STR="$(perl -pe 'use MIME::QuotedPrint; $_=MIME::QuotedPrint::decode($_);')"
+    # Collect URL of the incoming repo
+    USTR="$(echo "$STR" | sed -n -e '/^are available in the Git repository at:/{n;n;p}')"
+    U="$(echo "$USTR" | awk '{print $1}')"
+
+    # Find the tip of the offered branch
+    # for you to fetch changes up to 102cd4d5c1818ecb5926dd538962f8b42c43b022:
+    B="$(echo "$STR" | awk '/^The following changes since commit / { print $NF }' | sed -e 's/[=:]*$//')"
+
+    E="$(echo "$USTR" | awk '{print $2}')"
+    if test -z "$E"
+    then
+        E="$(echo "$STR" | awk '/^for you to fetch changes up to / { print $NF }' | sed -e 's/[=:]*$//')"
+    fi
+    printf "%s^%s^%s" "$U" "$B" "$E"
+}
+
+ensure_remote () {
+    URL="$1"
+    REMSTR="$(git remote -v | awk -v url="$1" '(NR%2 == 1) && index($0, url) {print $1, $2}')"
+
+    if test -n "$REMSTR"
+    then
+        log "REMSTR found: ${REMSTR}\n"
+        REMOTE="$(echo "$REMSTR"|cut -d ' ' -f 1)"
+    else
+        # try to generate some good name for the remote
+        case "$URL" in
+        *github.com*|*gitlab.com*)
+            REMOTE="$(echo "$URL"|cut -d/ -f 4)"
+            ;;
+        *sr.ht*)
+            REMOTE="$(echo "$URL"|awk -F'[~/]' '{print $5}')"
+            ;;
+        *)
+            REMOTE="_4review"
+            ;;
+        esac
+        if test -z "$DEBUG"
+        then
+            git remote add "$REMOTE" "$URL"
+            git remote update "$REMOTE"
+        else
+            printf "ensure_remote: getting REMOTE = %s and URL = %s\n" "$REMOTE" "$URL" >&2
+        fi
+    fi
+
+    printf "%s" "$REMOTE"
+}
+
+#### main
+while getopts ":dht:" arg ; do
+    case $arg in
+        h)
+            usage
+            ;;
+        t)
+            DEST_ADDR="$OPTARG"
+            ;;
+        ?)
+            die "Invalid option: -${OPTARG}." 5
+            ;;
+    esac
+done
+
+shift $((OPTIND - 1))
+
+MASTER="master"
+if git rev-parse -q --verify main >/dev/null 2>&1
+then
+    MASTER="main"
+fi
+
+if test $# -lt 1
+then
+    PARSED_STR="$(parse_message)"
+    test -n "$PARSED_STR" || die "Not enough arguments and no message in stdin!" 2
+    URL="$(echo "$PARSED_STR"|cut -d '^' -f 1)"
+    BASE="$(echo "$PARSED_STR"|cut -d '^' -f 2)"
+    HEAD="$(echo "$PARSED_STR"|cut -d '^' -f 3)"
+# Ignore all command line arguments when stdin parsed
+else
+    if test $# -ge 1
+    then
+        URL="$1"
+    fi
+
+    if test -z "$URL"
+    then
+        die "Insufficient input: no parseable input or command line arguments." 3
+    fi
+
+    if test $# -ge 2
+    then
+        HEAD="$2"
+    else
+        HEAD="FETCH_HEAD"
+    fi
+
+    # find the base commit where PR roots in the default branch
+    if test $# -ge 3
+    then
+        BASE="$3"
+    fi
+fi
+
+if test "$WANT_REMOTE" -eq 1
+then
+    REMOTE="$(ensure_remote "$URL")"
+    if test -n "$HEAD" && ! git rev-parse -q --verify "$HEAD"
+    then
+        git rev-parse -q --verify "$REMOTE/$HEAD" || die "Cannot find $HEAD branch on the remote $REMOTE!" 4
+        HEAD="${REMOTE}/${HEAD}"
+    fi
+
+    BRANCH_NAME="$(git log --pretty="%aL" -1)-$(date '+%d%m%Y')"
+
+    if test -z "$DEBUG"
+    then
+        git branch "$BRANCH_NAME" "$HEAD"
+    else
+        printf "make_branch: getting BRANCH_NAME = %s and HEAD = %s\n" "$BRANCH_NAME" "$HEAD" >&2
+    fi
+else
+    git fetch "$URL"
+fi
+
+if test -z "$DEST_ADDR"
+then
+    DEST_ADDR="$(git config --default='' sendemail.to)"
+    test -z "$DEST_ADDR" && die "Unknown destination for the emails" 4
+fi
+
+test "$HEAD" = "FETCH_HEAD" && HEAD="$(git rev-parse -q --verify FETCH_HEAD)"
+
+ROOT="$(git merge-base "$MASTER" "$HEAD")"
+
+# commit is not part of our tree
+test "$ROOT" = "$HEAD" && die "Final commit cannot be included in our tree" 4
+
+test -z "$BASE" && BASE="$ROOT"
+
+test "$BASE" = "$HEAD" && die "No change observed" 1
+
+AUTHOR="$(git log --pretty="%an <%ae>" -1)"
+if test -z "$DEBUG"
+then
+    git send-email --to="$DEST_ADDR" --from="$AUTHOR" --no-annotate --no-cc --no-bcc --no-identity --quiet "${BASE}..${HEAD}"
+else
+    printf "main: DEST_ADDR= %s, AUTHOR=%s, BASE=%s, HEAD=%s\n" "$DEST_ADDR" "$AUTHOR" "$BASE" "$HEAD" 
+fi
-- 
2.47.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] RFC: git-request-get maintainer receiving from git-request-pull
  2025-01-07 18:56 [PATCH] RFC: git-request-get maintainer receiving from git-request-pull Matěj Cepl
@ 2025-01-07 19:37 ` Junio C Hamano
  2025-01-07 20:20   ` Matěj Cepl
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2025-01-07 19:37 UTC (permalink / raw)
  To: Matěj Cepl; +Cc: git

Matěj Cepl <mcepl@cepl.eu> writes:

> This should be fulfilment of my comment on the GitLab bug [1] from 2016-05-01:
>
>> Well, the minimal solution would be a parser for the
>> git-request-pull(1), which would check every comment and if recognized
>> the comment as the pull request, it would add button for the owner of
>> the repo (e.g., [Create Pull Request]). After pressing that (so it is
>> constantly under the control of the owner repo), gitlab would setup
>> new remote (if doesn't exist still), fetch it, and create a merge
>> request.
>
> In the end, the best UI I could come up with is to pull all
> commits to the new review branch and send all of them via
> git-send-email(1) to the review email list.
>
> The script can either receive git-request-pull(1) output on
> stdin, or it can be driven by the command line arguments with URL
> and (optionally) branch names for all those “I have some commits
> on SOMEWHERE, but I don’t want to fiddle with git-send-email(1)
> just because of that.”
>
> [1] https://gitlab.com/gitlab-org/gitlab/-/issues/14116
> ---
>
> I would like to get these types of comments (before I finalize
> a proper commit for git):
>
> * whether the idea of the script makes sense at all (or
>   suggestions on the UI improvement),

You'd have much better chance if you made the patch standalone,
instead of discouraging those who might be interested by forcing
them to first visit an external website for 8-year old "bug" that
may or may not be interesting to them.  From the above, I am not
sure if people can guess what problem is being solved, and without
knowing that, they cannot judge if script makes sense in the first
place.

> * a general code review

There are a handful of scripts written in Perl still in our
codebase; study the way how their sources are written (e.g., notice
that they all end with ".perl") and are made into executables by
Makefile rules, and mimick them.

> * advice how to proceed with testing before rewriting it into the
>   proper git test harness: is there only way to add those ugly
>   `if test -z "$DEBUG"` constructs everywhere, or there is some
>   better way?

Also send the e-mailed patch to yourself, and then run "git am" to
make sure it applies cleanly.  It seems the patch is creating a new
Makefile, but our project already has one, so I do not see how this
patch would apply.

Thanks for your interest in our project.

> Thank you for any reply,
>
> Matěj
>
>  Makefile        |   8 +++
>  git-request-get | 186 ++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 194 insertions(+)
>  create mode 100644 Makefile
>  create mode 100755 git-request-get
>
> diff --git a/Makefile b/Makefile
> new file mode 100644
> index 0000000..4d686f5
> --- /dev/null
> +++ b/Makefile
> @@ -0,0 +1,8 @@
> +export DEBUG := true
> +export WANT_REMOTE := 1
> +
> +test:
> +	./git-request-get < gitk-email.mbx 2>&1 | \
> +	grep -e "ensure_remote: getting REMOTE = j6t and URL = https://github.com/j6t/gitk.git" \
> +		-e "make_branch: getting BRANCH_NAME = mcepl-07012025 and HEAD = master" \
> +		-e "main: DEST_ADDR= ~mcepl/git-test@lists.sr.ht, AUTHOR=Matěj Cepl <mcepl@cepl.eu>, BASE=c18400c6bb04f4e8875c1930db72ddd9b94649ca, HEAD=master"
> diff --git a/git-request-get b/git-request-get
> new file mode 100755
> index 0000000..1f6edfa
> --- /dev/null
> +++ b/git-request-get
> @@ -0,0 +1,186 @@
> +#!/bin/sh
> +# Requires: perl, sed, awk
> +set -eux
> +
> +# Initialize internal variables
> +DEBUG="${DEBUG:-}"
> +WANT_REMOTE="${WANT_REMOTE:-"$(git config get --type int --default=0 git-request-get.wantRemote)"}"
> +BASE=""
> +HEAD=""
> +DEST_ADDR=""
> +
> +usage() {
> +    echo "usage: $(basename "$0") [-t ADDRTO] [-s] [-h] URL [HEAD] [BASE]" >&2
> +    echo "Generate git-send-email messages from remote URL or from the email message"
> +    echo "formatted by git-request-pull"
> +    echo
> +    echo "-t ADDRTO send emails to this email address"
> +    exit 1
> +}
> +
> +die() {
> +    echo "$1" >&2
> +    if test $# -gt 1
> +    then
> +        exit "$2"
> +    else
> +        exit 1
> +    fi
> +}
> +
> +log() {
> +    echo "$1" >&2
> +}
> +
> +parse_message() {
> +    STR="$(perl -pe 'use MIME::QuotedPrint; $_=MIME::QuotedPrint::decode($_);')"
> +    # Collect URL of the incoming repo
> +    USTR="$(echo "$STR" | sed -n -e '/^are available in the Git repository at:/{n;n;p}')"
> +    U="$(echo "$USTR" | awk '{print $1}')"
> +
> +    # Find the tip of the offered branch
> +    # for you to fetch changes up to 102cd4d5c1818ecb5926dd538962f8b42c43b022:
> +    B="$(echo "$STR" | awk '/^The following changes since commit / { print $NF }' | sed -e 's/[=:]*$//')"
> +
> +    E="$(echo "$USTR" | awk '{print $2}')"
> +    if test -z "$E"
> +    then
> +        E="$(echo "$STR" | awk '/^for you to fetch changes up to / { print $NF }' | sed -e 's/[=:]*$//')"
> +    fi
> +    printf "%s^%s^%s" "$U" "$B" "$E"
> +}
> +
> +ensure_remote () {
> +    URL="$1"
> +    REMSTR="$(git remote -v | awk -v url="$1" '(NR%2 == 1) && index($0, url) {print $1, $2}')"
> +
> +    if test -n "$REMSTR"
> +    then
> +        log "REMSTR found: ${REMSTR}\n"
> +        REMOTE="$(echo "$REMSTR"|cut -d ' ' -f 1)"
> +    else
> +        # try to generate some good name for the remote
> +        case "$URL" in
> +        *github.com*|*gitlab.com*)
> +            REMOTE="$(echo "$URL"|cut -d/ -f 4)"
> +            ;;
> +        *sr.ht*)
> +            REMOTE="$(echo "$URL"|awk -F'[~/]' '{print $5}')"
> +            ;;
> +        *)
> +            REMOTE="_4review"
> +            ;;
> +        esac
> +        if test -z "$DEBUG"
> +        then
> +            git remote add "$REMOTE" "$URL"
> +            git remote update "$REMOTE"
> +        else
> +            printf "ensure_remote: getting REMOTE = %s and URL = %s\n" "$REMOTE" "$URL" >&2
> +        fi
> +    fi
> +
> +    printf "%s" "$REMOTE"
> +}
> +
> +#### main
> +while getopts ":dht:" arg ; do
> +    case $arg in
> +        h)
> +            usage
> +            ;;
> +        t)
> +            DEST_ADDR="$OPTARG"
> +            ;;
> +        ?)
> +            die "Invalid option: -${OPTARG}." 5
> +            ;;
> +    esac
> +done
> +
> +shift $((OPTIND - 1))
> +
> +MASTER="master"
> +if git rev-parse -q --verify main >/dev/null 2>&1
> +then
> +    MASTER="main"
> +fi
> +
> +if test $# -lt 1
> +then
> +    PARSED_STR="$(parse_message)"
> +    test -n "$PARSED_STR" || die "Not enough arguments and no message in stdin!" 2
> +    URL="$(echo "$PARSED_STR"|cut -d '^' -f 1)"
> +    BASE="$(echo "$PARSED_STR"|cut -d '^' -f 2)"
> +    HEAD="$(echo "$PARSED_STR"|cut -d '^' -f 3)"
> +# Ignore all command line arguments when stdin parsed
> +else
> +    if test $# -ge 1
> +    then
> +        URL="$1"
> +    fi
> +
> +    if test -z "$URL"
> +    then
> +        die "Insufficient input: no parseable input or command line arguments." 3
> +    fi
> +
> +    if test $# -ge 2
> +    then
> +        HEAD="$2"
> +    else
> +        HEAD="FETCH_HEAD"
> +    fi
> +
> +    # find the base commit where PR roots in the default branch
> +    if test $# -ge 3
> +    then
> +        BASE="$3"
> +    fi
> +fi
> +
> +if test "$WANT_REMOTE" -eq 1
> +then
> +    REMOTE="$(ensure_remote "$URL")"
> +    if test -n "$HEAD" && ! git rev-parse -q --verify "$HEAD"
> +    then
> +        git rev-parse -q --verify "$REMOTE/$HEAD" || die "Cannot find $HEAD branch on the remote $REMOTE!" 4
> +        HEAD="${REMOTE}/${HEAD}"
> +    fi
> +
> +    BRANCH_NAME="$(git log --pretty="%aL" -1)-$(date '+%d%m%Y')"
> +
> +    if test -z "$DEBUG"
> +    then
> +        git branch "$BRANCH_NAME" "$HEAD"
> +    else
> +        printf "make_branch: getting BRANCH_NAME = %s and HEAD = %s\n" "$BRANCH_NAME" "$HEAD" >&2
> +    fi
> +else
> +    git fetch "$URL"
> +fi
> +
> +if test -z "$DEST_ADDR"
> +then
> +    DEST_ADDR="$(git config --default='' sendemail.to)"
> +    test -z "$DEST_ADDR" && die "Unknown destination for the emails" 4
> +fi
> +
> +test "$HEAD" = "FETCH_HEAD" && HEAD="$(git rev-parse -q --verify FETCH_HEAD)"
> +
> +ROOT="$(git merge-base "$MASTER" "$HEAD")"
> +
> +# commit is not part of our tree
> +test "$ROOT" = "$HEAD" && die "Final commit cannot be included in our tree" 4
> +
> +test -z "$BASE" && BASE="$ROOT"
> +
> +test "$BASE" = "$HEAD" && die "No change observed" 1
> +
> +AUTHOR="$(git log --pretty="%an <%ae>" -1)"
> +if test -z "$DEBUG"
> +then
> +    git send-email --to="$DEST_ADDR" --from="$AUTHOR" --no-annotate --no-cc --no-bcc --no-identity --quiet "${BASE}..${HEAD}"
> +else
> +    printf "main: DEST_ADDR= %s, AUTHOR=%s, BASE=%s, HEAD=%s\n" "$DEST_ADDR" "$AUTHOR" "$BASE" "$HEAD" 
> +fi

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] RFC: git-request-get maintainer receiving from git-request-pull
  2025-01-07 19:37 ` Junio C Hamano
@ 2025-01-07 20:20   ` Matěj Cepl
  2025-01-07 21:05     ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Matěj Cepl @ 2025-01-07 20:20 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git


[-- Attachment #1.1.1: Type: text/plain, Size: 984 bytes --]

On Tue Jan 7, 2025 at 8:37 PM CET, Junio C Hamano wrote:
> There are a handful of scripts written in Perl still in our
> codebase; study the way how their sources are written (e.g., notice
> that they all end with ".perl") and are made into executables by
> Makefile rules, and mimick them.

OK, no shell scripts any more. Got it. I will have to rewrite the
thing, and I will eventually try again.

> Also send the e-mailed patch to yourself, and then run "git am" to
> make sure it applies cleanly.  It seems the patch is creating a new
> Makefile, but our project already has one, so I do not see how this
> patch would apply.

OK, no RFCs any more, just submission-ready contributions. Got it.

See you later!

Matěj

-- 
http://matej.ceplovi.cz/blog/, @mcepl@en.osm.town
GPG Finger: 3C76 A027 CA45 AD70 98B5  BC1D 7920 5802 880B C9D8
 
Opportunity is missed by most people because it is dressed in
overalls and looks like work.
  -- Thomas A. Edison


[-- Attachment #1.2: E09FEF25D96484AC.asc --]
[-- Type: application/pgp-keys, Size: 3102 bytes --]

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
wwCdEnRlCGlvnO78R0FgKXlt3RyzGuE=
=sxoW
-----END PGP PUBLIC KEY BLOCK-----

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 216 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] RFC: git-request-get maintainer receiving from git-request-pull
  2025-01-07 20:20   ` Matěj Cepl
@ 2025-01-07 21:05     ` Junio C Hamano
  0 siblings, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2025-01-07 21:05 UTC (permalink / raw)
  To: Matěj Cepl; +Cc: git

Matěj Cepl <mcepl@cepl.eu> writes:

> On Tue Jan 7, 2025 at 8:37 PM CET, Junio C Hamano wrote:
>> There are a handful of scripts written in Perl still in our
>> codebase; study the way how their sources are written (e.g., notice
>> that they all end with ".perl") and are made into executables by
>> Makefile rules, and mimick them.
>
> OK, no shell scripts any more. Got it.

Sorry, no, we do have shell scripts.  The story is the same, though.
Look for SCRIPT_SH in the Makefile (instead of SCRIPT_PERL).  I
simply thought you had a perl script but what you had was a bash
script, I think.

> OK, no RFCs any more, just submission-ready contributions. Got it.

That is not what I meant, either.  [PATCH/RFC] is just fine.  But
make sure what you are sending can be applied cleanly by those who
receive to avoid wasting their time.

THanks.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-01-07 21:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-07 18:56 [PATCH] RFC: git-request-get maintainer receiving from git-request-pull Matěj Cepl
2025-01-07 19:37 ` Junio C Hamano
2025-01-07 20:20   ` Matěj Cepl
2025-01-07 21:05     ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).