git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* End of Outreachy internship
  @ 2019-03-04 10:49  0%     ` Slavica Djukic
  0 siblings, 0 replies; 9+ results
From: Slavica Djukic @ 2019-03-04 10:49 UTC (permalink / raw)
  To: Slavica Đukić via GitGitGadget, git
  Cc: Phillip Wood, Ævar Arnfjörð Bjarmason,
	Junio C Hamano, Johannes Schindelin

Hi everyone,

Today is officially the last day of my Outreachy internship.
I wanted to say a few things about my experience and future of the
project I worked on.
Project was "Turn git add -i into built-in" with Johannes Schindelin
as my mentor.

I truly had amazing time, I learned so much about
coding and Git itself, went to Git Merge and FOSDEM and had a chance
to meet great people.
I've never contributed before to open-source, and now that I did,
I find it invaluable experience.
Although my obligations at this point don't allow me to work on
the project, I will try my best to contribute in the future to Git
or/and other great open-source projects.
That said, my mentor Johannes Schindelin will continue to work on
the project from now on.

What is implemented in this project so far:
commands: status and help, helper functions like highlight_prefix(),
find_unique_prefixes(), is_valid_prefix(), etc., but most importantly:
list_and_choose() and list_modified().
Most of the add -i commands will use those two functions to collect,
show the data and let the user make a choice.

What is left to be done:
In the current patch series, I got a lot of suggestion from Junio,
and I applied all of them -- the only thing left is correcting
list_and_choose more to make it type-independent.
In the future, all the other commands: update, revert, add untracked,
patch, diff and quit.

I would like to thank all reviewers for useful suggestions and
comprehension.
And thousand thanks to Johannes Schindelin, who turned out to be
the most amazing mentor.

-Slavica Djukic

On 20-Feb-19 12:41 PM, Slavica Đukić via GitGitGadget wrote:
> This is the first version of a patch series to start porting
> git-add--interactive from Perl to C. Daniel Ferreira's patch series used as
> a head start:
> https://public-inbox.org/git/1494907234-28903-1-git-send-email-bnmvco@gmail.com/t/#u
>
> Changes since v4:
>
>   * rename print_modified to list_modifed
>   * the big change was implementing list_and_choose, which resulted in code
>     refactoring, i.e. separating list_modified and status_cmd and making
>     status_cmd use both list_modified and list_and_choose
>   * implement struct choice instead of struct stuff_item as main data
>     structure for list_and_choose
>   * introduce list_only option and implement support for !list_only users
>   * introduce highlighting of unique prefixes
>
> Note that authorship handling is slightly changed. In some of the commits, I
> used Original-patch-by instead of listing Daniel Ferreira as author.
>
> Also, I would like to point out that my Outreachy internship is going to
> finish on March 4 and I would really appreciate reviews before it does.
>
> Daniel Ferreira (3):
>    diff: export diffstat interface
>    add--helper: create builtin helper for interactive add
>    add--interactive.perl: use add--helper --status for status_cmd
>
> Slavica Djukic (7):
>    add-interactive.c: implement list_modified
>    add-interactive.c: implement list_and_choose
>    add-interactive.c: implement status command
>    add-interactive.c: add support for list_only option
>    add-interactive.c: implement show-help command
>    t3701-add-interactive: test add_i_show_help()
>    add--interactive.perl: use add--helper --show-help for help_cmd
>
>   .gitignore                 |   1 +
>   Makefile                   |   2 +
>   add-interactive.c          | 819 +++++++++++++++++++++++++++++++++++++
>   add-interactive.h          |  10 +
>   builtin.h                  |   1 +
>   builtin/add--helper.c      |  43 ++
>   diff.c                     |  36 +-
>   diff.h                     |  18 +
>   git-add--interactive.perl  |  17 +-
>   git.c                      |   1 +
>   t/t3701-add-interactive.sh |  24 ++
>   11 files changed, 937 insertions(+), 35 deletions(-)
>   create mode 100644 add-interactive.c
>   create mode 100644 add-interactive.h
>   create mode 100644 builtin/add--helper.c
>
>
> base-commit: ca1b4116483b397e78483376296bcd23916ab553
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-103%2FslavicaDj%2Fadd-i-v5
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-103/slavicaDj/add-i-v5
> Pull-Request: https://github.com/gitgitgadget/git/pull/103
>
> Range-diff vs v4:
>
>    1:  737767b6f4 !  1:  d839f0c082 diff: export diffstat interface
>       @@ -11,6 +11,7 @@
>            how the show_* functions used by diff_flush() do it. One example is the
>            builtin implementation of git-add--interactive's status.
>        
>       +    Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>            Signed-off-by: Daniel Ferreira <bnmvco@gmail.com>
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>        
>    2:  91b1963125 !  2:  304c3863b1 add--helper: create builtin helper for interactive add
>       @@ -2,8 +2,8 @@
>        
>            add--helper: create builtin helper for interactive add
>        
>       -    Create a builtin helper for git-add--interactive, which right now is not
>       -    able to do anything.
>       +    Create a builtin helper for git-add--interactive, which at this point
>       +    is not doing anything.
>        
>            This is the first step in an effort to convert git-add--interactive.perl
>            to a C builtin, in search for better portability, expressibility and
>       @@ -13,6 +13,7 @@
>            remove the last "big" Git script to have Perl as a dependency, allowing
>            most Git users to have a NOPERL build running without big losses.
>        
>       +    Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>            Signed-off-by: Daniel Ferreira <bnmvco@gmail.com>
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>        
>    3:  d247ef69fe !  3:  8790ffaa39 add-interactive.c: implement status command
>       @@ -1,17 +1,12 @@
>       -Author: Daniel Ferreira <bnmvco@gmail.com>
>       +Author: Slavica Djukic <slawica92@hotmail.com>
>        
>       -    add-interactive.c: implement status command
>       +    add-interactive.c: implement list_modified
>        
>       -    Add new files: add-interactive.c and add-interactive.h, which
>       -    will be used for implementing "application logic" of git add -i,
>       -    whereas add--helper.c will be used mostly for parsing the command line.
>       -    We're a bit lax with the command-line parsing, as the command is
>       -    intended to be called only by one internal user: the add--interactive script.
>       +    Implement list_modified from Perl, which will be used
>       +    by most of the *_cmd functions, including status in the
>       +    following commit.
>        
>       -    Implement add --interactive's status command in add-interactive.c and
>       -    use it in builtin add--helper.c.
>       -
>       -    It prints a numstat comparing changed files between a) the worktree and
>       +    It lists a numstat comparing changed files between a) the worktree and
>            the index; b) the index and the HEAD.
>        
>            To do so, we use run_diff_index() and run_diff_files() to get changed
>       @@ -19,11 +14,13 @@
>            combination of a hashmap and qsort() to print the result in
>            O(n) + O(n lg n) complexity.
>        
>       -    This is the first interactive add command implemented in C of those
>       -    anticipated by the previous commit, which introduced
>       -    the add--helper built-in.
>       +    Add new file: add-interactive.c which will be used for implementing
>       +    "application logic" of git add -i (alongside with add-interactive.h,
>       +    added in later commit), whereas add--helper.c will be used mostly
>       +    for parsing the command line.
>        
>       -    Signed-off-by: Daniel Ferreira <bnmvco@gmail.com>
>       +    Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>       +    Original-patch-by: Daniel Ferreira <bnmvco@gmail.com>
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>        
>         diff --git a/Makefile b/Makefile
>       @@ -43,7 +40,6 @@
>         --- /dev/null
>         +++ b/add-interactive.c
>        @@
>       -+#include "add-interactive.h"
>        +#include "cache.h"
>        +#include "commit.h"
>        +#include "color.h"
>       @@ -51,8 +47,6 @@
>        +#include "diffcore.h"
>        +#include "revision.h"
>        +
>       -+#define HEADER_INDENT "      "
>       -+
>        +enum collection_phase {
>        +	WORKTREE,
>        +	INDEX
>       @@ -75,66 +69,8 @@
>        +	struct hashmap file_map;
>        +};
>        +
>       -+static int use_color = -1;
>       -+enum color_add_i {
>       -+	COLOR_PROMPT,
>       -+	COLOR_HEADER,
>       -+	COLOR_HELP,
>       -+	COLOR_ERROR
>       -+};
>       -+
>       -+static char colors[][COLOR_MAXLEN] = {
>       -+	GIT_COLOR_BOLD_BLUE, /* Prompt */
>       -+	GIT_COLOR_BOLD,      /* Header */
>       -+	GIT_COLOR_BOLD_RED,  /* Help */
>       -+	GIT_COLOR_BOLD_RED   /* Error */
>       -+};
>       -+
>       -+static const char *get_color(enum color_add_i ix)
>       -+{
>       -+	if (want_color(use_color))
>       -+		return colors[ix];
>       -+	return "";
>       -+}
>       -+
>       -+static int parse_color_slot(const char *slot)
>       -+{
>       -+	if (!strcasecmp(slot, "prompt"))
>       -+		return COLOR_PROMPT;
>       -+	if (!strcasecmp(slot, "header"))
>       -+		return COLOR_HEADER;
>       -+	if (!strcasecmp(slot, "help"))
>       -+		return COLOR_HELP;
>       -+	if (!strcasecmp(slot, "error"))
>       -+		return COLOR_ERROR;
>       -+
>       -+	return -1;
>       -+}
>       -+
>       -+int add_i_config(const char *var,
>       -+		const char *value, void *cbdata)
>       -+{
>       -+	const char *name;
>       -+
>       -+	if (!strcmp(var, "color.interactive")) {
>       -+		use_color = git_config_colorbool(var, value);
>       -+		return 0;
>       -+	}
>       -+
>       -+	if (skip_prefix(var, "color.interactive.", &name)) {
>       -+		int slot = parse_color_slot(name);
>       -+		if (slot < 0)
>       -+			return 0;
>       -+		if (!value)
>       -+			return config_error_nonbool(var);
>       -+		return color_parse(value, colors[slot]);
>       -+	}
>       -+
>       -+	return git_default_config(var, value, cbdata);
>       -+}
>       -+
>        +static int hash_cmp(const void *unused_cmp_data, const void *entry,
>       -+			const void *entry_or_key, const void *keydata)
>       ++		    const void *entry_or_key, const void *keydata)
>        +{
>        +	const struct file_stat *e1 = entry, *e2 = entry_or_key;
>        +	const char *name = keydata ? keydata : e2->name;
>       @@ -151,8 +87,8 @@
>        +}
>        +
>        +static void collect_changes_cb(struct diff_queue_struct *q,
>       -+					 struct diff_options *options,
>       -+					 void *data)
>       ++			       struct diff_options *options,
>       ++			       void *data)
>        +{
>        +	struct collection_status *s = data;
>        +	struct diffstat_t stat = { 0 };
>       @@ -222,128 +158,73 @@
>        +	run_diff_index(&rev, 1);
>        +}
>        +
>       -+void add_i_print_modified(void)
>       ++static int is_inital_commit(void)
>        +{
>       -+	int i = 0;
>       -+	struct collection_status s;
>       -+	/* TRANSLATORS: you can adjust this to align "git add -i" status menu */
>       -+	const char *modified_fmt = _("%12s %12s %s");
>       -+	const char *header_color = get_color(COLOR_HEADER);
>        +	struct object_id sha1;
>       ++	if (get_oid("HEAD", &sha1))
>       ++		return 1;
>       ++	return 0;
>       ++}
>       ++
>       ++static const char *get_diff_reference(void)
>       ++{
>       ++	if(is_inital_commit())
>       ++		return empty_tree_oid_hex();
>       ++	return "HEAD";
>       ++}
>       ++
>       ++static void filter_files(const char *filter, struct hashmap *file_map,
>       ++			 struct file_stat **files)
>       ++{
>       ++
>       ++	for (int i = 0; i < hashmap_get_size(file_map); i++) {
>       ++		struct file_stat *f = files[i];
>       ++
>       ++		if ((!(f->worktree.added || f->worktree.deleted)) &&
>       ++		   (!strcmp(filter, "file-only")))
>       ++				hashmap_remove(file_map, f, NULL);
>        +
>       ++		if ((!(f->index.added || f->index.deleted)) &&
>       ++		   (!strcmp(filter, "index-only")))
>       ++				hashmap_remove(file_map, f, NULL);
>       ++	}
>       ++}
>       ++
>       ++static struct collection_status *list_modified(struct repository *r, const char *filter)
>       ++{
>       ++	int i = 0;
>       ++	struct collection_status *s = xcalloc(1, sizeof(*s));
>        +	struct hashmap_iter iter;
>        +	struct file_stat **files;
>        +	struct file_stat *entry;
>        +
>       -+	if (read_cache() < 0)
>       -+		return;
>       ++	if (repo_read_index(r) < 0) {
>       ++		printf("\n");
>       ++		return NULL;
>       ++	}
>        +
>       -+	s.reference = !get_oid("HEAD", &sha1) ? "HEAD": empty_tree_oid_hex();
>       -+	hashmap_init(&s.file_map, hash_cmp, NULL, 0);
>       ++	s->reference = get_diff_reference();
>       ++	hashmap_init(&s->file_map, hash_cmp, NULL, 0);
>        +
>       -+	collect_changes_worktree(&s);
>       -+	collect_changes_index(&s);
>       ++	collect_changes_worktree(s);
>       ++	collect_changes_index(s);
>        +
>       -+	if (hashmap_get_size(&s.file_map) < 1) {
>       ++	if (hashmap_get_size(&s->file_map) < 1) {
>        +		printf("\n");
>       -+		return;
>       ++		return NULL;
>        +	}
>        +
>       -+	printf(HEADER_INDENT);
>       -+	color_fprintf(stdout, header_color, modified_fmt, _("staged"),
>       -+			_("unstaged"), _("path"));
>       -+	printf("\n");
>       -+
>       -+	hashmap_iter_init(&s.file_map, &iter);
>       ++	hashmap_iter_init(&s->file_map, &iter);
>        +
>       -+	files = xcalloc(hashmap_get_size(&s.file_map), sizeof(struct file_stat *));
>       ++	files = xcalloc(hashmap_get_size(&s->file_map), sizeof(struct file_stat *));
>        +	while ((entry = hashmap_iter_next(&iter))) {
>        +		files[i++] = entry;
>        +	}
>       -+	QSORT(files, hashmap_get_size(&s.file_map), alphabetical_cmp);
>       ++	QSORT(files, hashmap_get_size(&s->file_map), alphabetical_cmp);
>        +
>       -+	for (i = 0; i < hashmap_get_size(&s.file_map); i++) {
>       -+		struct file_stat *f = files[i];
>       -+
>       -+		char worktree_changes[50];
>       -+		char index_changes[50];
>       -+
>       -+		if (f->worktree.added || f->worktree.deleted)
>       -+			snprintf(worktree_changes, 50, "+%"PRIuMAX"/-%"PRIuMAX, f->worktree.added,
>       -+					f->worktree.deleted);
>       -+		else
>       -+			snprintf(worktree_changes, 50, "%s", _("nothing"));
>       -+
>       -+		if (f->index.added || f->index.deleted)
>       -+			snprintf(index_changes, 50, "+%"PRIuMAX"/-%"PRIuMAX, f->index.added,
>       -+					f->index.deleted);
>       -+		else
>       -+			snprintf(index_changes, 50, "%s", _("unchanged"));
>       -+
>       -+		printf(" %2d: ", i + 1);
>       -+		printf(modified_fmt, index_changes, worktree_changes, f->name);
>       -+		printf("\n");
>       -+	}
>       -+	printf("\n");
>       ++	if (filter)
>       ++		filter_files(filter, &s->file_map, files);
>        +
>        +	free(files);
>       -+	hashmap_free(&s.file_map, 1);
>       ++	return s;
>        +}
>       -
>       - diff --git a/add-interactive.h b/add-interactive.h
>       - new file mode 100644
>       - --- /dev/null
>       - +++ b/add-interactive.h
>       -@@
>       -+#ifndef ADD_INTERACTIVE_H
>       -+#define ADD_INTERACTIVE_H
>       -+
>       -+int add_i_config(const char *var, const char *value, void *cbdata);
>       -+
>       -+void add_i_print_modified(void);
>       -+
>       -+#endif
>       - \ No newline at end of file
>       -
>       - diff --git a/builtin/add--helper.c b/builtin/add--helper.c
>       - --- a/builtin/add--helper.c
>       - +++ b/builtin/add--helper.c
>       -@@
>       -+#include "add-interactive.h"
>       - #include "builtin.h"
>       -+#include "config.h"
>       -+#include "revision.h"
>       -+
>       -+static const char * const builtin_add_helper_usage[] = {
>       -+	N_("git add-interactive--helper <command>"),
>       -+	NULL
>       -+};
>       -+
>       -+enum cmd_mode {
>       -+	DEFAULT = 0,
>       -+	STATUS
>       -+};
>       -
>       - int cmd_add__helper(int argc, const char **argv, const char *prefix)
>       - {
>       -+	enum cmd_mode mode = DEFAULT;
>       -+
>       -+	struct option options[] = {
>       -+		OPT_CMDMODE(0, "status", &mode,
>       -+			 N_("print status information with diffstat"), STATUS),
>       -+		OPT_END()
>       -+	};
>       -+
>       -+	git_config(add_i_config, NULL);
>       -+	argc = parse_options(argc, argv, NULL, options,
>       -+			     builtin_add_helper_usage,
>       -+			     PARSE_OPT_KEEP_ARGV0);
>       -+
>       -+	if (mode == STATUS)
>       -+		add_i_print_modified();
>       -+	else
>       -+		usage_with_options(builtin_add_helper_usage,
>       -+				   options);
>       -+
>       - 	return 0;
>       - }
>    -:  ---------- >  4:  a97b29d274 add-interactive.c: implement list_and_choose
>    -:  ---------- >  5:  9a72aabe6c add-interactive.c: implement status command
>    4:  fb3f9378ac !  6:  883963ee6e add--interactive.perl: use add--helper --status for status_cmd
>       @@ -14,6 +14,7 @@
>            the fact that it would be hard to test, we'll pass on adding
>            a regression test for this.
>        
>       +    Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>            Signed-off-by: Daniel Ferreira <bnmvco@gmail.com>
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>            Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
>    -:  ---------- >  7:  7912f37517 add-interactive.c: add support for list_only option
>    5:  ab16afd1d5 !  8:  441321fc3d add-interactive.c: implement show-help command
>       @@ -10,31 +10,32 @@
>            handle_builtin and re-routed to the help command, without ever
>            calling cmd_add__helper().
>        
>       +    Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>        
>         diff --git a/add-interactive.c b/add-interactive.c
>         --- a/add-interactive.c
>         +++ b/add-interactive.c
>        @@
>       - 	free(files);
>       - 	hashmap_free(&s.file_map, 1);
>       + 	free(s);
>       + 	free_choices(&choices);
>         }
>        +
>        +void add_i_show_help(void)
>        +{
>        +	const char *help_color = get_color(COLOR_HELP);
>        +	color_fprintf_ln(stdout, help_color, "status        - %s",
>       -+			_("show paths with changes"));
>       ++			 _("show paths with changes"));
>        +	color_fprintf_ln(stdout, help_color, "update        - %s",
>       -+			_("add working tree state to the staged set of changes"));
>       ++			 _("add working tree state to the staged set of changes"));
>        +	color_fprintf_ln(stdout, help_color, "revert        - %s",
>       -+			_("revert staged set of changes back to the HEAD version"));
>       ++			 _("revert staged set of changes back to the HEAD version"));
>        +	color_fprintf_ln(stdout, help_color, "patch         - %s",
>       -+			_("pick hunks and update selectively"));
>       ++			 _("pick hunks and update selectively"));
>        +	color_fprintf_ln(stdout, help_color, "diff          - %s",
>       -+			_("view diff between HEAD and index"));
>       ++			 _("view diff between HEAD and index"));
>        +	color_fprintf_ln(stdout, help_color, "add untracked - %s",
>       -+			_("add contents of untracked files to the staged set of changes"));
>       ++			 _("add contents of untracked files to the staged set of changes"));
>        +}
>        
>         diff --git a/add-interactive.h b/add-interactive.h
>       @@ -42,13 +43,11 @@
>         +++ b/add-interactive.h
>        @@
>         
>       - void add_i_print_modified(void);
>       + void add_i_status(void);
>         
>       --#endif
>       - \ No newline at end of file
>        +void add_i_show_help(void);
>        +
>       -+#endif
>       + #endif
>        
>         diff --git a/builtin/add--helper.c b/builtin/add--helper.c
>         --- a/builtin/add--helper.c
>       @@ -66,16 +65,16 @@
>        @@
>         	struct option options[] = {
>         		OPT_CMDMODE(0, "status", &mode,
>       - 			 N_("print status information with diffstat"), STATUS),
>       + 			    N_("print status information with diffstat"), STATUS),
>        +		OPT_CMDMODE(0, "show-help", &mode,
>       -+			 N_("show help"), HELP),
>       ++			    N_("show help"), HELP),
>         		OPT_END()
>         	};
>         
>        @@
>         
>         	if (mode == STATUS)
>       - 		add_i_print_modified();
>       + 		add_i_status();
>        +	else if (mode == HELP)
>        +		add_i_show_help();
>         	else
>    6:  0a27304a84 !  9:  315ae8b211 t3701-add-interactive: test add_i_show_help()
>       @@ -11,6 +11,7 @@
>            Prefix git add -i call with GIT_PAGER_IN_USE=true TERM=vt100
>            to force colored output on Windows.
>        
>       +    Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>        
>         diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
>    7:  ca2a7c4375 ! 10:  2b4bdce730 add--interactive.perl: use add--helper --show-help for help_cmd
>       @@ -12,6 +12,7 @@
>            to print the numstat, also here we forgo adding a regression test:
>            the Perl script is on its way out (and this patch is part of that journey).
>        
>       +    Mentored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>            Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
>        
>

^ permalink raw reply	[relevance 0%]

* Re: [PATCH v4 0/7] Turn git add-i into built-in
  2019-01-25 12:37  0%   ` Slavica Djukic
