Subject: Re: [PATCH v2] *: fix typos which duplicate a word

From: Junio C Hamano <[email-masked]>
Date: Fri, 11 Jun 2021 08:59:16 +0900

Andrei Rybak <[email-masked]> writes:

> Subject: Re: [PATCH v2] *: fix typos which duplicate a word

I think Derrick started this use of "*:" prefix to mean "not limited
to any particular area, but applies to everything" and it makes
sense.

> Fix typos in documentation and code comments which repeat various words.

Thanks.

> These typos were found by searching using scripts like this:
>
> 	for w in $(grep '^....$' /usr/share/dict/words)
> 	do
> 		git grep -P "\b$w $w\b"
> 	done

This is clarifying and somewhat puzzling at the same time.

It says that doubled words that span across line folding, and
doubled words that do not have exactly a single space in between,
have gone undetected (which is fine and may be useful information)
by showing that it grepped for lines that has doubled words.  But it
also says that you only looked for four-letter words, which I do not
believe is the case (you fixed "the the", for example), which is
misleading.  The "like this" part can be an excuse for that
inaccuracy, but then the whole thing pretty much has already been
summarized nicely with your first line already, i.e. "which repeate
various words".  If you update it the end part of the sentence to
"which repeat various words on the same line", then the entire
paragaph can go without losing clarity.

Not a huge deal, though.

The changes themselves all look good to me.  Thanks.  Will apply.

> Signed-off-by: Andrei Rybak <[email-masked]>
> ---
>
> Thanks to Felipe Contreras for review.
>
> Changes from v1:
>
>   - added "*: " as area prefix to follow example of Derrick Stolee
>     https://lore.kernel.org/git/c40a[email-masked]/
>   - Dropped change in t/t6416-recursive-corner-cases.sh where I misread a
>     sentence and the duplicated word "that" is used correctly. Quote for
>     reference:
>
>       ... so we use one path whose name is arbitrary in the virtual merge base X
>       between D and E" and then further let the rename detection to notice that
>       that arbitrary path gets renamed ...
>
>     where first "that" is a conjunction between clauses "we let" and "path gets
>     renamed" and second "that" is a determiner to qualify "arbitrary path" to
>     refer to "one path" mentioned in the first clause
>
>  Documentation/technical/protocol-v2.txt | 2 +-
>  attr.c                                  | 2 +-
>  builtin/log.c                           | 3 +--
>  git-compat-util.h                       | 2 +-
>  git-cvsserver.perl                      | 2 +-
>  remote.c                                | 2 +-
>  t/t5505-remote.sh                       | 2 +-
>  t/t9100-git-svn-basic.sh                | 2 +-
>  8 files changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/Documentation/technical/protocol-v2.txt b/Documentation/technical/protocol-v2.txt
> index a1e31367f4..1040d85319 100644
> --- a/Documentation/technical/protocol-v2.txt
> +++ b/Documentation/technical/protocol-v2.txt
> @@ -540,7 +540,7 @@ An `object-info` request takes the following arguments:
>  	Indicates to the server an object which the client wants to obtain
>  	information for.
>  
> -The response of `object-info` is a list of the the requested object ids
> +The response of `object-info` is a list of the requested object ids
>  and associated requested information, each separated by a single space.
>  
>  	output = info flush-pkt
> diff --git a/attr.c b/attr.c
> index 9e897e43f5..d029e681f2 100644
> --- a/attr.c
> +++ b/attr.c
> @@ -685,7 +685,7 @@ static struct attr_stack *read_attr_from_array(const char **list)
>   * Callers into the attribute system assume there is a single, system-wide
>   * global state where attributes are read from and when the state is flipped by
>   * calling git_attr_set_direction(), the stack frames that have been
> - * constructed need to be discarded so so that subsequent calls into the
> + * constructed need to be discarded so that subsequent calls into the
>   * attribute system will lazily read from the right place.  Since changing
>   * direction causes a global paradigm shift, it should not ever be called while
>   * another thread could potentially be calling into the attribute system.
> diff --git a/builtin/log.c b/builtin/log.c
> index 6102893fcc..516a1142dd 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -1968,8 +1968,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
>  	} else if (rev.diffopt.close_file) {
>  		/*
>  		 * The diff code parsed --output; it has already opened the
> -		 * file, but but we must instruct it not to close after each
> -		 * diff.
> +		 * file, but we must instruct it not to close after each diff.
>  		 */
>  		rev.diffopt.no_free = 1;
>  	} else {
> diff --git a/git-compat-util.h b/git-compat-util.h
> index a508dbe5a3..df7dae9be1 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -1368,7 +1368,7 @@ static inline void *container_of_or_null_offset(void *ptr, size_t offset)
>  	(type *)container_of_or_null_offset(ptr, offsetof(type, member))
>  
>  /*
> - * like offsetof(), but takes a pointer to a a variable of type which
> + * like offsetof(), but takes a pointer to a variable of type which
>   * contains @member, instead of a specified type.
>   * @ptr is subject to multiple evaluation since we can't rely on __typeof__
>   * everywhere.
> diff --git a/git-cvsserver.perl b/git-cvsserver.perl
> index f6f3fc192c..ed035f32c2 100755
> --- a/git-cvsserver.perl
> +++ b/git-cvsserver.perl
> @@ -2149,7 +2149,7 @@ sub req_diff
>                     ( $meta2->{revision} or "workingcopy" ));
>  
>          # TODO: Use --label instead of -L because -L is no longer
> -        #  documented and may go away someday.  Not sure if there there are
> +        #  documented and may go away someday.  Not sure if there are
>          #  versions that only support -L, which would make this change risky?
>          #  http://osdir.com/ml/bug-gnu-utils-gnu/2010-12/msg00060.html
>          #    ("man diff" should actually document the best migration strategy,
> diff --git a/remote.c b/remote.c
> index 6d1e8d02df..dfb863d808 100644
> --- a/remote.c
> +++ b/remote.c
> @@ -1592,7 +1592,7 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
>  			else
>  				/*
>  				 * If the ref isn't stale, and is reachable
> -				 * from from one of the reflog entries of
> +				 * from one of the reflog entries of
>  				 * the local branch, force the update.
>  				 */
>  				force_ref_update = 1;
> diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
> index c7b392794b..e6e3c8f552 100755
> --- a/t/t5505-remote.sh
> +++ b/t/t5505-remote.sh
> @@ -182,7 +182,7 @@ test_expect_success 'rename errors out early when deleting non-existent branch'
>  	)
>  '
>  
> -test_expect_success 'rename errors out early when when new name is invalid' '
> +test_expect_success 'rename errors out early when new name is invalid' '
>  	test_config remote.foo.vcs bar &&
>  	echo "fatal: '\''invalid...name'\'' is not a valid remote name" >expect &&
>  	test_must_fail git remote rename foo invalid...name 2>actual &&
> diff --git a/t/t9100-git-svn-basic.sh b/t/t9100-git-svn-basic.sh
> index 1d3fdcc997..ef35a54885 100755
> --- a/t/t9100-git-svn-basic.sh
> +++ b/t/t9100-git-svn-basic.sh
> @@ -330,7 +330,7 @@ test_expect_success 'git-svn works in a bare repository' '
>  	git svn fetch ) &&
>  	rm -rf bare-repo
>  	'
> -test_expect_success 'git-svn works in in a repository with a gitdir: link' '
> +test_expect_success 'git-svn works in a repository with a gitdir: link' '
>  	mkdir worktree gitdir &&
>  	( cd worktree &&
>  	git svn init "$svnrepo" &&