Слияние Git с использованием рекурсивной стратегии и опции терпения

Для получения GIMP 2.8 на Lucid 10.04.4 взглянули на это:

http://ubuntuforums.org/showthread.php?p=11946325

24
задан Filip Zawada 24 February 2011 в 10:52
поделиться

1 ответ

Я вижу здесь патч , представляющий опцию терпения в стратегии рекурсивного слияния, основанной на Git1.7.2.2, но я не вижу его ни в одном из последующих примечаний к выпуску.

Тем не менее, алгоритм сравнения терпения был представлен с 2009 года, и он подробно описан здесь .

> grep -i patience *.c
diff.c: else if (!strcmp(arg, "--patience"))
diff.c:         DIFF_XDL_SET(options, PATIENCE_DIFF);
merge-recursive.c:      else if (!strcmp(s, "patience"))
merge-recursive.c:              o->xdl_opts |= XDF_PATIENCE_DIFF;

Команда слияния должна понимать эту опцию ... но эта функция, кажется, никогда не вызывается (нигде в merge-recursive.c или в любом другом файле *.c!):

int parse_merge_opt(struct merge_options *o, const char *s)
{
    if (!s || !*s)
        return -1;
    if (!strcmp(s, "ours"))
        o->recursive_variant = MERGE_RECURSIVE_OURS;
    else if (!strcmp(s, "theirs"))
        o->recursive_variant = MERGE_RECURSIVE_THEIRS;
    else if (!strcmp(s, "subtree"))
        o->subtree_shift = "";
    else if (!prefixcmp(s, "subtree="))
        o->subtree_shift = s + strlen("subtree=");
    else if (!strcmp(s, "patience"))
        o->xdl_opts |= XDF_PATIENCE_DIFF;
    else if (!strcmp(s, "ignore-space-change"))
        o->xdl_opts |= XDF_IGNORE_WHITESPACE_CHANGE;
    else if (!strcmp(s, "ignore-all-space"))
        o->xdl_opts |= XDF_IGNORE_WHITESPACE;
    else if (!strcmp(s, "ignore-space-at-eol"))
        o->xdl_opts |= XDF_IGNORE_WHITESPACE_AT_EOL;
    else if (!strcmp(s, "renormalize"))
        o->renormalize = 1;
    else if (!strcmp(s, "no-renormalize"))
        o->renormalize = 0;
    else if (!prefixcmp(s, "rename-threshold=")) {
        const char *score = s + strlen("rename-threshold=");
        if ((o->rename_score = parse_rename_score(&score)) == -1 || *score != 0)
            return -1;
    }
    else
        return -1;
    return 0;
}

Сообщение об ошибке «Неизвестная опция» печатается только функцией handle_options в git.c.
И XDF_PATIENCE_DIFF больше нигде не отображается в источниках git (1.7.4) ... так что да, я не знаю, как это можно реализовать для слияния.

3
ответ дан 28 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: