Re: [GSoC] Git Blog 5
- From
Christian Couder <christian.couder@gmail.com>
- Date
- Jun 21, 2021, 12:07 UTC
- Message-ID
- <CAP8UFD0sHevUHB-ryUZm9Sxm=daKMwbqe6_Q7kc-pZAZN-eHWA@mail.gmail.com>
- In-Reply-To
- <CAOLTT8TZqKQ1vkRX7apvzAJ04Cv9aHJ9kF1+wJcEvyi-pibOOw@mail.gmail.com>
On Sun, Jun 20, 2021 at 6:53 PM ZheNing Hu <adlternative@gmail.com> wrote:
> > My fifth week blog finished: > The web version is here: > https://adlternative.github.io/GSOC-Git-Blog-5/
Great, thanks!
Show 5 quoted lines
> ## Week5: Tempting apple > > This week, I spent a lot of time working on the digital circuit > course design of the school. So this week's patches for git > was completed in a hurry. This week `Ævar Arnfjörð Bjarmason`
s/was/were/
> gave a lot of useful suggestions for the patch I wrote earlier.
Maybe a link could help.
> Some are related to code style improvements, and some are > better design ideas.
[...]
> But something like `fill_remote_ref_details()`, things gradually > become complicated and difficult. `fill_remote_ref_details()`.
I think you can remove the above `fill_remote_ref_details()` as you are talking about it later.
> Just consider the `show_ref()` called in `fill_remote_ref_details()`, > `show_ref()` may call `shorten_unambiguous_ref()` internally, and > then another function is called internally in `shorten_unambiguous_ref()`...
Show 15 quoted lines
> Well, this is one of the reasons why I cannot move on.
>
> On the other hand, look at the following piece of code, it appears
> in `populate_value()`.
>
> ```c
> for (i = 0; i < used_atom_cnt; i++) {
> struct atom_value *v = &ref->value[i];
> if (v->s == NULL && used_atom[i].source == SOURCE_NONE)
> return strbuf_addf_ret(err, -1, _("missing object %s for %s"),
> oid_to_hex(&ref->objectname), ref->refname);
> }
> ```
>
> We need to determine whether `v->s` equals to `NULL`. We can uses/equals to/equals/
Show 13 quoted lines
> c-style strings to easily distinguish between empty strings(`xstrdup("")`)
> and `NULL`, but if we use strbuf, it is not easy to distinguish, because
> an empty strbuf has the following characteristics: `s.buf == strbuf_slopbuf`
> or `sb->buf[0] == '\0'`. It can be said that we shouldn’t even use `NULL`
> to assign to `s.buf`.
>
> So in the end, I rejected this seemingly very attractive solution, and use the
> previous strategy: `<s, s_size>`, unless someone can think of a better
> solution later `;-)`.
>
> * FootNote:
> 1. Why is there no `strbuf_empty()` in `strbuf` API? I think this may be
> a very important thing.There is a 'size_t len' field in 'struct strbuf', so doing `buf->len == 0` works.
> 2. Another thing worth mentioning is: I will have the school final exam > between July 7th and July 14th, I may be busy during this period.
Ok, thanks for telling us in advance.