@ 2019-02-01 14:37  0%     ` Phillip Wood
  0 siblings, 0 replies; 9+ results
From: Phillip Wood @ 2019-02-01 14:37 UTC (permalink / raw)
  To: Slavica Djukic, Slavica Đukić via GitGitGadget, git
  Cc: phillip.wood

Hi Slavica

On 25/01/2019 12:37, Slavica Djukic wrote:
> Hi Phillip,
> 
> Sorry for omitting you in Cc, again.
> I accidentally wrote yours and Ævar's email prefixed with Cc:, rather 
> then separating
> them with comma, like Johannes said I should.

Don't worry, thanks for emailing here. I've looked at the range diff and 
I think your patches are good.

Best Wishes

Phillip

> 
> -Slavica
> 
> On 25-Jan-19 1:23 PM, Slavica Đukić via GitGitGadget wrote:
>> This is the first version of a patch series to start porting
>> git-add--interactive from Perl to C. Daniel Ferreira's patch series 
>> used as
>> a head start:
>> https://public-inbox.org/git/1494907234-28903-1-git-send-email-bnmvco@gmail.com/t/#u 
>>
>>
>> Changes since v3:
>>
>>   * add error check when calling add--helper's functions from
>>     git-add--interactive.perl
>>   * replace trailing whitespace in the test with variable $SP used in 
>> earlier
>>     tests
>>
>> Cc: Phillip Wood phillip.wood@dunelm.org.uk [phillip.wood@dunelm.org.uk]
>>
>> Daniel Ferreira (4):
>>    diff: export diffstat interface
>>    add--helper: create builtin helper for interactive add
>>    add-interactive.c: implement status command
>>    add--interactive.perl: use add--helper --status for status_cmd
>>
>> Slavica Djukic (3):
>>    add-interactive.c: implement show-help command
>>    t3701-add-interactive: test add_i_show_help()
>>    add--interactive.perl: use add--helper --show-help for help_cmd
>>
>>   .gitignore                 |   1 +
>>   Makefile                   |   2 +
>>   add-interactive.c          | 263 +++++++++++++++++++++++++++++++++++++
>>   add-interactive.h          |  10 ++
>>   builtin.h                  |   1 +
>>   builtin/add--helper.c      |  43 ++++++
>>   diff.c                     |  36 ++---
>>   diff.h                     |  18 +++
>>   git-add--interactive.perl  |  17 +--
>>   git.c                      |   1 +
>>   t/t3701-add-interactive.sh |  24 ++++
>>   11 files changed, 381 insertions(+), 35 deletions(-)
>>   create mode 100644 add-interactive.c
>>   create mode 100644 add-interactive.h
>>   create mode 100644 builtin/add--helper.c
>>
>>
>> base-commit: b21ebb671bb7dea8d342225f0d66c41f4e54d5ca
>> Published-As: 
>> https://github.com/gitgitgadget/git/releases/tag/pr-103%2FslavicaDj%2Fadd-i-v4 
>>
>> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git 
>> pr-103/slavicaDj/add-i-v4
>> Pull-Request: https://github.com/gitgitgadget/git/pull/103
>>
>> Range-diff vs v3:
>>
>>   1:  737767b6f4 = 1:  737767b6f4 diff: export diffstat interface
>>   2:  91b1963125 = 2:  91b1963125 add--helper: create builtin helper 
>> for interactive add
>>   3:  d247ef69fe = 3:  d247ef69fe add-interactive.c: implement status 
>> command
>>   4:  4950c889aa ! 4:  fb3f9378ac add--interactive.perl: use 
>> add--helper --status for status_cmd
>>       @@ -2,12 +2,21 @@
>>            add--interactive.perl: use add--helper --status for status_cmd
>>       -    Call the newly introduced add--helper builtin on
>>       +    Call the newly introduced add--helper builtin in
>>            status_cmd() instead of relying on add--interactive's Perl
>>       -    functions to build print the numstat.
>>       +    functions to print the numstat.
>>       +
>>       +    If an error occurs, it will be reported, but the Perl 
>> script will
>>       +    not exit, since the add--helper is called within an eval 
>> block.
>>       +
>>       +    As the Perl script will go away soon, so will this 
>> scenario, where
>>       +    the built-in helper is called  from the Perl script. 
>> Combined with
>>       +    the fact that it would be hard to test, we'll pass on adding
>>       +    a regression test for this.
>>            Signed-off-by: Daniel Ferreira <bnmvco@gmail.com>
>>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>>       +    Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
>>         diff --git a/git-add--interactive.perl 
>> b/git-add--interactive.perl
>>         --- a/git-add--interactive.perl
>>       @@ -19,7 +28,8 @@
>>        -    list_and_choose({ LIST_ONLY => 1, HEADER => $status_head },
>>        -            list_modified());
>>        -    print "\n";
>>       -+    system(qw(git add--helper --status));
>>       ++    my @status_cmd = ("git", "add--helper", "--status");
>>       ++    !system(@status_cmd) or die "@status_cmd exited with code 
>> $?";
>>         }
>>         sub say_n_paths {
>>   5:  581b108c9c = 5:  ab16afd1d5 add-interactive.c: implement 
>> show-help command
>>   6:  aede733318 ! 6:  0a27304a84 t3701-add-interactive: test 
>> add_i_show_help()
>>       @@ -7,6 +7,7 @@
>>            Also, add it before changing git-add--interactive.perl's 
>> help_cmd
>>            to demonstrate that there are no changes introduced by the
>>            conversion to C.
>>       +
>>            Prefix git add -i call with GIT_PAGER_IN_USE=true TERM=vt100
>>            to force colored output on Windows.
>>       @@ -21,7 +22,7 @@
>>        +test_expect_success 'show help from add--helper' '
>>        +    git reset --hard &&
>>       -+    cat >expect <<-\EOF &&
>>       ++    cat >expect <<-EOF &&
>>        +
>>        +    <BOLD>*** Commands ***<RESET>
>>        +      1: <BOLD;BLUE>s<RESET>tatus      2: 
>> <BOLD;BLUE>u<RESET>pdate      3: <BOLD;BLUE>r<RESET>evert      4: 
>> <BOLD;BLUE>a<RESET>dd untracked
>>       @@ -35,7 +36,7 @@
>>        +    <BOLD>*** Commands ***<RESET>
>>        +      1: <BOLD;BLUE>s<RESET>tatus      2: 
>> <BOLD;BLUE>u<RESET>pdate      3: <BOLD;BLUE>r<RESET>evert      4: 
>> <BOLD;BLUE>a<RESET>dd untracked
>>        +      5: <BOLD;BLUE>p<RESET>atch      6: 
>> <BOLD;BLUE>d<RESET>iff      7: <BOLD;BLUE>q<RESET>uit      8: 
>> <BOLD;BLUE>h<RESET>elp
>>       -+    <BOLD;BLUE>What now<RESET>>
>>       ++    <BOLD;BLUE>What now<RESET>>$SP
>>        +    Bye.
>>        +    EOF
>>        +    test_write_lines h | GIT_PAGER_IN_USE=true TERM=vt100 git 
>> add -i >actual.colored &&
>>   7:  b9a1a7e37a ! 7:  ca2a7c4375 add--interactive.perl: use 
>> add--helper --show-help for help_cmd
>>       @@ -5,7 +5,15 @@
>>            Change help_cmd sub in git-add--interactive.perl to use
>>            show-help command from builtin add--helper.
>>       +    If an error occurs, it will be reported, but the Perl 
>> script will
>>       +    not exit, since the add--helper is called within an eval 
>> block.
>>       +
>>       +    Just like the change where the Perl script calls the 
>> add--helper
>>       +    to print the numstat, also here we forgo adding a 
>> regression test:
>>       +    the Perl script is on its way out (and this patch is part 
>> of that journey).
>>       +
>>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>>       +    Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
>>         diff --git a/git-add--interactive.perl 
>> b/git-add--interactive.perl
>>         --- a/git-add--interactive.perl
>>       @@ -24,7 +32,8 @@
>>        -diff          - view diff between HEAD and index
>>        -add untracked - add contents of untracked files to the staged 
>> set of changes
>>        -EOF
>>       -+    system(qw(git add--helper --show-help));
>>       ++    my @help_cmd = ("git", "add--helper", "--show-help");
>>       ++    !system(@help_cmd) or die "@help_cmd exited with code $?";
>>         }
>>         sub process_args {
>>


^ permalink raw reply	[relevance 0%]

* Re: [PATCH v4 0/7] Turn git add-i into built-in
  @ 2019-01-25 12:37  0%   ` Slavica Djukic
  2019-02-01 14:37  0%     ` Phillip Wood
    1 sibling, 1 reply; 9+ results
From: Slavica Djukic @ 2019-01-25 12:37 UTC (permalink / raw)
  To: Slavica Đukić via GitGitGadget, git; +Cc: phillip.wood

Hi Phillip,

Sorry for omitting you in Cc, again.
I accidentally wrote yours and Ævar's email prefixed with Cc:, rather 
then separating
them with comma, like Johannes said I should.

-Slavica

On 25-Jan-19 1:23 PM, Slavica Đukić via GitGitGadget wrote:
> This is the first version of a patch series to start porting
> git-add--interactive from Perl to C. Daniel Ferreira's patch series used as
> a head start:
> https://public-inbox.org/git/1494907234-28903-1-git-send-email-bnmvco@gmail.com/t/#u
>
> Changes since v3:
>
>   * add error check when calling add--helper's functions from
>     git-add--interactive.perl
>   * replace trailing whitespace in the test with variable $SP used in earlier
>     tests
>
> Cc: Phillip Wood phillip.wood@dunelm.org.uk [phillip.wood@dunelm.org.uk]
>
> Daniel Ferreira (4):
>    diff: export diffstat interface
>    add--helper: create builtin helper for interactive add
>    add-interactive.c: implement status command
>    add--interactive.perl: use add--helper --status for status_cmd
>
> Slavica Djukic (3):
>    add-interactive.c: implement show-help command
>    t3701-add-interactive: test add_i_show_help()
>    add--interactive.perl: use add--helper --show-help for help_cmd
>
>   .gitignore                 |   1 +
>   Makefile                   |   2 +
>   add-interactive.c          | 263 +++++++++++++++++++++++++++++++++++++
>   add-interactive.h          |  10 ++
>   builtin.h                  |   1 +
>   builtin/add--helper.c      |  43 ++++++
>   diff.c                     |  36 ++---
>   diff.h                     |  18 +++
>   git-add--interactive.perl  |  17 +--
>   git.c                      |   1 +
>   t/t3701-add-interactive.sh |  24 ++++
>   11 files changed, 381 insertions(+), 35 deletions(-)
>   create mode 100644 add-interactive.c
>   create mode 100644 add-interactive.h
>   create mode 100644 builtin/add--helper.c
>
>
> base-commit: b21ebb671bb7dea8d342225f0d66c41f4e54d5ca
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-103%2FslavicaDj%2Fadd-i-v4
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-103/slavicaDj/add-i-v4
> Pull-Request: https://github.com/gitgitgadget/git/pull/103
>
> Range-diff vs v3:
>
>   1:  737767b6f4 = 1:  737767b6f4 diff: export diffstat interface
>   2:  91b1963125 = 2:  91b1963125 add--helper: create builtin helper for interactive add
>   3:  d247ef69fe = 3:  d247ef69fe add-interactive.c: implement status command
>   4:  4950c889aa ! 4:  fb3f9378ac add--interactive.perl: use add--helper --status for status_cmd
>       @@ -2,12 +2,21 @@
>        
>            add--interactive.perl: use add--helper --status for status_cmd
>        
>       -    Call the newly introduced add--helper builtin on
>       +    Call the newly introduced add--helper builtin in
>            status_cmd() instead of relying on add--interactive's Perl
>       -    functions to build print the numstat.
>       +    functions to print the numstat.
>       +
>       +    If an error occurs, it will be reported, but the Perl script will
>       +    not exit, since the add--helper is called within an eval block.
>       +
>       +    As the Perl script will go away soon, so will this scenario, where
>       +    the built-in helper is called  from the Perl script. Combined with
>       +    the fact that it would be hard to test, we'll pass on adding
>       +    a regression test for this.
>        
>            Signed-off-by: Daniel Ferreira <bnmvco@gmail.com>
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>       +    Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
>        
>         diff --git a/git-add--interactive.perl b/git-add--interactive.perl
>         --- a/git-add--interactive.perl
>       @@ -19,7 +28,8 @@
>        -	list_and_choose({ LIST_ONLY => 1, HEADER => $status_head },
>        -			list_modified());
>        -	print "\n";
>       -+	system(qw(git add--helper --status));
>       ++	my @status_cmd = ("git", "add--helper", "--status");
>       ++	!system(@status_cmd) or die "@status_cmd exited with code $?";
>         }
>         
>         sub say_n_paths {
>   5:  581b108c9c = 5:  ab16afd1d5 add-interactive.c: implement show-help command
>   6:  aede733318 ! 6:  0a27304a84 t3701-add-interactive: test add_i_show_help()
>       @@ -7,6 +7,7 @@
>            Also, add it before changing git-add--interactive.perl's help_cmd
>            to demonstrate that there are no changes introduced by the
>            conversion to C.
>       +
>            Prefix git add -i call with GIT_PAGER_IN_USE=true TERM=vt100
>            to force colored output on Windows.
>        
>       @@ -21,7 +22,7 @@
>         
>        +test_expect_success 'show help from add--helper' '
>        +	git reset --hard &&
>       -+	cat >expect <<-\EOF &&
>       ++	cat >expect <<-EOF &&
>        +
>        +	<BOLD>*** Commands ***<RESET>
>        +	  1: <BOLD;BLUE>s<RESET>tatus	  2: <BOLD;BLUE>u<RESET>pdate	  3: <BOLD;BLUE>r<RESET>evert	  4: <BOLD;BLUE>a<RESET>dd untracked
>       @@ -35,7 +36,7 @@
>        +	<BOLD>*** Commands ***<RESET>
>        +	  1: <BOLD;BLUE>s<RESET>tatus	  2: <BOLD;BLUE>u<RESET>pdate	  3: <BOLD;BLUE>r<RESET>evert	  4: <BOLD;BLUE>a<RESET>dd untracked
>        +	  5: <BOLD;BLUE>p<RESET>atch	  6: <BOLD;BLUE>d<RESET>iff	  7: <BOLD;BLUE>q<RESET>uit	  8: <BOLD;BLUE>h<RESET>elp
>       -+	<BOLD;BLUE>What now<RESET>>
>       ++	<BOLD;BLUE>What now<RESET>>$SP
>        +	Bye.
>        +	EOF
>        +	test_write_lines h | GIT_PAGER_IN_USE=true TERM=vt100 git add -i >actual.colored &&
>   7:  b9a1a7e37a ! 7:  ca2a7c4375 add--interactive.perl: use add--helper --show-help for help_cmd
>       @@ -5,7 +5,15 @@
>            Change help_cmd sub in git-add--interactive.perl to use
>            show-help command from builtin add--helper.
>        
>       +    If an error occurs, it will be reported, but the Perl script will
>       +    not exit, since the add--helper is called within an eval block.
>       +
>       +    Just like the change where the Perl script calls the add--helper
>       +    to print the numstat, also here we forgo adding a regression test:
>       +    the Perl script is on its way out (and this patch is part of that journey).
>       +
>            Signed-off-by: Slavica Djukic <slawica92@hotmail.com>
>       +    Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
>        
>         diff --git a/git-add--interactive.perl b/git-add--interactive.perl
>         --- a/git-add--interactive.perl
>       @@ -24,7 +32,8 @@
>        -diff          - view diff between HEAD and index
>        -add untracked - add contents of untracked files to the staged set of changes
>        -EOF
>       -+	system(qw(git add--helper --show-help));
>       ++	my @help_cmd = ("git", "add--helper", "--show-help");
>       ++	!system(@help_cmd) or die "@help_cmd exited with code $?";
>         }
>         
>         sub process_args {
>

^ permalink raw reply	[relevance 0%]

* Re: [PATCH v2 0/4] Port git-add--interactive.perl:status_cmd to C
  @ 2018-11-26 17:18  0% ` Slavica Djukic
  0 siblings, 0 replies; 9+ results
