Ответ 1
Проблема заключалась в том, что Git устарел, а версия, поставляемая с CentOS, не поддерживает параметр -local для Git config.
Обновление Git до версии 1.7.12 решило проблему.
Я настраиваю 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
.
Проблема заключалась в том, что Git устарел, а версия, поставляемая с CentOS, не поддерживает параметр -local для Git config.
Обновление Git до версии 1.7.12 решило проблему.
Теперь (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
Кажется, что jekins использует значение по умолчанию git под /usr/bin
. Проверьте /usr/bin/git
и убедитесь, что у него есть опция -local.