merge(3p/git): Merge git upstream at v2.26.2

This commit is contained in:
Vincent Ambo 2020-05-22 17:46:45 +01:00
commit 5229c9b232
1006 changed files with 149006 additions and 60819 deletions

View file

@ -8,6 +8,7 @@
#include "pkt-line.h"
#include "sub-process.h"
#include "utf8.h"
#include "ll-merge.h"
/*
* convert.c - convert a file when checking it out and checking it in.
@ -269,8 +270,12 @@ static int will_convert_lf_to_crlf(struct text_stat *stats,
static int validate_encoding(const char *path, const char *enc,
const char *data, size_t len, int die_on_error)
{
const char *stripped;
/* We only check for UTF here as UTF?? can be an alias for UTF-?? */
if (istarts_with(enc, "UTF")) {
if (skip_iprefix(enc, "UTF", &stripped)) {
skip_prefix(stripped, "-", &stripped);
/*
* Check for detectable errors in UTF encodings
*/
@ -284,15 +289,10 @@ static int validate_encoding(const char *path, const char *enc,
*/
const char *advise_msg = _(
"The file '%s' contains a byte order "
"mark (BOM). Please use UTF-%s as "
"mark (BOM). Please use UTF-%.*s as "
"working-tree-encoding.");
const char *stripped = NULL;
char *upper = xstrdup_toupper(enc);
upper[strlen(upper)-2] = '\0';
if (!skip_prefix(upper, "UTF-", &stripped))
skip_prefix(stripped, "UTF", &stripped);
advise(advise_msg, path, stripped);
free(upper);
int stripped_len = strlen(stripped) - strlen("BE");
advise(advise_msg, path, stripped_len, stripped);
if (die_on_error)
die(error_msg, path, enc);
else {
@ -307,12 +307,7 @@ static int validate_encoding(const char *path, const char *enc,
"mark (BOM). Please use UTF-%sBE or UTF-%sLE "
"(depending on the byte order) as "
"working-tree-encoding.");
const char *stripped = NULL;
char *upper = xstrdup_toupper(enc);
if (!skip_prefix(upper, "UTF-", &stripped))
skip_prefix(stripped, "UTF", &stripped);
advise(advise_msg, path, stripped, stripped);
free(upper);
if (die_on_error)
die(error_msg, path, enc);
else {
@ -417,7 +412,7 @@ static int encode_to_git(const char *path, const char *src, size_t src_len,
if (!dst) {
/*
* We could add the blob "as-is" to Git. However, on checkout
* we would try to reencode to the original encoding. This
* we would try to re-encode to the original encoding. This
* would fail and we would leave the user with a messed-up
* working tree. Let's try to avoid this by screaming loud.
*/
@ -1151,7 +1146,7 @@ static int ident_to_worktree(const char *src, size_t len,
/* are we "faking" in place editing ? */
if (src == buf->buf)
to_free = strbuf_detach(buf, NULL);
hash_object_file(src, len, "blob", &oid);
hash_object_file(the_hash_algo, src, len, "blob", &oid);
strbuf_grow(buf, len + cnt * (the_hash_algo->hexsz + 3));
for (;;) {
@ -1293,10 +1288,11 @@ struct conv_attrs {
const char *working_tree_encoding; /* Supported encoding or default encoding if NULL */
};
static struct attr_check *check;
static void convert_attrs(const struct index_state *istate,
struct conv_attrs *ca, const char *path)
{
static struct attr_check *check;
struct attr_check_item *ccheck = NULL;
if (!check) {
@ -1339,6 +1335,23 @@ static void convert_attrs(const struct index_state *istate,
ca->crlf_action = CRLF_AUTO_INPUT;
}
void reset_parsed_attributes(void)
{
struct convert_driver *drv, *next;
attr_check_free(check);
check = NULL;
reset_merge_attributes();
for (drv = user_convert; drv; drv = next) {
next = drv->next;
free((void *)drv->name);
free(drv);
}
user_convert = NULL;
user_convert_tail = NULL;
}
int would_convert_to_git_filter_fd(const struct index_state *istate, const char *path)
{
struct conv_attrs ca;
@ -1927,7 +1940,7 @@ static struct stream_filter *ident_filter(const struct object_id *oid)
* the contents cannot be filtered without reading the whole thing
* in-core.
*
* Note that you would be crazy to set CRLF, smuge/clean or ident to a
* Note that you would be crazy to set CRLF, smudge/clean or ident to a
* large binary blob you would want us not to slurp into the memory!
*/
struct stream_filter *get_stream_filter(const struct index_state *istate,