Previous Entry Share Next Entry
2016-01

Гит говно

Во, у меня есть свежее репро того, что гит говно :)

Значит, берем папку с тестами к JS транслятору (25к файлов, из них половина заигнорена), передвигаем на уровень выше, коммитим.

Mercurial: 15 секунд
Github for Windows: (гуй ушел в себя еще до нажатия "коммит", пришлось прибить)
Git консольный (msysgit, как я понимаю): уже 10 25 минут как ушел в себя и ничего не происходит. Ест 5% процессора, 92 мб RAM, и всё. Что с ним сделать?

EDIT: Мне стало интересно. Ну что, даже SVN за три минуты закоммитил такой дифф, не говоря уже о всяких Fossil, "а батарейки Дюраселл продолжают работать и работать!"

Пойду что ли Darcs скачаю, про него говорят, он медленный... :-D

EDIT2: Ура, он смог! 40 минут молчания, потом тонна сообщений "LF will be replaced by CRLF", вуаля, готово. Прогрессбар? Не, не слышали.
EDIT3: При этом git mv тех же файлов - меньше секунды. Okay.jpg

This entry was originally posted at http://wizzard.dreamwidth.org/418147.html. It has comment count unavailable comments. Please comment there using OpenID.

  • 1
amarao_san January 22nd, 2015
eatmydata может помочь.

eatmydata git (что там дальше). Принудительно отключает fsync'и для данной программы.

wizzard0 January 22nd, 2015
Там а) винда б) RAM-диск.

Ivan Sopov January 22nd, 2015
1. Виндовс говно и не используйте его.
2. 15 секунд? Меркурил - говно.

wizzard0 January 22nd, 2015
> 15 секунд? Меркурил - говно.
Хм, мне кажется, 3000 fopen/fwrite/fclose в секунду - это вполне нормально, не?

А вот что гит там колупает уже 25 минут?

> Виндовс говно и не используйте его.
Ну, если кто-то не умеет готовить винду - я не виноват :)

Edited at 2015-01-22 11:30 am (UTC)

vit_r January 22nd, 2015
Как может быть говном тул, отделяющий гениев от смердов? С Mercurial любой бухгалтер работать сможет.

wizzard0 January 22nd, 2015
За лыжами и гамаком можно проследовать к Столлману, а я предпочитаю тратить своё время и мозги на более полезные занятия.

_winnie January 22nd, 2015
> Что с ним сделать?
1) Посмотреть process monitor
2) Взять собранный с дебаг-инфо, подключиться отладчиком. Небось квадратичный поиск где-то, сишники очень не любят хеши-мапы


wizzard0 January 22nd, 2015
А проц почему не ест?

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

slonopotamus January 22nd, 2015
Где репро-то? Чо мне надо сделать, чтобы тоже это увидеть? Ссылки там, скрипты для генерации тестовых данных, етц.

wizzard0 January 22nd, 2015
1) git clone https://github.com/wizzard0/js2lua git_wc
2) hg clone https://bitbucket.org/cosi2/js2lua hg_wc
3) удалить всё кроме .git из git_wc, скопировать туда соответствующий стафф из hg_wc
4) git add -A && git commit

mbr January 22nd, 2015
> Что с ним сделать?

Найти проблему и прислать патч?

wizzard0 January 22nd, 2015
Там слишком много проблем, чтобы они решались патчем, увы.

Гит надо просто выбросить и забыть. Но гитхаб продолжает пинать стюардессу.

ex0_planet January 22nd, 2015
vfs в винде полное говно. если использовать нормальную операционную систему, то результат будет примерно таким
$ mkdir gitgovno
$ cd gitgovno
$ git init
Initialized empty Git repository in /home/eugene/tmp/gitgovno/.git/
$ mkdir -p tests/scripts
$ time for n in $(seq 1 10000) ; do echo 'print 2+2' > tests/scripts/test0$n.js ; done

real	0m0.454s
user	0m0.212s
sys	0m0.240s
$ time for n in $(seq 1 10000) ; do echo 'print 2+2' > tests/scripts/test1$n.js ; done

real	0m0.453s
user	0m0.212s
sys	0m0.240s
$ echo 3 | sudo tee /proc/sys/vm/drop_caches 
3
$ time git add tests/scripts/

real	0m6.884s
user	0m0.496s
sys	0m1.524s
$ time git commit -qm 'tests'

real	0m0.145s
user	0m0.060s
sys	0m0.052s
$ echo 3 | sudo tee /proc/sys/vm/drop_caches 
3
$ time git mv tests/scripts/ scripts/

real	0m0.554s
user	0m0.208s
sys	0m0.120s
$ time git commit -qm 'move tests'

real	0m0.181s
user	0m0.048s
sys	0m0.052s



wizzard0 January 22nd, 2015
Я допускаю, что vfs в винде говно, но почему hg закоммитил за 15 секунд, fossil за 10 секунд, SVN за 3 минуты, а гит за 40 минут?

wizzard0 January 22nd, 2015
О, git mv у меня тоже мгновенно отрабатывает.

А вот git add -A...

develop7 January 22nd, 2015
40 минут молчания, потом тонна сообщений "LF will be replaced by CRLF", вуаля, готово. Прогрессбар? Не, не слышали.
ну да, оно угадывает, что в куда переименовали
git mv тех же файлов - меньше секунды
а git mv — алиас к просто mv

gds January 22nd, 2015
> а git mv — алиас к просто mv

это не так.

dmytrish January 22nd, 2015
Гит, конечно, инструмент капризный и колючий, но мощный. Правда, про виндовый порт я вообще ничего сказать не могу, не видел практически ни разу.

Для меня bitbacket и другие продукты Atlassian (hipchat, например, — пришлось попользоваться недавно) — стремные какие-то. Не могу рационально объяснить: они какие-то джавоподобные, вроде и все правильно сделано, но постоянно что-то не так.

Я никак не могу понять, почему сайты, которые хостят код, могут себе позволять не показывать код сразу же. На google code и bitbucket если хочется окинуть взглядом код и файловую структуру — надо еще покопаться и поискать заветную кнопку "source". github в этом отношении вообще не раздражает, там все субъективно нужное мне на первом плане. Возможно потому, что я привык видеть файлы проекта при работе с ним, а google code/bitbucket сделаны в IDE-style, где сначала показывают инструменты, а не контент.

wizzard0 January 22nd, 2015
Wait, меркуриал и bitbucket это две разные вещи. Меркуриал делает Trifork, а не Atlassian

Про ведро согласен, оно херовенькое, гитхаб гораздо лучше. А сам по себе меркуриал мне очень нравится.

livejournal January 22nd, 2015
Здравствуйте! Ваша запись попала в топ-25 популярных записей LiveJournal для Украины. Подробнее о рейтинге читайте в Справке.

udpn January 22nd, 2015
Стоило только сказать, что гит -- говно!

(Deleted comment)
ilya_portnov January 22nd, 2015
Есть гипотеза, что это связано с гитовским умением определять какой файл был перемещён куда и при этом насколько изменён. Ну то есть по результату там получаются на stdout строчки типа "renamed x.js -> x/y.js (97%)". Как я понимаю, он хэши для этого как-то по-умному считает. Ну и в каких-то случаях это, видимо, долго.

wizzard0 January 23rd, 2015
Ну, попали на corner case какой-то.

Re: Гит говно

mpd January 22nd, 2015
А там, может быть, какие-то бинарные файлы попадаются?
Гиту же их сжать все надо, если я не ошибаюсь.

  • 1
?

Log in

No account? Create an account