]> git.ipfire.org Git - thirdparty/git.git/commitdiff
imap-send: enable specifying the folder using the command line
authorAditya Garg <gargaditya08@live.com>
Fri, 20 Jun 2025 06:40:29 +0000 (12:10 +0530)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Jun 2025 15:11:17 +0000 (08:11 -0700)
Some users may very often want to imap-send messages to a folder
other than the default set in the config. Add a command line
argument for the same.

While at it, fix minor mark-up inconsistencies in the existing
documentation text.

Signed-off-by: Aditya Garg <gargaditya08@live.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config/imap.adoc
Documentation/git-imap-send.adoc
imap-send.c

index 7c8b2dcce43978f93eaa90fb7ee1758bc075ccd9..4682a6bd039755ae86fe398d540ec4874e983d79 100644 (file)
@@ -1,7 +1,9 @@
 imap.folder::
        The folder to drop the mails into, which is typically the Drafts
-       folder. For example: "INBOX.Drafts", "INBOX/Drafts" or
-       "[Gmail]/Drafts". Required.
+       folder. For example: `INBOX.Drafts`, `INBOX/Drafts` or
+       `[Gmail]/Drafts`. The IMAP folder to interact with MUST be specified;
+       the value of this configuration variable is used as the fallback
+       default value when the `--folder` option is not given.
 
 imap.tunnel::
        Command used to set up a tunnel to the IMAP server through which
index 8adf0e5aac46f017ce74d29e662bd6c08529810d..4a0487b66e8cd6a087ecac665027623623edf281 100644 (file)
@@ -9,21 +9,23 @@ git-imap-send - Send a collection of patches from stdin to an IMAP folder
 SYNOPSIS
 --------
 [verse]
-'git imap-send' [-v] [-q] [--[no-]curl]
+'git imap-send' [-v] [-q] [--[no-]curl] [(--folder|-f) <folder>]
 
 
 DESCRIPTION
 -----------
-This command uploads a mailbox generated with 'git format-patch'
+This command uploads a mailbox generated with `git format-patch`
 into an IMAP drafts folder.  This allows patches to be sent as
 other email is when using mail clients that cannot read mailbox
 files directly. The command also works with any general mailbox
-in which emails have the fields "From", "Date", and "Subject" in
+in which emails have the fields `From`, `Date`, and `Subject` in
 that order.
 
 Typical usage is something like:
 
-git format-patch --signoff --stdout --attach origin | git imap-send
+------
+$ git format-patch --signoff --stdout --attach origin | git imap-send
+------
 
 
 OPTIONS
@@ -37,6 +39,11 @@ OPTIONS
 --quiet::
        Be quiet.
 
+-f <folder>::
+--folder=<folder>::
+       Specify the folder in which the emails have to saved.
+       For example: `--folder=[Gmail]/Drafts` or `-f INBOX/Drafts`.
+
 --curl::
        Use libcurl to communicate with the IMAP server, unless tunneling
        into it.  Ignored if Git was built without the USE_CURL_FOR_IMAP_SEND
index 54dab627d65a740c4d92cde821400fc518017b46..ccf7195fd788fe33f8f7ecf4f43d792af118e7da 100644 (file)
 
 static int verbosity;
 static int use_curl = USE_CURL_DEFAULT;
+static char *opt_folder;
 
-static const char * const imap_send_usage[] = { "git imap-send [-v] [-q] [--[no-]curl] < <mbox>", NULL };
+static const char * const imap_send_usage[] = { "git imap-send [-v] [-q] [--[no-]curl] [(--folder|-f) <folder>] < <mbox>", NULL };
 
 static struct option imap_send_options[] = {
        OPT__VERBOSITY(&verbosity),
        OPT_BOOL(0, "curl", &use_curl, "use libcurl to communicate with the IMAP server"),
+       OPT_STRING('f', "folder", &opt_folder, "folder", "specify the IMAP folder"),
        OPT_END()
 };
 
@@ -1722,6 +1724,11 @@ int cmd_main(int argc, const char **argv)
 
        argc = parse_options(argc, (const char **)argv, "", imap_send_options, imap_send_usage, 0);
 
+       if (opt_folder) {
+               free(server.folder);
+               server.folder = xstrdup(opt_folder);
+       }
+
        if (argc)
                usage_with_options(imap_send_usage, imap_send_options);