Хадсон + Windows + GitHub + плагин Git = действительно очень медленная стадия выборки

StackOverflow https://stackoverflow.com/questions/3427224

Вопрос

Я настраиваю свой первый проект Hudson + Git (ранее многие из них были выполнены с помощью Hudson + SVN).Я ожидал, что этап клонирования будет медленным, так как наш репозиторий довольно большой, но последующие сборки, где используется выборка + слияние, будут такими же длинными.Включены следующие опции:

  • Слияние перед сборкой
  • Убирать после оформления заказа

Я такой и есть нет выполнение "Уничтожения рабочего пространства".

...
Fetching changes from the remote Git repository
Fetching upstream changes from git@github.com:username/ProjectFoo.git
[Foo] $ git fetch -t git@github.com:username/ProjectFoo.git +refs/heads/*:refs/remotes/origin/*

В этот момент он глохнет очень надолго.Как только он, наконец, завершается, кажется, что все идет так, как ожидалось:

[Foo] $ git ls-tree HEAD
[Foo] $ git rev-parse origin/mybranch
Commencing build of Revision c883d59dd5a506a0b586f679a256f539712bfccc (origin/mybranch)
GitAPI created
Checking out Revision c883d59dd5a506a0b586f679a256f539712bfccc (origin/mybranch)
[Foo] $ git checkout -f c883d59dd5a506a0b586f679a256f539712bfccc
[Foo] $ git tag -a -f -m "Hudson Build #2" hudson-Foo-2
Recording changes in branch origin/mybranch
[Foo] $ git whatchanged --no-abbrev -M --pretty=raw c883d59dd5a506a0b586f679a256f539712bfccc..c883d59dd5a506a0b586f679a256f539712bfccc
Cleaning workspace
[Foo] $ git clean -fdx
...

Когда я запускаю то же самое fetch команда из командной строки Git Bash выполняется практически мгновенно.

Есть какие-нибудь идеи, что может происходить?Или подсказки, чтобы ускорить процесс?Обратите внимание, что размер клонированного репозитория составляет 210 МБ.(История кода насчитывает около десяти лет.)

Это было полезно?

Решение

Я также столкнулся с этой проблемой, и выяснил обходной путь. Когда HUDSON работает как сервис, что-то отсутствует, что ваша обычная среда настольных компьютеров имеет, что заставляет что-то делать с сетью, чтобы повторно загрузить для каждого процесса. Msys-1.0.dll пытается что-то загрузить в netapi32.dll, что заставляет его занимать так долго. Поэтому я только что загрузил Plink.exe из замазки и установил My Git_ssh ru, чтобы использовать это вместо этого. Проблема предотвращена.

Другие советы

Это может быть запоздалый ответ.но это решает проблему крайней медлительности, когда Jenkins / Hudson запускается как служба Windows в моей среде.
Ключевой момент заключается в том, чтобы заставить git получать ключи rsa в учетной записи службы Windows!Я сделал так, чтобы это работало, как показано ниже:

  1. откройте Панель управления-> Административные инструменты-> Службы и найдите "Дженкинс".
  2. Щелкните правой кнопкой мыши, чтобы открыть Свойства-> Войти в систему, и назначьте Дженкинсу Войти в систему как пользователю с правами администратора.
  3. перезапустите Jenkins, и "git fetch" заработает молниеносно, как это происходит в linux.

Решение, предоставленное ccutrer, не сработало у меня в первоначальной пробной версии, потому что plink не может получить ключ rsa от pageant (pageant находится в другом сеансе пользователя!).Когда мои шаги будут развернуты, к тому времени либо openssh, либо plink смогут хорошо работать.

Не могли бы вы попробовать анонимный доступ вместо аутентифицированного для вашей выборки?

$ git config remote.origin.url git://github.com/username/ProjectFoo.git   # read-only
$ git config remote.origin.pushurl git@github.com:username/ProjectFoo.git # authenticated

и посмотрим, если выбор все еще медленнее в работе HUDSON?

Смотрите на иллюстрацию "Использование GitHub с MSYSGIT".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top