From: Slavica Djukic @ 2018-11-26 17:18 UTC (permalink / raw)
  To: Daniel Ferreira, git; +Cc: gitster, Johannes.Schindelin, avarab, jrnieder

Hi Daniel,

On 16-May-17 6:00 AM, Daniel Ferreira wrote:
> This is the second version of a patch series to start porting
> git-add--interactive from Perl to C.
>
> Series:
> v1: https://public-inbox.org/git/1494009820-2090-1-git-send-email-bnmvco@gmail.com/
>
> Travis CI build: https://travis-ci.org/theiostream/git/builds/232669894
>
> I have applied most of the changes suggested by Johannes and Ævar (thank
> you!). The one exception was Johannes' request to make this a WIP patch
> series with a sort-of "design" of what's next to come. I did not do
> this because I still have no clue...! I'll begin experimenting on
> update_cmd() to see if I gain some insight on this issue that I could
> bring to this series. I do think this would be a good idea, though! :)


I am Slavica Đukic, Outreachy intern for Git (Dec-March 2018/19 round).

Project I'll be working on is "Turn git add -i to built-in".

Would you mind if I use your work so far as head start?


>
> -- Daniel.
>
> Daniel Ferreira (4):
>    diff: export diffstat interface
>    add--helper: create builtin helper for interactive add
>    add--helper: implement interactive status command
>    add--interactive: use add-interactive--helper for status_cmd
>
>   .gitignore                |   1 +
>   Makefile                  |   1 +
>   builtin.h                 |   1 +
>   builtin/add--helper.c     | 285 ++++++++++++++++++++++++++++++++++++++++++++++
>   diff.c                    |  17 +--
>   diff.h                    |  19 +++-
>   git-add--interactive.perl |   4 +-
>   git.c                     |   1 +
>   8 files changed, 309 insertions(+), 20 deletions(-)
>   create mode 100644 builtin/add--helper.c
>
> --
> 2.7.4 (Apple Git-66)
>
>
>
Thank you,
Slavica

