From: Eric Wong <e@yhbt.net>
To: meta@public-inbox.org
Subject: Re: Minimalist public-inbox feed: sendmail-pi-feed
Date: Thu, 23 Jan 2020 23:02:58 +0000 [thread overview]
Message-ID: <20200123230258.GA13632@dcvr> (raw)
In-Reply-To: <20200121222924.ioz5ve2sg65zcuoy@chatter.i7.local>
Konstantin Ryabitsev <konstantin@linuxfoundation.org> wrote:
> Hi, all:
>
> I was trying to create a "simplest possible" way to maintain a
> public-inbox developer feed, and this is the end-result:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/mricon/korg-helpers.git/tree/sendmail-pi-feed
>
> It's written to be used with git-send-email, but can, theoretically, be
> used with any tool that accepts custom sendmail command paths (e.g.
> mutt) -- though if used in that capacity, it needs more features to make
> sure that private mail is not added to the feed. For example, there can
> be an "allowlist" of addresses to match against "to" or "cc".
>
> At the moment, this is more of a proof of concept and I wanted to share
> it with you all for early comments. The main goal was to avoid
> introducing too many dependencies, such as perl and its many cpan
> modules, while producing valid public-inbox feeds -- so this script is
> literally 50 lines of bash. :)
Cool. Though it's doable with POSIX sh :) I seem to remember
Ubuntu not installing bash by default, and I know git itself
hasn't require it since 2006 or so.
> From the readme section:
>
> [sendemail "sendmail-pi-feed"]
> # the directory where to put the feed (will be created with --init)
> inboxdir = /path/to/toplevel/public-inbox-dir
> # if not set, the epoch will be 0, which is strongly suggested;
> # if you increment it for some reason, make sure you don't skip
> # numbers
> epoch = 0
<snip>
> If you would like to auto-push the feed, you can add an appropriate
> post-commit hook.
> ----
>
> Thoughts?
It could be confusing with "inboxdir" meaning slightly different
things between public-inbox itself and sendmail-pi-feed.
Perhaps start with:
diff --git a/sendmail-pi-feed b/sendmail-pi-feed
index 67c4668..c085410 100755
--- a/sendmail-pi-feed
+++ b/sendmail-pi-feed
@@ -52,7 +52,7 @@ if [[ -z $EPOCH ]]; then
EPOCH=0
fi
-PIGITDIR="$INBOXDIR/$EPOCH"
+PIGITDIR="$INBOXDIR/git/$EPOCH.git"
PIGITDIR="${PIGITDIR/#\~/$HOME}"
if [[ $1 == '--init' ]]; then
And then init --bare, add a worktree; or better,
use old-school plumbing to avoid porcelain surprises:
# n.b. error-checking omitted
GIT_DIR=$PIGITDIR
export GIT_DIR
head=refs/heads/master
name=$(expr "z$AUTHOR" : 'z\(.*[^ ]\) *<.*')
email=$(expr "z$AUTHOR" : '.*\(<.*\)')
# no cat, no temporary file, no worktree, no index:
blob=$(git hash-object -w --stdin)
tree=$(printf '100644 blob %s\tm' $blob | git mktree)
# check if it's the initial commit, or if there's a parent
parent=
if git rev-parse $head^0 2>/dev/null
then
parent="-p $head"
fi
commit=$(GIT_AUTHOR_NAME=$name \
GIT_AUTHOR_EMAIL=$email \
GIT_AUTHOR_DATE=$DATE \
git commit-tree $parent -m "$LOGLINE" $tree)
git update-ref $head $commit
Working off a bare repo has other benefits, too, in case the
user eventually wants to run "public-inbox-index" on it and
serve directly from their machine.
As for porcelain surprises, a "git commit" invocation w/o
"--no-verify" could trip some folks up because some users
have hooks to reject trailing whitespace via "git init",
and email signature delimiters have trailing space ("-- \n").
prev parent reply other threads:[~2020-01-23 23:02 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-21 22:29 Minimalist public-inbox feed: sendmail-pi-feed Konstantin Ryabitsev
2020-01-23 23:02 ` Eric Wong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200123230258.GA13632@dcvr \
--to=e@yhbt.net \
--cc=meta@public-inbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).