Re: [PATCH 1/3] git-branch: add --track and --no-track options
>> + /* Try an exact match first. */
>> + sscanf(value, "refs/%*[^:]:%n", &len_first);
>
> This is the first time I saw that sscanf format type. How portable is it?
It is. At the very least it is in OpenGroup.
Show 7 quoted lines
>> + /* Truncate the value before the colon. */
>> + asprintf(&config_repo, "%.*s", len_first - 1, value);
>
> asprintf() is a GNU extension. I guess it is better to just
>
> config_repo = xstrdup(value);
> config_repo[p - value] = '\0';
git has nfvasprintf -- I'll just use that one.
> FWIW I don't think .trackIntoLocalBranches" is needed. Opinions?
That's because I'd like to make it the default for me... Also, look at patch 3/3.
Show 12 quoted lines
>> @@ -333,7 +424,9 @@ static void create_branch(const char *name, const char *start_name,
>> if (start_sha1)
>> /* detached HEAD */
>> hashcpy(sha1, start_sha1);
>> - else if (get_sha1(start_name, sha1))
>> + else if (dwim_ref(start_name, strlen(start_name), sha1, &real_ref) > 1)
>> + die("Ambiguous object name: '%s'.", start_name);
>
> I know, I should have said that earlier, but I just found out myself: We
> have a config variable core.warnambiguousrefs, and maybe we should _not_
> complain and set the defaults when the global variable warn_ambiguous_refs
> is 0.If warn_ambiguous_ref == 0, dwim_ref is never going to answer anything > 1...
Paolo