^ permalink raw reply	[relevance 0%]

* Measuring Community Involvement (was Re: Contributor Summit planning)
  @ 2018-08-14 17:43  5%             ` Derrick Stolee
  0 siblings, 0 replies; 9+ results
From: Derrick Stolee @ 2018-08-14 17:43 UTC (permalink / raw)
  To: Jeff King, Stefan Beller
  Cc: Junio C Hamano, Ævar Arnfjörð Bjarmason, git,
	Duy Nguyen, Derrick Stolee

On 8/13/2018 5:54 PM, Jeff King wrote:
> So I try not to think too hard on metrics, and just use them to get a
> rough view on who is active.

I've been very interested in measuring community involvement, with the 
knowledge that any metric is flawed and we should not ever say "this 
metric is how we measure the quality of a contributor". It can be 
helpful, though, to track some metrics and their change over time.

Here are a few measurements we can make:

1. Number of (non-merge) commit author tag-lines.

     using git repo:

   > git shortlog --no-merges --since 2017 -sne junio/next | head -n 20
    284  Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
    257  Jeff King <peff@peff.net>
    206  Stefan Beller <stefanbeller@gmail.com>
    192  brian m. carlson <sandals@crustytoothpaste.net>
    159  Brandon Williams <bmwill@google.com>
    149  Junio C Hamano <gitster@pobox.com>
    137  Elijah Newren <newren@gmail.com>
    116  René Scharfe <l.s.r@web.de>
    112  Johannes Schindelin <Johannes.Schindelin@gmx.de>
    105  Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     96  Jonathan Tan <jonathantanmy@google.com>
     93  SZEDER Gábor <szeder.dev@gmail.com>
     78  Derrick Stolee <dstolee@microsoft.com>
     76  Martin Ågren <martin.agren@gmail.com>
     66  Michael Haggerty <mhagger@alum.mit.edu>
     61  Eric Sunshine <sunshine@sunshineco.com>
     46  Christian Couder <chriscool@tuxfamily.org>
     36  Phillip Wood <phillip.wood@dunelm.org.uk>
     35  Jonathan Nieder <jrnieder@gmail.com>
     33  Thomas Gummerer <t.gummerer@gmail.com>

2. Number of other commit tag-lines (Reviewed-By, Helped-By, 
Reported-By, etc.).

     Using git repo:

     $ git log --since=2018-01-01 junio/next|grep by:|grep -v 
Signed-off-by:|sort|uniq -c|sort -nr|head -n 20

      66     Reviewed-by: Stefan Beller <sbeller@google.com>
      22     Reviewed-by: Jeff King <peff@peff.net>
      19     Reviewed-by: Jonathan Tan <jonathantanmy@google.com>
      12     Helped-by: Eric Sunshine <sunshine@sunshineco.com>
      11     Helped-by: Junio C Hamano <gitster@pobox.com>
       9     Helped-by: Jeff King <peff@peff.net>
       8     Reviewed-by: Elijah Newren <newren@gmail.com>
       7     Reported-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
       7     Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>
       7     Acked-by: Brandon Williams <bmwill@google.com>
       6     Reviewed-by: Eric Sunshine <sunshine@sunshineco.com>
       6     Helped-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
       5     Mentored-by: Christian Couder <christian.couder@gmail.com>
       5     Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
       4     Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
       4     Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
       4     Helped-by: Stefan Beller <sbeller@google.com>
       4     Helped-by: René Scharfe <l.s.r@web.de>
       3     Reviewed-by: Martin Ågren <martin.agren@gmail.com>
       3     Reviewed-by: Lars Schneider <larsxschneider@gmail.com>

     (There does not appear to be enough density here to make a useful 
metric.)

3. Number of email messages sent.

     Using mailing list repo:

$ git shortlog --since 2017 -sne | head -n 20
   3749  Junio C Hamano <gitster@pobox.com>
   2213  Stefan Beller <sbeller@google.com>
   2112  Jeff King <peff@peff.net>
   1106  Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
   1028  Johannes Schindelin <Johannes.Schindelin@gmx.de>
    965  Ævar Arnfjörð Bjarmason <avarab@gmail.com>
    956  Brandon Williams <bmwill@google.com>
    947  Eric Sunshine <sunshine@sunshineco.com>
    890  Elijah Newren <newren@gmail.com>
    753  brian m. carlson <sandals@crustytoothpaste.net>
    677  Duy Nguyen <pclouds@gmail.com>
    646  Jonathan Nieder <jrnieder@gmail.com>
    629  Derrick Stolee <stolee@gmail.com>
    545  Christian Couder <christian.couder@gmail.com>
    515  Jonathan Tan <jonathantanmy@google.com>
    425  Johannes Schindelin <johannes.schindelin@gmx.de>
    425  Martin Ågren <martin.agren@gmail.com>
    420  Jeff Hostetler <git@jeffhostetler.com>
    420  SZEDER Gábor <szeder.dev@gmail.com>
    363  Phillip Wood <phillip.wood@talktalk.net>

3. Number of threads started by user.

     (For this and the measurements below, I imported emails into a SQL 
table with columns [commit, author, date, message-id, in-reply-to, 
subject] and ran queries)

SELECT TOP 20
        COUNT(*) as NumSent
       ,[Author]
   FROM [git].[dbo].[mailing-list]
   WHERE [In-Reply-To] = ''
         AND CONVERT(DATETIME,[Date]) > CONVERT(DATETIME, '01-01-2018 
00:00')
GROUP BY [Author]
ORDER BY NumSent DESC

| NumSent | Author                     |
|---------|----------------------------|
| 76      | Junio C Hamano             |
| 64      | Stefan Beller              |
| 54      | Philip Oakley              |
| 50      | Nguyá»…n Thái Ngọc Duy   |
| 49      | Robert P. J. Day           |
| 47      | Christian Couder           |
| 36      | Ramsay Jones               |
| 34      | Elijah Newren              |
| 34      | SZEDER Gábor              |
| 33      | Johannes Schindelin        |
| 31      | Jeff King                  |
| 30      | Ævar Arnfjörð Bjarmason |
| 24      | Jonathan Tan               |
| 22      | Alban Gruin                |
| 22      | brian m. carlson           |
| 18      | Randall S. Becker          |
| 15      | Paul-Sebastian Ungureanu   |
| 15      | Jeff Hostetler             |
| 15      | Brandon Williams           |
| 15      | Luke Diamand               |

4. Number of threads where the user participated

(This is measured by completing the transitive closure of In-Reply-To 
edges into a new 'BaseMessage' column.)

SELECT TOP 20
        COUNT(BaseMessage) as NumResponded
       ,Author
   FROM [git].[dbo].[mailing-list]
   WHERE [In-Reply-To] <> ''
         AND CONVERT(DATETIME,[Date]) > CONVERT(DATETIME, '01-01-2018 
00:00')
GROUP BY Author
ORDER BY NumResponded DESC

| NumResponded | Author                     |
|--------------|----------------------------|
| 2084         | Junio C Hamano             |
| 1596         | Stefan Beller              |
| 1211         | Jeff King                  |
| 1120         | Johannes Schindelin        |
| 1021         | Nguyá»…n Thái Ngọc Duy   |
| 799          | Eric Sunshine              |
| 797          | Ævar Arnfjörð Bjarmason |
| 693          | Brandon Williams           |
| 654          | Duy Nguyen                 |
| 600          | Elijah Newren              |
| 593          | brian m. carlson           |
| 591          | Derrick Stolee             |
| 318          | SZEDER Gábor              |
| 299          | Jonathan Tan               |
| 286          | Christian Couder           |
| 263          | Jonathan Nieder            |
| 257          | Phillip Wood               |
| 256          | Derrick Stolee             |
| 238          | Taylor Blau                |
| 216          | Martin Ã…gren              |

(Note, some names have not been de-duplicated across multiple email 
addresses, but the email addresses are removed from these tables since 
I'm using a markdown generator that strips the emails in < >.)

If you have other ideas for fun measurements, then please let me know.

Thanks,

-Stolee



^ permalink raw reply	[relevance 5%]

* [PATCH v2 06/11] get_short_oid: sort ambiguous objects by type, then SHA-1
  @ 2018-05-01 13:03  3% ` Derrick Stolee
  0 siblings, 0 replies; 9+ results
