threads / patch / 36012

patchcommit.c:record_author_date() use skip_prefix() instead of starts_with()

Subject: [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()

## tl;dr

4 messages between Mar 1, 2014 and Mar 3, 2014. Diffs are folded; open one to read it.

replies: 3people: 4as markdown or json

Tanay Abhra· Mar 1, 2014, 19:48 UTC · lore
Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
---
 commit.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to commit.c +1 −1
diff --git a/commit.c b/commit.c
index 6bf4fe0..c954ecb 100644
--- a/commit.c
+++ b/commit.c
@@ -566,7 +566,7 @@ static void record_author_date(struct author_date_slab *author_date,
 	     buf;
 	     buf = line_end + 1) {
 		line_end = strchrnul(buf, '\n');
-		if (!starts_with(buf, "author ")) {
+		if (!skip_prefix(buf, "author ")) {
 			if (!line_end[0] || line_end[1] == '\n')
 				return; /* end of header */
 			continue;
-- 
1.7.9.5

Hello,

This is my patch for the GSoC microproject #10:

Rewrite commit.c:record_author_date() to use skip_prefix(). 
Are there other places in this file where skip_prefix() would be more 
readable than starts_with()?

Since skip_prefix() and starts_with() implement the same functionality with different
return values, they can be interchanged easily.

Other usage of starts_with() in the same file can be found with

$ grep -n starts_with commit.c

1116:		else if (starts_with(line, gpg_sig_header) &&
1196:		if (starts_with(buf, sigcheck_gpg_status[i].check + 1)) {

I have a query,should I tackle a bug from the mailing lists or research about the proposal 
and present a rough draft?

Cheers,
Tanay Abhra.
Michael Haggerty· Mar 3, 2014, 08:58 UTC · re: Tanay Abhra · lore

Re: [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()

The format of this email is wrong. The non-commit-message notes should come between the "---" line (<- note, there are three minus signs here) and the patch itself.

On 03/01/2014 08:48 PM, Tanay Abhra wrote:
Show 15 quoted lines
> Signed-off-by: Tanay Abhra <tanayabh@gmail.com>
> ---
>  commit.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/commit.c b/commit.c
> index 6bf4fe0..c954ecb 100644
> --- a/commit.c
> +++ b/commit.c
> @@ -566,7 +566,7 @@ static void record_author_date(struct author_date_slab *author_date,
>  	     buf;
>  	     buf = line_end + 1) {
>  		line_end = strchrnul(buf, '\n');
> -		if (!starts_with(buf, "author ")) {
> +		if (!skip_prefix(buf, "author ")) {

If this is the only change, there is not much point, is there? How does this help? Perhaps there is some way to take advantage of the difference between starts_with() and skip_prefix() to simplify the rest of the function?

Show 23 quoted lines
>  			if (!line_end[0] || line_end[1] == '\n')
>  				return; /* end of header */
>  			continue;
> -- 
> 1.7.9.5
> 
> Hello,
> 
> This is my patch for the GSoC microproject #10:
> 
> Rewrite commit.c:record_author_date() to use skip_prefix(). 
> Are there other places in this file where skip_prefix() would be more 
> readable than starts_with()?
> 
> Since skip_prefix() and starts_with() implement the same functionality with different
> return values, they can be interchanged easily.
> 
> Other usage of starts_with() in the same file can be found with
> 
> $ grep -n starts_with commit.c
> 
> 1116:		else if (starts_with(line, gpg_sig_header) &&
> 1196:		if (starts_with(buf, sigcheck_gpg_status[i].check + 1)) {

The rhetorical question that was part of this microproject was meant to inspire you to actually *FIX* the other spots, at least if the change makes sense.

> I have a query,should I tackle a bug from the mailing lists or research about the proposal 
> and present a rough draft?

My suggestion is that you follow up on this microproject until it is perfect before worrying too much about the next step.

Michael
-- 
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/
Junio C Hamano· Mar 3, 2014, 18:40 UTC · re: Michael Haggerty · lore

Re: [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()

Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 7 quoted lines
>> -		if (!starts_with(buf, "author ")) {
>> +		if (!skip_prefix(buf, "author ")) {
>
> If this is the only change, there is not much point, is there?  How does
> this help?  Perhaps there is some way to take advantage of the
> difference between starts_with() and skip_prefix() to simplify the rest
> of the function?

I admit I lost track, but wasn't there a discussion to use starts_with/ends_with when appropriate (namely, the caller is absolutely not interested in what the remainder of the string is after skipping the prefix), moving away from skip_prefix()? Isn't this change going in the wrong direction?

Eric Sunshine· Mar 3, 2014, 19:52 UTC · re: Junio C Hamano · lore

Re: [PATCH] commit.c:record_author_date() use skip_prefix() instead of starts_with()

On Mon, Mar 3, 2014 at 1:40 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 15 quoted lines
> Michael Haggerty <mhagger@alum.mit.edu> writes:
>
>>> -            if (!starts_with(buf, "author ")) {
>>> +            if (!skip_prefix(buf, "author ")) {
>>
>> If this is the only change, there is not much point, is there?  How does
>> this help?  Perhaps there is some way to take advantage of the
>> difference between starts_with() and skip_prefix() to simplify the rest
>> of the function?
>
> I admit I lost track, but wasn't there a discussion to use
> starts_with/ends_with when appropriate (namely, the caller is
> absolutely not interested in what the remainder of the string is
> after skipping the prefix), moving away from skip_prefix()?  Isn't
> this change going in the wrong direction?

Yes, it would be going in the wrong direction if this was all there was to it, but the particular GSoC microproject [1] which inspired this (incomplete) submission expects that the potential student will dig deeper and discover how skip_prefix() can be used to achieve greater simplification in record_author_date() and in other places in the same file.

[1]: https://github.com/git/git.github.io/blob/master/SoC-2014-Microprojects.md

← back to recent threads