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 минут?

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