From: Derrick Stolee @ 2018-05-01 13:03 UTC (permalink / raw)
  To: git@vger.kernel.org, avarab@gmail.com; +Cc: stolee@gmail.com, Derrick Stolee

From: Ævar Arnfjörð Bjarmason <avarab@gmail.com>

Here is what I mean by sorting during for_each_abbrev(). This seems to work for
me, so I don't know what the issue is with this one-pass approach.

Thanks,
-Stolee

-- >8 --

Change the output emitted when an ambiguous object is encountered so
that we show tags first, then commits, followed by trees, and finally
blobs. Within each type we show objects in hashcmp() order. Before
this change the objects were only ordered by hashcmp().

The reason for doing this is that the output looks better as a result,
e.g. the v2.17.0 tag before this change on "git show e8f2" would
display:

    hint: The candidates are:
    hint:   e8f2093055 tree
    hint:   e8f21caf94 commit 2013-06-24 - bash prompt: print unique detached HEAD abbreviated object name
    hint:   e8f21d02f7 blob
    hint:   e8f21d577c blob
    hint:   e8f25a3a50 tree
    hint:   e8f26250fa commit 2017-02-03 - Merge pull request #996 from jeffhostetler/jeffhostetler/register_rename_src
    hint:   e8f2650052 tag v2.17.0
    hint:   e8f2867228 blob
    hint:   e8f28d537c tree
    hint:   e8f2a35526 blob
    hint:   e8f2bc0c06 commit 2015-05-10 - Documentation: note behavior for multiple remote.url entries
    hint:   e8f2cf6ec0 tree

