Неизвестный параметр git config --local, сообщаемый Дженкинсом

Я настраиваю CI для проекта С#, размещенного на GitHub, в частном репо.
Git установлен на мастер-платформе CentOS, MSBuild на подчиненных окнах.

Я создал учетную запись в GitHub и добавил ее в свое личное репо.
Когда я настраиваю исходный контроль на Jenkins, я ввел URL (как https://github.com/.../repo.git) и ввел учетные данные с новой учетной записью.

Дженкинс сообщает:

Failed to connect to repository : Command "git config --local credential.helper store --file=/tmp/git2956041026506359040.credentials" returned status code 129:
stdout: 
stderr: error: unknown option `local'
usage: git config [options]

Config file location
    --global              use global config file
    --system              use system config file
    -f, --file <FILE>     use given config file

Action
    --get                 get value: name [value-regex]
    --get-all             get all values: key [value-regex]
    --get-regexp          get values for regexp: name-regex [value-regex]
    --replace-all         replace all matching variables: name value [value_regex]
    --add                 adds a new variable: name value
    --unset               removes a variable: name [value-regex]
    --unset-all           removes all matches: name [value-regex]
    --rename-section      rename section: old-name new-name
    --remove-section      remove a section: name
    -l, --list            list all
    -e, --edit            opens an editor
    --get-color <slot>    find the color configured: [default]
    --get-colorbool <slot>
                          find the color setting: [stdout-is-tty]

Type
    --bool                value is "true" or "false"
    --int                 value is decimal number
    --bool-or-int         value is --bool or --int
    --path                value is a path (file or directory name)

Other
    -z, --null            terminate values with NUL byte

Если я запишусь в master и попробую ту же команду в корневой консоли, я получаю ту же ошибку, --local не является параметром для git config.

Ответ 1

Проблема заключалась в том, что Git устарел, а версия, поставляемая с CentOS, не поддерживает параметр -local для Git config.

Обновление Git до версии 1.7.12 решило проблему.

Ответ 2

Теперь (2017) не только --local является допустимым параметром для git config (начиная с нескольких лет назад), его сообщение об ошибке будет более точным.

См. commit 3d7dd2d (21 мая 2017 г.) Рамсей Джонс ( ``).
См. commit 25cd291, commit 588a538, commit d819374 (13 мая 2017 г.) Джефф Кинг (peff).
(Слияние Юнио С Хамано - gitster - в commit 220c6a7, 29 мая 2017 года)

config: жалоба на --local вне git repo

Параметр "--local" указывает git-config читать или изменять конфигурацию уровня репозитория. Это не имеет никакого смысла, если вы фактически не находитесь в репозитории.

Старые версии git будут слепо пытаться читать или писать ".git/config".
Для чтения это приведет к тишине сбой, так как не было никакой конфигурации для чтения (и, следовательно, нет соответствующее значение конфигурации).
Письменность, как правило, терпит неудачу, поскольку ".git" вряд ли будет существовать.
Но так как b1ef400 (setup_git_env: избегайте слепого отбрасывания до ".git", 2016-10-20, git 2.13), мы поймаем это при вызове git_pathdup() и умереть с утверждением.

Умирать - это правильная вещь, но мы должны поймать проблема на ранней стадии и дать более человечное сообщение об ошибке.

До:

[email protected]:\Users\vonc\prog\xxx
> git config --local -l
fatal: BUG: setup_git_env called without repository

После (Git 2.14, Q3 2017)

[email protected]:\Users\vonc\prog\xxx
> git config --local -l
fatal: BUG: --local can only be used inside a git repository

Ответ 3

Кажется, что jekins использует значение по умолчанию git под /usr/bin. Проверьте /usr/bin/git и убедитесь, что у него есть опция -local.