git svn fetch стал медленным (до 30 секунд ожидания перед каждой ревизией) - PullRequest
1 голос
/ 10 декабря 2010

после некоторой реконфигурации системы на моем новом Ubuntu 10.10 git svn fetch стал очень медленным, ожидая до 30 секунд каждый раз, когда он пытается получить новую версию SVN.

Я использую git-svn version 1.7.1 (svn 1.6.12)

Обычно файлы ревизии выбираются быстро, но затем очень долго ждут получения следующей ревизии. На других машинах git svn, загружаемый из того же репозитория SVN, работает невероятно быстро, как это делалось всего несколько дней назад на моей машине.

Я сбросил auth папку в ~/.subverion. Я переустановил все пакеты, связанные с git и subversion, включая библиотеки. Это не помогает.

Итак, я сделал strace, когда он выбирает ревизии и ждет, я вижу в дереве процессов что-то вроде этого:

 % ps fxx | egrep '(git|svn)'
 5154 pts/0    S+     0:00  |   \_ strace -fc git svn fetch
 5155 pts/0    t+     0:00  |       \_ git svn fetch
 5156 pts/0    tL+    0:00  |           \_ /usr/bin/perl /usr/lib/git-core/git-svn fetch
 5217 pts/0    S+     0:00  |               \_ git hash-object -w --stdin-paths --no-filters
 5219 pts/0    S+     0:00  |               \_ git cat-file --batch
 5253 pts/0    S+     0:00  |               \_ git update-ref -m r75 refs/remotes/trunk 8a79cacd6d3c36eb338f6ed5f23269a163600d0f

и вывод strace выглядит примерно так:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 59.28    0.048312         156       309           waitpid
 39.99    0.032594         104       313           clone
  0.18    0.000149           0      7443      3296 access
  0.11    0.000088           0      5936       692 open
  0.09    0.000071           0      2285           munmap
  0.06    0.000046           0       228           send
  0.05    0.000040           0      5761           read
  0.04    0.000036           0      1962           brk
  0.04    0.000032           0      4366           fstat64
  0.04    0.000031           0      1304           write
  0.03    0.000021           0      6972           close
  0.02    0.000019           0      6502           mmap2
  0.02    0.000015           0       131           recvfrom
  0.01    0.000012           0       335           pipe
  0.01    0.000011           0       863           recv
  0.01    0.000010           0      1662       636 stat64
  0.01    0.000009           0       894           fcntl64

так что за waitpid он делает? Я хочу, чтобы мой быстрый git-svn вернулся:)

1 Ответ

0 голосов
/ 10 декабря 2010

Хорошо, как и ожидалось, это была проблема с DNS и разрешениями имен.

Вчера я изменил конфигурацию сети, чтобы получать только IP-адрес от DHCP, и сам настраивал домены поиска и DNS-серверы. Пока все работало нормально, но git-svn

Делая больше strace, я заметил, что он пытался использовать какое-то имя хоста, которое я изменил неделю назад, и единственным местом, где он мог это сделать, был DNS. После сброса сетевого подключения, чтобы снова получить все с DHCP-сервера, проблема с git-svn исчезла.

Хорошо, теперь я не могу использовать пути поиска DNS так, как хочу, но, по крайней мере, git-svn снова начал работать.

Вероятно, мне придется немного поиграть с /etc/hosts, чтобы установить локальный IP-адрес для имени моего хоста, чтобы упростить обратный поиск ...

...