Now we'll instead show:

    hint:   e8f2650052 tag v2.17.0
    hint:   e8f21caf94 commit 2013-06-24 - bash prompt: print unique detached HEAD abbreviated object name
    hint:   e8f26250fa commit 2017-02-03 - Merge pull request #996 from jeffhostetler/jeffhostetler/register_rename_src
    hint:   e8f2bc0c06 commit 2015-05-10 - Documentation: note behavior for multiple remote.url entries
    hint:   e8f2093055 tree
    hint:   e8f25a3a50 tree
    hint:   e8f28d537c tree
    hint:   e8f2cf6ec0 tree
    hint:   e8f21d02f7 blob
    hint:   e8f21d577c blob
    hint:   e8f2867228 blob
    hint:   e8f2a35526 blob

Since we show the commit data in the output that's nicely aligned once
we sort by object type. The decision to show tags before commits is
pretty arbitrary. I don't want to order by object_type since there
tags come last after blobs, which doesn't make sense if we want to
show the most important things first.

I could display them after commits, but it's much less likely that
we'll display a tag, so if there is one it makes sense to show it
prominently at the top.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
---
 sha1-name.c                         | 31 +++++++++++++++++++++++++++++
 t/t1512-rev-parse-disambiguation.sh | 21 +++++++++++++++++++
 2 files changed, 52 insertions(+)

diff --git a/sha1-name.c b/sha1-name.c
index 5deebab56d..0336630c64 100644
--- a/sha1-name.c
+++ b/sha1-name.c
@@ -385,6 +385,34 @@ static int collect_ambiguous(const struct object_id *oid, void *data)
 	return 0;
 }
 
