Hudson + Windows + GitHub + Git Plugin = действительно очень медленная стадия выборки - PullRequest
3 голосов
/ 06 августа 2010

Я настраиваю свой первый проект 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 МБ. (Около десятилетия истории кода.)

Ответы [ 3 ]

8 голосов
/ 07 января 2011

Я тоже столкнулся с этой проблемой и нашел обходной путь. Когда Hudson запускается как служба, чего-то не хватает в обычной среде рабочего стола, что приводит к необходимости перезагрузки сети для каждого процесса. msys-1.0.dll пытается загрузить что-то в netapi32.dll, что заставляет его так долго. Поэтому я просто скачал plink.exe из PuTTY и установил в своем GIT_SSH env использование этого. Проблема устранена.

2 голосов
/ 02 декабря 2014

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

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

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

1 голос
/ 07 августа 2010

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

$ 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

и посмотреть, будет ли выборка все еще медленной в задании Хадсона?

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

...