From: "Hariom Verma via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Hariom Verma <hariom18599@gmail.com>
Subject: [PATCH v2 0/9] [GSoC] Improvements to ref-filter
Date: Wed, 05 Aug 2020 21:51:36 +0000 [thread overview]
Message-ID: <pull.684.v2.git.1596664305.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.684.git.1595882588.gitgitgadget@gmail.com>
This is the first patch series that introduces some improvements and
features to file ref-filter.{c,h}. These changes are useful to ref-filter,
but in near future also will allow us to use ref-filter's logic in pretty.c
I plan to add more to format-support.{c,h} in the upcoming patch series.
That will lead to more improved and feature-rich ref-filter.c
Hariom Verma (9):
ref-filter: support different email formats
ref-filter: refactor `grab_objectname()`
ref-filter: modify error messages in `grab_objectname()`
ref-filter: rename `objectname` related functions and fields
ref-filter: add `short` modifier to 'tree' atom
ref-filter: add `short` modifier to 'parent' atom
pretty: refactor `format_sanitized_subject()`
format-support: move `format_sanitized_subject()` from pretty
ref-filter: add `sanitize` option for 'subject' atom
Documentation/git-for-each-ref.txt | 10 +-
Makefile | 1 +
format-support.c | 43 ++++++++
format-support.h | 6 ++
pretty.c | 40 +-------
ref-filter.c | 159 +++++++++++++++++++----------
t/t6300-for-each-ref.sh | 35 +++++++
7 files changed, 202 insertions(+), 92 deletions(-)
create mode 100644 format-support.c
create mode 100644 format-support.h
base-commit: dc04167d378fb29d30e1647ff6ff51dd182bc9a3
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-684%2Fharry-hov%2Fonly-rf6-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-684/harry-hov/only-rf6-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/684
Range-diff vs v1:
1: aeb116c5aa ! 1: 78e69032df ref-filter: support different email formats
@@ Metadata
## Commit message ##
ref-filter: support different email formats
- Currently, ref-filter only supports printing email with arrow brackets.
+ Currently, ref-filter only supports printing email with angle brackets.
Let's add support for two more email options.
- - trim : print email without arrow brackets.
- - localpart : prints the part before the @ sign
+ - trim : for email without angle brackets.
+ - localpart : for the part before the @ sign out of trimmed email
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Heba Waly <heba.waly@gmail.com>
Signed-off-by: Hariom Verma <hariom18599@gmail.com>
+ ## Documentation/git-for-each-ref.txt ##
+@@ Documentation/git-for-each-ref.txt: These are intended for working on a mix of annotated and lightweight tags.
+
+ Fields that have name-email-date tuple as its value (`author`,
+ `committer`, and `tagger`) can be suffixed with `name`, `email`,
+-and `date` to extract the named component.
++and `date` to extract the named component. For email fields (`authoremail`,
++`committeremail` and `taggeremail`), `:trim` can be appended to get the email
++without angle brackets, and `:localpart` to get the part before the `@` symbol
++out of the trimmed email.
+
+ The message in a commit or a tag object is `contents`, from which
+ `contents:<part>` can be used to extract various parts out of:
+
## ref-filter.c ##
-@@ ref-filter.c: static struct ref_to_worktree_map {
- struct worktree **worktrees;
- } ref_to_worktree_map;
+@@ ref-filter.c: static struct used_atom {
+ enum { O_FULL, O_LENGTH, O_SHORT } option;
+ unsigned int length;
+ } objectname;
++ struct email_option {
++ enum { EO_RAW, EO_TRIM, EO_LOCALPART } option;
++ } email_option;
+ struct refname_atom refname;
+ char *head;
+ } u;
+@@ ref-filter.c: static int objectname_atom_parser(const struct ref_format *format, struct used_a
+ return 0;
+ }
-+static struct email_option{
-+ enum { EO_INVALID, EO_RAW, EO_TRIM, EO_LOCALPART } option;
-+} email_option;
++static int person_email_atom_parser(const struct ref_format *format, struct used_atom *atom,
++ const char *arg, struct strbuf *err)
++{
++ if (!arg)
++ atom->u.email_option.option = EO_RAW;
++ else if (!strcmp(arg, "trim"))
++ atom->u.email_option.option = EO_TRIM;
++ else if (!strcmp(arg, "localpart"))
++ atom->u.email_option.option = EO_LOCALPART;
++ else
++ return strbuf_addf_ret(err, -1, _("unrecognized email option: %s"), arg);
++ return 0;
++}
+
- /*
- * An atom is a valid field atom listed below, possibly prefixed with
- * a "*" to denote deref_tag().
-@@ ref-filter.c: static const char *copy_email(const char *buf)
+ static int refname_atom_parser(const struct ref_format *format, struct used_atom *atom,
+ const char *arg, struct strbuf *err)
+ {
+@@ ref-filter.c: static struct {
+ { "tag", SOURCE_OBJ },
+ { "author", SOURCE_OBJ },
+ { "authorname", SOURCE_OBJ },
+- { "authoremail", SOURCE_OBJ },
++ { "authoremail", SOURCE_OBJ, FIELD_STR, person_email_atom_parser },
+ { "authordate", SOURCE_OBJ, FIELD_TIME },
+ { "committer", SOURCE_OBJ },
+ { "committername", SOURCE_OBJ },
+- { "committeremail", SOURCE_OBJ },
++ { "committeremail", SOURCE_OBJ, FIELD_STR, person_email_atom_parser },
+ { "committerdate", SOURCE_OBJ, FIELD_TIME },
+ { "tagger", SOURCE_OBJ },
+ { "taggername", SOURCE_OBJ },
+- { "taggeremail", SOURCE_OBJ },
++ { "taggeremail", SOURCE_OBJ, FIELD_STR, person_email_atom_parser },
+ { "taggerdate", SOURCE_OBJ, FIELD_TIME },
+ { "creator", SOURCE_OBJ },
+ { "creatordate", SOURCE_OBJ, FIELD_TIME },
+@@ ref-filter.c: static const char *copy_name(const char *buf)
+ return xstrdup("");
+ }
+
+-static const char *copy_email(const char *buf)
++static const char *copy_email(const char *buf, struct used_atom *atom)
+ {
+ const char *email = strchr(buf, '<');
const char *eoemail;
if (!email)
return xstrdup("");
- eoemail = strchr(email, '>');
-+ switch (email_option.option) {
++ switch (atom->u.email_option.option) {
+ case EO_RAW:
-+ eoemail = strchr(email, '>') + 1;
++ eoemail = strchr(email, '>');
++ if (eoemail)
++ eoemail++;
+ break;
+ case EO_TRIM:
+ email++;
@@ ref-filter.c: static const char *copy_email(const char *buf)
+ case EO_LOCALPART:
+ email++;
+ eoemail = strchr(email, '@');
++ if (!eoemail)
++ eoemail = strchr(email, '>');
+ break;
-+ case EO_INVALID:
+ default:
-+ return xstrdup("");
++ BUG("unknown email option");
+ }
+
if (!eoemail)
@@ ref-filter.c: static void grab_person(const char *who, struct atom_value *val, i
else if (!strcmp(name + wholen, "name"))
v->s = copy_name(wholine);
- else if (!strcmp(name + wholen, "email"))
-+ else if (starts_with(name + wholen, "email")) {
-+ email_option.option = EO_INVALID;
-+ if (!strcmp(name + wholen, "email"))
-+ email_option.option = EO_RAW;
-+ if (!strcmp(name + wholen, "email:trim"))
-+ email_option.option = EO_TRIM;
-+ if (!strcmp(name + wholen, "email:localpart"))
-+ email_option.option = EO_LOCALPART;
- v->s = copy_email(wholine);
-+ }
+- v->s = copy_email(wholine);
++ else if (starts_with(name + wholen, "email"))
++ v->s = copy_email(wholine, &used_atom[i]);
else if (starts_with(name + wholen, "date"))
grab_date(wholine, v, name);
}
-: ---------- > 2: b6b6acab9a ref-filter: refactor `grab_objectname()`
-: ---------- > 3: 65fee332a3 ref-filter: modify error messages in `grab_objectname()`
-: ---------- > 4: 976f2041a4 ref-filter: rename `objectname` related functions and fields
-: ---------- > 5: dda7400b14 ref-filter: add `short` modifier to 'tree' atom
2: 49344f1b55 ! 6: 764bb23b59 ref-filter: add `short` option for 'tree' and 'parent'
@@ Metadata
Author: Hariom Verma <hariom18599@gmail.com>
## Commit message ##
- ref-filter: add `short` option for 'tree' and 'parent'
+ ref-filter: add `short` modifier to 'parent' atom
- Sometimes while using 'parent' and 'tree' atom, user might
- want to see abbrev hash instead of full 40 character hash.
+ Sometimes while using 'parent' atom, user might want to see abbrev hash
+ instead of full 40 character hash.
- 'objectname' and 'refname' already supports printing abbrev hash.
- It might be convenient for users to have the same option for printing
- 'parent' and 'tree' hash.
+ Just like 'objectname', it might be convenient for users to have the
+ `:short` and `:short=<length>` option for printing 'parent' hash.
- Let's introduce `short` option to 'parent' and 'tree' atom.
-
- `tree:short` - for abbrev tree hash
- `parent:short` - for abbrev parent hash
+ Let's introduce `short` option to 'parent' atom.
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Heba Waly <heba.waly@gmail.com>
Signed-off-by: Hariom Verma <hariom18599@gmail.com>
+ ## Documentation/git-for-each-ref.txt ##
+@@ Documentation/git-for-each-ref.txt: worktreepath::
+ In addition to the above, for commit and tag objects, the header
+ field names (`tree`, `parent`, `object`, `type`, and `tag`) can
+ be used to specify the value in the header field.
+-Field `tree` can also be used with modifier `:short` and
++Fields `tree` and `parent` can also be used with modifier `:short` and
+ `:short=<length>` just like `objectname`.
+
+ For commit and tag objects, the special `creatordate` and `creator`
+
## ref-filter.c ##
+@@ ref-filter.c: static struct {
+ { "objectname", SOURCE_OTHER, FIELD_STR, oid_atom_parser },
+ { "deltabase", SOURCE_OTHER, FIELD_STR, deltabase_atom_parser },
+ { "tree", SOURCE_OBJ, FIELD_STR, oid_atom_parser },
+- { "parent", SOURCE_OBJ },
++ { "parent", SOURCE_OBJ, FIELD_STR, oid_atom_parser },
+ { "numparent", SOURCE_OBJ, FIELD_ULONG },
+ { "object", SOURCE_OBJ },
+ { "type", SOURCE_OBJ },
@@ ref-filter.c: static void grab_commit_values(struct atom_value *val, int deref, struct object
- continue;
- if (deref)
- name++;
-- if (!strcmp(name, "tree")) {
-+ if (!strcmp(name, "tree"))
- v->s = xstrdup(oid_to_hex(get_commit_tree_oid(commit)));
-- }
-+ else if (!strcmp(name, "tree:short"))
-+ v->s = xstrdup(find_unique_abbrev(get_commit_tree_oid(commit), DEFAULT_ABBREV));
- else if (!strcmp(name, "numparent")) {
v->value = commit_list_count(commit->parents);
v->s = xstrfmt("%lu", (unsigned long)v->value);
}
@@ ref-filter.c: static void grab_commit_values(struct atom_value *val, int deref,
struct commit_list *parents;
struct strbuf s = STRBUF_INIT;
for (parents = commit->parents; parents; parents = parents->next) {
- struct commit *parent = parents->item;
+- struct commit *parent = parents->item;
++ struct object_id *oid = &parents->item->object.oid;
if (parents != commit->parents)
strbuf_addch(&s, ' ');
- strbuf_addstr(&s, oid_to_hex(&parent->object.oid));
-+ if (!strcmp(name, "parent"))
-+ strbuf_addstr(&s, oid_to_hex(&parent->object.oid));
-+ else if (!strcmp(name, "parent:short"))
-+ strbuf_add_unique_abbrev(&s, &parent->object.oid, DEFAULT_ABBREV);
++ strbuf_addstr(&s, do_grab_oid("parent", oid, &used_atom[i]));
}
v->s = strbuf_detach(&s, NULL);
}
## t/t6300-for-each-ref.sh ##
-@@ t/t6300-for-each-ref.sh: test_atom head objectname:short $(git rev-parse --short refs/heads/master)
- test_atom head objectname:short=1 $(git rev-parse --short=1 refs/heads/master)
- test_atom head objectname:short=10 $(git rev-parse --short=10 refs/heads/master)
- test_atom head tree $(git rev-parse refs/heads/master^{tree})
-+test_atom head tree:short $(git rev-parse --short refs/heads/master^{tree})
+@@ t/t6300-for-each-ref.sh: test_atom head tree:short $(git rev-parse --short refs/heads/master^{tree})
+ test_atom head tree:short=1 $(git rev-parse --short=1 refs/heads/master^{tree})
+ test_atom head tree:short=10 $(git rev-parse --short=10 refs/heads/master^{tree})
test_atom head parent ''
+test_atom head parent:short ''
++test_atom head parent:short=1 ''
++test_atom head parent:short=10 ''
test_atom head numparent 0
test_atom head object ''
test_atom head type ''
-@@ t/t6300-for-each-ref.sh: test_atom tag objectname:short $(git rev-parse --short refs/tags/testtag)
- test_atom head objectname:short=1 $(git rev-parse --short=1 refs/heads/master)
- test_atom head objectname:short=10 $(git rev-parse --short=10 refs/heads/master)
- test_atom tag tree ''
-+test_atom tag tree:short ''
+@@ t/t6300-for-each-ref.sh: test_atom tag tree:short ''
+ test_atom tag tree:short=1 ''
+ test_atom tag tree:short=10 ''
test_atom tag parent ''
+test_atom tag parent:short ''
++test_atom tag parent:short=1 ''
++test_atom tag parent:short=10 ''
test_atom tag numparent ''
test_atom tag object $(git rev-parse refs/tags/testtag^0)
test_atom tag type 'commit'
3: 69b9d221c0 ! 7: 95035765a0 pretty: refactor `format_sanitized_subject()`
@@ Metadata
## Commit message ##
pretty: refactor `format_sanitized_subject()`
- This commit refactors `format_sanitized_subject()` in the
- hope to use same logic in ref-filter.c
+ The function 'format_sanitized_subject()' is responsible for
+ sanitized subject line in pretty.c
+ e.g.
+ the subject line
+ the-sanitized-subject-line
+
+ It would be a nice enhancement to `subject` atom to have the
+ same feature. So in the later commits, we plan to add this feature
+ to ref-filter.
+
+ Refactor `format_sanitized_subject()`, so it can be reused in
+ ref-filter.c for adding new modifier `sanitize` to "subject" atom.
+
+ Currently, the loop inside `format_sanitized_subject()` runs
+ until `\n` is found. But now, we stored the first occurrence
+ of `\n` in a variable `eol` and passed it in
+ `format_sanitized_subject()`. And the loop runs upto `eol`.
+
+ But this change isn't sufficient to reuse this function in
+ ref-filter.c because there exist tags with multiline subject.
+
+ It's wise to replace `\n` with ' ', if `format_sanitized_subject()`
+ encounters `\n` before end of subject line, just like `copy_subject()`.
+ Because we'll be only using `format_sanitized_subject()` for
+ "%(subject:sanitize)", instead of `copy_subject()` and
+ `format_sanitized_subject()` both. So, added the code:
+ ```
+ if (char == '\n') /* never true if called inside pretty.c */
+ char = ' ';
+ ```
+
+ Now, it's ready to be reused in ref-filter.c
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Heba Waly <heba.waly@gmail.com>
4: 9dc619b448 ! 8: 1c43f55d7c format-support: move `format_sanitized_subject()` from pretty
@@ Commit message
In hope of some new features in `subject` atom, move funtion
`format_sanitized_subject()` and all the function it uses
- to new file format-support.[c/h].
+ to new file format-support.{c,h}.
Consider this new file as a common interface between functions that
pretty.c and ref-filter.c shares.
5: 7b9103cbad ! 9: feace82752 ref-filter: add `sanitize` option for 'subject' atom
@@ Commit message
`subject:sanitize` - print sanitized subject line, suitable for a filename.
+ e.g.
+ %(subject): "the subject line"
+ %(subject:sanitize): "the-subject-line"
+
Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Heba Waly <heba.waly@gmail.com>
Signed-off-by: Hariom Verma <hariom18599@gmail.com>
+ ## Documentation/git-for-each-ref.txt ##
+@@ Documentation/git-for-each-ref.txt: contents:subject::
+ The first paragraph of the message, which typically is a
+ single line, is taken as the "subject" of the commit or the
+ tag message.
++ Instead of `contents:subject`, field `subject` can also be used to
++ obtain same results. `:sanitize` can be appended to `subject` for
++ subject line suitable for filename.
+
+ contents:body::
+ The remainder of the commit or the tag message that follows
+
## ref-filter.c ##
@@
#include "worktree.h"
@@ ref-filter.c: static struct used_atom {
unsigned int nobracket : 1, push : 1, push_remote : 1;
} remote_ref;
struct {
-- enum { C_BARE, C_BODY, C_BODY_DEP, C_LINES, C_SIG, C_SUB, C_TRAILERS } option;
-+ enum { C_BARE, C_BODY, C_BODY_DEP, C_LINES, C_SIG, C_SUB, C_SUB_SANITIZE, C_TRAILERS } option;
+- enum { C_BARE, C_BODY, C_BODY_DEP, C_LENGTH,
+- C_LINES, C_SIG, C_SUB, C_TRAILERS } option;
++ enum { C_BARE, C_BODY, C_BODY_DEP, C_LENGTH, C_LINES,
++ C_SIG, C_SUB, C_SUB_SANITIZE, C_TRAILERS } option;
struct process_trailer_options trailer_opts;
unsigned int nlines;
} contents;
@@ ref-filter.c: static int body_atom_parser(const struct ref_format *format, struc
{
- if (arg)
- return strbuf_addf_ret(err, -1, _("%%(subject) does not take arguments"));
-+ if (arg) {
-+ if (!strcmp(arg, "sanitize")) {
-+ atom->u.contents.option = C_SUB_SANITIZE;
-+ return 0;
-+ } else {
-+ return strbuf_addf_ret(err, -1, _("unrecognized %%(subject) argument: %s"), arg);
-+ }
-+ }
- atom->u.contents.option = C_SUB;
+- atom->u.contents.option = C_SUB;
++ if (!arg)
++ atom->u.contents.option = C_SUB;
++ else if (!strcmp(arg, "sanitize"))
++ atom->u.contents.option = C_SUB_SANITIZE;
++ else
++ return strbuf_addf_ret(err, -1, _("unrecognized %%(subject) argument: %s"), arg);
return 0;
}
+
@@ ref-filter.c: static void grab_sub_body_contents(struct atom_value *val, int deref, void *buf)
- struct used_atom *atom = &used_atom[i];
- const char *name = atom->name;
- struct atom_value *v = &val[i];
-+
- if (!!deref != (*name == '*'))
continue;
if (deref)
name++;
- if (strcmp(name, "subject") &&
-+ strcmp(name, "subject:sanitize") &&
- strcmp(name, "body") &&
+- if (strcmp(name, "subject") &&
+- strcmp(name, "body") &&
++ if (strcmp(name, "body") &&
++ !starts_with(name, "subject") &&
!starts_with(name, "trailers") &&
!starts_with(name, "contents"))
+ continue;
@@ ref-filter.c: static void grab_sub_body_contents(struct atom_value *val, int deref, void *buf)
if (atom->u.contents.option == C_SUB)
@@ ref-filter.c: static void grab_sub_body_contents(struct atom_value *val, int der
+ v->s = strbuf_detach(&sb, NULL);
+ } else if (atom->u.contents.option == C_BODY_DEP)
v->s = xmemdupz(bodypos, bodylen);
- else if (atom->u.contents.option == C_BODY)
- v->s = xmemdupz(bodypos, nonsiglen);
+ else if (atom->u.contents.option == C_LENGTH)
+ v->s = xstrfmt("%"PRIuMAX, (uintmax_t)strlen(subpos));
## t/t6300-for-each-ref.sh ##
@@ t/t6300-for-each-ref.sh: test_atom head taggerdate ''
--
gitgitgadget
next prev parent reply other threads:[~2020-08-05 21:51 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-27 20:43 [PATCH 0/5] [GSoC] Improvements to ref-filter Hariom Verma via GitGitGadget
2020-07-27 20:43 ` [PATCH 1/5] ref-filter: support different email formats Hariom Verma via GitGitGadget
2020-07-27 22:51 ` Junio C Hamano
2020-07-28 20:31 ` Hariom verma
2020-07-28 20:43 ` Junio C Hamano
2020-07-28 13:58 ` Đoàn Trần Công Danh
2020-07-28 16:45 ` Junio C Hamano
2020-07-27 20:43 ` [PATCH 2/5] ref-filter: add `short` option for 'tree' and 'parent' Hariom Verma via GitGitGadget
2020-07-27 23:21 ` Junio C Hamano
2020-07-27 20:43 ` [PATCH 3/5] pretty: refactor `format_sanitized_subject()` Hariom Verma via GitGitGadget
2020-07-27 20:43 ` [PATCH 4/5] format-support: move `format_sanitized_subject()` from pretty Hariom Verma via GitGitGadget
2020-07-27 20:43 ` [PATCH 5/5] ref-filter: add `sanitize` option for 'subject' atom Hariom Verma via GitGitGadget
2020-08-05 21:51 ` Hariom Verma via GitGitGadget [this message]
2020-08-05 21:51 ` [PATCH v2 1/9] ref-filter: support different email formats Hariom Verma via GitGitGadget
2020-08-05 21:51 ` [PATCH v2 2/9] ref-filter: refactor `grab_objectname()` Hariom Verma via GitGitGadget
2020-08-05 21:51 ` [PATCH v2 3/9] ref-filter: modify error messages in `grab_objectname()` Hariom Verma via GitGitGadget
2020-08-05 21:51 ` [PATCH v2 4/9] ref-filter: rename `objectname` related functions and fields Hariom Verma via GitGitGadget
2020-08-05 21:51 ` [PATCH v2 5/9] ref-filter: add `short` modifier to 'tree' atom Hariom Verma via GitGitGadget
2020-08-05 21:51 ` [PATCH v2 6/9] ref-filter: add `short` modifier to 'parent' atom Hariom Verma via GitGitGadget
2020-08-05 21:51 ` [PATCH v2 7/9] pretty: refactor `format_sanitized_subject()` Hariom Verma via GitGitGadget
2020-08-05 21:51 ` [PATCH v2 8/9] format-support: move `format_sanitized_subject()` from pretty Hariom Verma via GitGitGadget
2020-08-05 21:51 ` [PATCH v2 9/9] ref-filter: add `sanitize` option for 'subject' atom Hariom Verma via GitGitGadget
2020-08-05 22:04 ` [PATCH v2 0/9] [GSoC] Improvements to ref-filter Junio C Hamano
2020-08-06 13:47 ` Hariom verma
2020-08-17 18:10 ` [PATCH v3 0/9] [Resend][GSoC] " Hariom Verma via GitGitGadget
2020-08-17 18:10 ` [PATCH v3 1/9] ref-filter: support different email formats Hariom Verma via GitGitGadget
2020-08-17 18:10 ` [PATCH v3 2/9] ref-filter: refactor `grab_objectname()` Hariom Verma via GitGitGadget
2020-08-17 18:10 ` [PATCH v3 3/9] ref-filter: modify error messages in `grab_objectname()` Hariom Verma via GitGitGadget
2020-08-17 18:10 ` [PATCH v3 4/9] ref-filter: rename `objectname` related functions and fields Hariom Verma via GitGitGadget
2020-08-17 18:10 ` [PATCH v3 5/9] ref-filter: add `short` modifier to 'tree' atom Hariom Verma via GitGitGadget
2020-08-17 18:10 ` [PATCH v3 6/9] ref-filter: add `short` modifier to 'parent' atom Hariom Verma via GitGitGadget
2020-08-17 18:10 ` [PATCH v3 7/9] pretty: refactor `format_sanitized_subject()` Hariom Verma via GitGitGadget
2020-08-17 19:29 ` Junio C Hamano
2020-08-19 13:36 ` Hariom verma
2020-08-19 16:01 ` Junio C Hamano
2020-08-19 16:08 ` Junio C Hamano
2020-08-20 17:33 ` Hariom verma
2020-08-20 17:27 ` Hariom verma
2020-08-17 18:10 ` [PATCH v3 8/9] format-support: move `format_sanitized_subject()` from pretty Hariom Verma via GitGitGadget
2020-08-17 19:33 ` Junio C Hamano
2020-08-17 18:10 ` [PATCH v3 9/9] ref-filter: add `sanitize` option for 'subject' atom Hariom Verma via GitGitGadget
2020-08-17 19:37 ` [PATCH v3 0/9] [Resend][GSoC] Improvements to ref-filter Junio C Hamano
2020-08-21 21:41 ` [PATCH v4 0/8] [GSoC] " Hariom Verma via GitGitGadget
2020-08-21 21:41 ` [PATCH v4 1/8] ref-filter: support different email formats Hariom Verma via GitGitGadget
2020-08-21 21:41 ` [PATCH v4 2/8] ref-filter: refactor `grab_objectname()` Hariom Verma via GitGitGadget
2020-08-21 21:41 ` [PATCH v4 3/8] ref-filter: modify error messages in `grab_objectname()` Hariom Verma via GitGitGadget
2020-08-21 21:41 ` [PATCH v4 4/8] ref-filter: rename `objectname` related functions and fields Hariom Verma via GitGitGadget
2020-08-21 21:41 ` [PATCH v4 5/8] ref-filter: add `short` modifier to 'tree' atom Hariom Verma via GitGitGadget
2020-08-21 21:41 ` [PATCH v4 6/8] ref-filter: add `short` modifier to 'parent' atom Hariom Verma via GitGitGadget
2020-08-21 21:41 ` [PATCH v4 7/8] pretty: refactor `format_sanitized_subject()` Hariom Verma via GitGitGadget
2020-08-21 21:41 ` [PATCH v4 8/8] ref-filter: add `sanitize` option for 'subject' atom Hariom Verma via GitGitGadget
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: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.684.v2.git.1596664305.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=hariom18599@gmail.com \
/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/mirrors/git.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).