+static int sort_ambiguous(const void *a, const void *b)
+{
+	int a_type = oid_object_info(a, NULL);
+	int b_type = oid_object_info(b, NULL);
+	int a_type_sort;
+	int b_type_sort;
+
+	/*
+	 * Sorts by hash within the same object type, just as
+	 * oid_array_for_each_unique() would do.
+	 */
+	if (a_type == b_type)
+		return oidcmp(a, b);
+
+	/*
+	 * Between object types show tags, then commits, and finally
+	 * trees and blobs.
+	 *
+	 * The object_type enum is commit, tree, blob, tag, but we
+	 * want tag, commit, tree blob. Cleverly (perhaps too
+	 * cleverly) do that with modulus, since the enum assigns 1 to
+	 * commit, so tag becomes 0.
+	 */
+	a_type_sort = a_type % 4;
+	b_type_sort = b_type % 4;
+	return a_type_sort > b_type_sort ? 1 : -1;
+}
+
 static int get_short_oid(const char *name, int len, struct object_id *oid,
 			  unsigned flags)
 {
@@ -451,6 +479,9 @@ int for_each_abbrev(const char *prefix, each_abbrev_fn fn, void *cb_data)
 	find_short_object_filename(&ds);
 	find_short_packed_object(&ds);
 
+	QSORT(collect.oid, collect.nr, sort_ambiguous);
+	collect.sorted = 1;
+
 	ret = oid_array_for_each_unique(&collect, fn, cb_data);
 	oid_array_clear(&collect);
 	return ret;
diff --git a/t/t1512-rev-parse-disambiguation.sh b/t/t1512-rev-parse-disambiguation.sh
index c7ceda2f21..74e7d9c178 100755
--- a/t/t1512-rev-parse-disambiguation.sh
+++ b/t/t1512-rev-parse-disambiguation.sh
@@ -364,4 +364,25 @@ test_expect_success 'core.disambiguate does not override context' '
 		git -c core.disambiguate=committish rev-parse $sha1^{tree}
 '
 
+test_expect_success C_LOCALE_OUTPUT 'ambiguous commits are printed by type first, then hash order' '
+	test_must_fail git rev-parse 0000 2>stderr &&
+	grep ^hint: stderr >hints &&
+	grep 0000 hints >objects &&
+	cat >expected <<-\EOF &&
+	tag
+	commit
+	tree
+	blob
+	EOF
+	awk "{print \$3}" <objects >objects.types &&
+	uniq <objects.types >objects.types.uniq &&
+	test_cmp expected objects.types.uniq &&
+	for type in tag commit tree blob
+	do
+		grep $type objects >$type.objects &&
+		sort $type.objects >$type.objects.sorted &&
+		test_cmp $type.objects.sorted $type.objects
+	done
+'
+
 test_done
-- 
2.17.0.39.g685157f7fb


^ permalink raw reply related	[relevance 3%]

* [PATCH v5 0/4] Detection of directory renames
@ 2010-10-09 21:31  7% Yann Dirson
  0 siblings, 0 replies; 9+ results
From: Yann Dirson @ 2010-10-09 21:31 UTC (permalink / raw)
  To: git; +Cc: Yann Dirson

Evolutions from v4 to v5:

(Jonathan Nieder) use memcpy, not strncpy overkill
(Jonathan Nieder) split 2 funcs out of diffcore_bulk_renames
(Jonathan Nieder) more comments
(Jonathan Nieder) avoid allocating often-useless filespec too early
(Jonathan Nieder) split into new func
(Ævar Arnfjörð Bjarmason) convert C99 comments intended to stay to C89 ones

(Jonathan Nieder, Ævar Arnfjörð Bjarmason) reworked style of test script
(Jonathan Nieder, Sverre Rabbelier) use compare_diff_raw, not compare_diff_patch;
	anonymize hashes and scores
(Jonathan Nieder) use "git commit" in test instead of only plumbing, and use test_tick

listed a number of additional FIXME's
changed wording "factorization" -> "bulk move"
changed --detect-dir-renames to --detect-bulk-moves and
	--hide-dir-rename-details to --hide-bulk-move-details
first attempt at showing the "/*" suffix in bulk moves, for comment
stop maintaining testcases for --hide-bulk-move-details, I'm just keeping
	the patch adding the flag in sync with other code changes anyway.


Yann Dirson (4):
  Introduce bulk-move detection in diffcore.
  Add testcases for the --detect-bulk-moves diffcore flag.
  [RFC] Only show bulkmoves in output.
  [RFC] Allow hiding renames of individual files involved in a
    directory rename.

 diff-lib.c                       |    6 +-
 diff.c                           |   12 ++
 diff.h                           |    6 +
 diffcore-rename.c                |  349 +++++++++++++++++++++++++++++++++++++-
 diffcore.h                       |    1 +
 t/t4046-diff-rename-factorize.sh |  251 +++++++++++++++++++++++++++
 tree-diff.c                      |    4 +-
 7 files changed, 617 insertions(+), 12 deletions(-)
 create mode 100755 t/t4046-diff-rename-factorize.sh

-- 
1.7.2.3

^ permalink raw reply	[relevance 7%]

* Re: Has anyone looked at Gettext support for Git itself?
  @ 2010-05-17 15:04  5% ` Marc Weber
  0 siblings, 0 replies; 9+ results
From: Marc Weber @ 2010-05-17 15:04 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason; +Cc: Git Mailing List

Excerpts from Ævar Arnfjörð Bjarmason's message of Sun May 16 00:10:09 +0200 2010:
> I couldn't find anything about this in the list archives. Have there
> been any discussions of adding internationalization support to Git
> itself? I.e. the interface messages that the core Git utilities emit.
> 
> I tried to get started with integrating GNU Gettext, but gnuish
> assumptions it makes about building make it a bit hard.
> 
> Is there perhaps another gettext implementation that would be more
> suitable for Git?
> 
> I'd be interested in submitting patches to make the existing strings
> translatable if someone could get the tool + build skeleton going.

It may sound silly and stupid: My coworker has had much trouble because
he doesn't know English at all.
You could help those people very much by creating a git-translator.org
page where you can copy paste failures which are translated only.

In the end you must have seen any failure multiple times to cope with
it - no matter which language this message was written in. However
having an understandable text may help.

Marc Weber

^ permalink raw reply	[relevance 5%]

* [PATCH 1/2] git-svn: quiet down tests and fix some unportable shell constructs
@ 2006-12-27  0:27  6% Eric Wong
  0 siblings, 0 replies; 9+ results
From: Eric Wong @ 2006-12-27  0:27 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Eric Wong

The latest changes to git-commit have made it more verbose; and
I was running the setup of the tests outside of the test_expect_*,
so errors in those were not caught.  Now we move them to where
they can be eval'ed and have their output trapped.

export var=value has been removed

Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
 t/t9100-git-svn-basic.sh |  258 +++++++++++++++++++++++-----------------------
 1 files changed, 127 insertions(+), 131 deletions(-)

diff --git a/t/t9100-git-svn-basic.sh b/t/t9100-git-svn-basic.sh
index 0edf19e..c22fe47 100755
--- a/t/t9100-git-svn-basic.sh
+++ b/t/t9100-git-svn-basic.sh
@@ -19,180 +19,176 @@ esac
 
 echo 'define NO_SVN_TESTS to skip git-svn tests'
 
-mkdir import
-cd import
-
-echo foo > foo
-if test -z "$NO_SYMLINK"
-then
-	ln -s foo foo.link
-fi
-mkdir -p dir/a/b/c/d/e
-echo 'deep dir' > dir/a/b/c/d/e/file
-mkdir -p bar
-echo 'zzz' > bar/zzz
-echo '#!/bin/sh' > exec.sh
-chmod +x exec.sh
-svn import -m 'import for git-svn' . "$svnrepo" >/dev/null
-
-cd ..
-rm -rf import
-
 test_expect_success \
-    'initialize git-svn' \
-    "git-svn init $svnrepo"
+    'initialize git-svn' "
+	mkdir import &&
+	cd import &&
+	echo foo > foo &&
+	if test -z '$NO_SYMLINK'
+	then
+		ln -s foo foo.link
+	fi
+	mkdir -p dir/a/b/c/d/e &&
+	echo 'deep dir' > dir/a/b/c/d/e/file &&
+	mkdir bar &&
+	echo 'zzz' > bar/zzz &&
+	echo '#!/bin/sh' > exec.sh &&
+	chmod +x exec.sh &&
+	svn import -m 'import for git-svn' . $svnrepo >/dev/null &&
+	cd .. &&
+	rm -rf import &&
+	git-svn init $svnrepo"
 
 test_expect_success \
     'import an SVN revision into git' \
     'git-svn fetch'
 
-test_expect_success "checkout from svn" "svn co $svnrepo $SVN_TREE"
+test_expect_success "checkout from svn" "svn co $svnrepo '$SVN_TREE'"
 
 name='try a deep --rmdir with a commit'
-git checkout -f -b mybranch remotes/git-svn
-mv dir/a/b/c/d/e/file dir/file
-cp dir/file file
-git update-index --add --remove dir/a/b/c/d/e/file dir/file file
-git commit -m "$name"
-
-test_expect_success "$name" \
-    "git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch &&
-     svn up $SVN_TREE &&
-     test -d $SVN_TREE/dir && test ! -d $SVN_TREE/dir/a"
+test_expect_success "$name" "
+	git checkout -f -b mybranch remotes/git-svn &&
+	mv dir/a/b/c/d/e/file dir/file &&
+	cp dir/file file &&
+	git update-index --add --remove dir/a/b/c/d/e/file dir/file file &&
+	git commit -m '$name' &&
+	git-svn set-tree --find-copies-harder --rmdir \
+		remotes/git-svn..mybranch &&
+	svn up '$SVN_TREE' &&
+	test -d '$SVN_TREE'/dir && test ! -d '$SVN_TREE'/dir/a"
 
 
 name='detect node change from file to directory #1'
-mkdir dir/new_file
-mv dir/file dir/new_file/file
-mv dir/new_file dir/file
-git update-index --remove dir/file
-git update-index --add dir/file/file
-git commit -m "$name"
-
-test_expect_failure "$name" \
-    'git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch' \
-    || true
+test_expect_failure "$name" "
+	mkdir dir/new_file &&
+	mv dir/file dir/new_file/file &&
+	mv dir/new_file dir/file &&
+	git update-index --remove dir/file &&
+	git update-index --add dir/file/file &&
+	git commit -m '$name'  &&
+	git-svn set-tree --find-copies-harder --rmdir \
+		remotes/git-svn..mybranch" || true
 
 
 name='detect node change from directory to file #1'
-rm -rf dir $GIT_DIR/index
-git checkout -f -b mybranch2 remotes/git-svn
-mv bar/zzz zzz
-rm -rf bar
-mv zzz bar
-git update-index --remove -- bar/zzz
-git update-index --add -- bar
-git commit -m "$name"
-
-test_expect_failure "$name" \
-    'git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch2' \
-    || true
+test_expect_failure "$name" "
+	rm -rf dir '$GIT_DIR'/index &&
+	git checkout -f -b mybranch2 remotes/git-svn &&
+	mv bar/zzz zzz &&
+	rm -rf bar &&
+	mv zzz bar &&
+	git update-index --remove -- bar/zzz &&
+	git update-index --add -- bar &&
+	git commit -m '$name' &&
+	git-svn set-tree --find-copies-harder --rmdir \
+		remotes/git-svn..mybranch2" || true
 
 
 name='detect node change from file to directory #2'
-rm -f $GIT_DIR/index
-git checkout -f -b mybranch3 remotes/git-svn
-rm bar/zzz
-git-update-index --remove bar/zzz
-mkdir bar/zzz
-echo yyy > bar/zzz/yyy
-git-update-index --add bar/zzz/yyy
-git commit -m "$name"
-
-test_expect_failure "$name" \
-    'git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch3' \
-    || true
+test_expect_failure "$name" "
+	rm -f '$GIT_DIR'/index &&
+	git checkout -f -b mybranch3 remotes/git-svn &&
+	rm bar/zzz &&
+	git-update-index --remove bar/zzz &&
+	mkdir bar/zzz &&
+	echo yyy > bar/zzz/yyy &&
+	git-update-index --add bar/zzz/yyy &&
+	git commit -m '$name' &&
+	git-svn set-tree --find-copies-harder --rmdir \
+		remotes/git-svn..mybranch3" || true
 
 
 name='detect node change from directory to file #2'
-rm -f $GIT_DIR/index
-git checkout -f -b mybranch4 remotes/git-svn
-rm -rf dir
-git update-index --remove -- dir/file
-touch dir
-echo asdf > dir
-git update-index --add -- dir
-git commit -m "$name"
-
-test_expect_failure "$name" \
-    'git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch4' \
-    || true
+test_expect_failure "$name" "
+	rm -f '$GIT_DIR'/index &&
+	git checkout -f -b mybranch4 remotes/git-svn &&
+	rm -rf dir &&
+	git update-index --remove -- dir/file &&
+	touch dir &&
+	echo asdf > dir &&
+	git update-index --add -- dir &&
+	git commit -m '$name' &&
+	git-svn set-tree --find-copies-harder --rmdir \
+		remotes/git-svn..mybranch4" || true
 
 
 name='remove executable bit from a file'
-rm -f $GIT_DIR/index
-git checkout -f -b mybranch5 remotes/git-svn
-chmod -x exec.sh
-git update-index exec.sh
-git commit -m "$name"
-
-test_expect_success "$name" \
-    "git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
-     svn up $SVN_TREE &&
-     test ! -x $SVN_TREE/exec.sh"
+test_expect_success "$name" "
+	rm -f '$GIT_DIR'/index &&
+	git checkout -f -b mybranch5 remotes/git-svn &&
+	chmod -x exec.sh &&
+	git update-index exec.sh &&
+	git commit -m '$name' &&
+	git-svn set-tree --find-copies-harder --rmdir \
+		remotes/git-svn..mybranch5 &&
+	svn up '$SVN_TREE' &&
+	test ! -x '$SVN_TREE'/exec.sh"
 
 
 name='add executable bit back file'
-chmod +x exec.sh
-git update-index exec.sh
-git commit -m "$name"
-
-test_expect_success "$name" \
-    "git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
-     svn up $SVN_TREE &&
-     test -x $SVN_TREE/exec.sh"
-
+test_expect_success "$name" "
+	chmod +x exec.sh &&
+	git update-index exec.sh &&
+	git commit -m '$name' &&
+	git-svn set-tree --find-copies-harder --rmdir \
+		remotes/git-svn..mybranch5 &&
+	svn up '$SVN_TREE' &&
+	test -x '$SVN_TREE'/exec.sh"
 
 
 if test -z "$NO_SYMLINK"
 then
 	name='executable file becomes a symlink to bar/zzz (file)'
-	rm exec.sh
-	ln -s bar/zzz exec.sh
-	git update-index exec.sh
-	git commit -m "$name"
 
-	test_expect_success "$name" \
-	    "git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
-	     svn up $SVN_TREE &&
-	     test -L $SVN_TREE/exec.sh"
+	test_expect_success "$name" "
+		rm exec.sh &&
+		ln -s bar/zzz exec.sh &&
+		git update-index exec.sh &&
+		git commit -m '$name' &&
+		git-svn set-tree --find-copies-harder --rmdir \
+			remotes/git-svn..mybranch5 &&
+		svn up '$SVN_TREE' &&
+		test -L '$SVN_TREE'/exec.sh"
 
 	name='new symlink is added to a file that was also just made executable'
-	chmod +x bar/zzz
-	ln -s bar/zzz exec-2.sh
-	git update-index --add bar/zzz exec-2.sh
-	git commit -m "$name"
 
-	test_expect_success "$name" \
-	    "git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
-	     svn up $SVN_TREE &&
-	     test -x $SVN_TREE/bar/zzz &&
-	     test -L $SVN_TREE/exec-2.sh"
+	test_expect_success "$name" "
+		chmod +x bar/zzz &&
+		ln -s bar/zzz exec-2.sh &&
+		git update-index --add bar/zzz exec-2.sh &&
+		git commit -m '$name' &&
+		git-svn set-tree --find-copies-harder --rmdir \
+			remotes/git-svn..mybranch5 &&
+		svn up '$SVN_TREE' &&
+		test -x '$SVN_TREE'/bar/zzz &&
+		test -L '$SVN_TREE'/exec-2.sh"
 
 	name='modify a symlink to become a file'
-	echo git help > help || true
-	rm exec-2.sh
-	cp help exec-2.sh
-	git update-index exec-2.sh
-	git commit -m "$name"
-
-	test_expect_success "$name" \
-	    "git-svn set-tree --find-copies-harder --rmdir remotes/git-svn..mybranch5 &&
-	     svn up $SVN_TREE &&
-	     test -f $SVN_TREE/exec-2.sh &&
-	     test ! -L $SVN_TREE/exec-2.sh &&
-	     diff -u help $SVN_TREE/exec-2.sh"
+	test_expect_success "$name" "
+		echo git help > help || true &&
+		rm exec-2.sh &&
+		cp help exec-2.sh &&
+		git update-index exec-2.sh &&
+		git commit -m '$name' &&
+		git-svn set-tree --find-copies-harder --rmdir \
+			remotes/git-svn..mybranch5 &&
+		svn up '$SVN_TREE' &&
+		test -f '$SVN_TREE'/exec-2.sh &&
+		test ! -L '$SVN_TREE'/exec-2.sh &&
+		diff -u help $SVN_TREE/exec-2.sh"
 fi
 
 
 if test "$have_utf8" = t
 then
 	name="commit with UTF-8 message: locale: $GIT_SVN_LC_ALL"
-	echo '# hello' >> exec-2.sh
-	git update-index exec-2.sh
-	git commit -m 'éï∏'
-	export LC_ALL="$GIT_SVN_LC_ALL"
-	test_expect_success "$name" "git-svn set-tree HEAD"
+	LC_ALL="$GIT_SVN_LC_ALL"
+	export LC_ALL
+	test_expect_success "$name" "
+		echo '# hello' >> exec-2.sh &&
+		git update-index exec-2.sh &&
+		git commit -m 'éï∏' &&
+		git-svn set-tree HEAD"
 	unset LC_ALL
 else
 	echo "UTF-8 locale not set, test skipped ($GIT_SVN_LC_ALL)"
-- 
1.4.4.3.gd4ada

^ permalink raw reply related	[relevance 6%]

Results 1-9 of 9 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2006-12-27  0:27  6% [PATCH 1/2] git-svn: quiet down tests and fix some unportable shell constructs Eric Wong
2010-05-15 22:10     Has anyone looked at Gettext support for Git itself? Ævar Arnfjörð Bjarmason
2010-05-17 15:04  5% ` Marc Weber
2010-10-09 21:31  7% [PATCH v5 0/4] Detection of directory renames Yann Dirson
2017-05-16  4:00     [PATCH v2 0/4] Port git-add--interactive.perl:status_cmd to C Daniel Ferreira
2018-11-26 17:18  0% ` Slavica Djukic
2018-05-01 12:06     [PATCH v2 00/12] get_short_oid UI improvements Ævar Arnfjörð Bjarmason
2018-05-01 13:03  3% ` [PATCH v2 06/11] get_short_oid: sort ambiguous objects by type, then SHA-1 Derrick Stolee
2018-08-13 16:31     Contributor Summit planning Jeff King
2018-08-13 18:49     ` Ævar Arnfjörð Bjarmason
2018-08-13 20:36       ` Junio C Hamano
2018-08-13 20:41         ` Stefan Beller
2018-08-13 21:06           ` Jeff King
2018-08-13 21:19             ` Stefan Beller
2018-08-13 21:54               ` Jeff King
2018-08-14 17:43  5%             ` Measuring Community Involvement (was Re: Contributor Summit planning) Derrick Stolee
2019-01-21  9:13     [PATCH v3 0/7] Turn git add-i into built-in Slavica Đukić via GitGitGadget
2019-01-25 12:23     ` [PATCH v4 " Slavica Đukić via GitGitGadget
2019-01-25 12:37  0%   ` Slavica Djukic
2019-02-01 14:37  0%     ` Phillip Wood
2019-02-20 11:41       ` [PATCH v5 00/10] " Slavica Đukić via GitGitGadget
2019-03-04 10:49  0%     ` End of Outreachy internship Slavica Djukic

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).