LINUX.ORG.RU

Почему git такой жирный и насколько он в действительности портабелен?

 , , ,


0

3

На GNU/Linux и macOS проблем с git нет, кроме веса пакета и неповоротливости на слабом железе, а на венде проблемы ограничиваются этим только на первый взгляд. Если копнуть чуть глубже, окажется, что на самом деле git работает на венде не нативно, а использует MSYS2, который тащит за собой кучу бинарников, раньше так вообще единственным вариантом был cygwin.
Всех устраивает этот вопиющий костыль? Никто не осилил собрать git в той же вижуалстудии? А виноват, скорее всего autotools.
Сейчас глянул несколько клиентов: в большинстве дистрибутивов пакет git в распакованном виде занимает около 35Мб и имеет в зависимостях жирный перл, примерно так же обстоят дела на FreeBSD, Solaris и macOS, официальный же клиент для Windows основан на MSYS2 (форк Cygwin), весит этот клиент более 250Мб, вижуалстудия использует официальный клиент, GitHub Desktop вообще основан на электроне...
Я просто не понимаю, почему нет альтернативных реализаций? Ведь есть же libgit2 — лёгкая и портабельная библиотека! Неужели никто до сих пор не сделал на ней лёгкий и портабельный клиент? Или всех устраивает тяжёлый и неповоротливый?

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Какая разница, что вижуал студия использует клиент на 250 метров, если сама она гигов 10 занимает и дико тормозит? Ну и с офф. клиентом у меня лично никогда проблем не было в плане тормозов (хотя использую на слабой виртуалке). Правда я использую только консольную версию.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

Так я как раз про консольную версию и говорю. Можно ведь запилить альтернативную версию, которая будет делать всё то же самое, но будет в 10 раз меньше и гораздо быстрее. Только, похоже, этим никто не занимается. Или я гуглить не умею.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Подозреваю, что в основном msys/cygwin используются для тестов (там почти все тесты на bash и его друзьях). perl нужен для перлового модуля Git и для git-svn. Сам git написан на Си, но есть завязки на POSIX API (поэтому git4windows - это отдельный проект, который синхронизируется с основным git периодически).

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

git4windows

Не смог найти такой. Нашёл только wingit, но, похоже, это просто старое название официального клиента под Windows.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Ну это официальный виндовый клиент, но я им не занимался (всмысле в разработке не участвовал и код не смотрел), просто ЕМНИП в рассылку разработки git'а приходили письма с тэгом «git4windows».

DELIRIUM ☆☆☆☆☆
()

Потому что тяжесть и неповоротливость гита под виндой обусловлена медленной работой нтфс. Почему никто не написал новую фс под винду?

ncuxer
()
Ответ на: комментарий от ncuxer

Так там вроде бы уже новая ФС, не? Вроде бы называется ReFS.

CYB3R ★★★★★
() автор топика

Всех устраивает этот вопиющий костыль?

Мне да

Неужели никто до сих пор не сделал на ней лёгкий и портабельный клиент?

Git for Windows Portable («thumbdrive edition»): 32bit,64bit

xDShot ★★★★★
()

в большинстве дистрибутивов пакет git в распакованном виде занимает около 35Мб и имеет в зависимостях жирный перл

А перл в зависимостях ещё что-нибудь тянет за собой.

официальный же клиент для Windows основан на MSYS2 (форк Cygwin), весит этот клиент более 250Мб

Тут наверное всё вкорячили в сборку, никто же не виноват, что на винде нет дефолтного пакетного менеджера. А плюс это или минус, тема для отдельной дискуссии.

Exmor_RS ★★★
()
Ответ на: комментарий от xDShot

Портабельный — не в смысле «можно на флешку закинуть», а в смысле переносимый между разными системами. Тут суть в том, что кто-то не осилил портировать гит на венду, потому от версии к версии передаётся костыль, сначала это был Cygwin, теперь MSYS2. Даже на википедии об этом написано.

CYB3R ★★★★★
() автор топика

Потрабелен. Между POSIX-ами. Но майкрософт у мамы особенный, поэтому на обоих стороных мы имеем костыли в виде Cygwin/Msys и Wine.

Deleted
()

вижуалстудия использует официальный клиент

Чего это ради? Когда я тыкал вижлу, там использовался именно компактный libgit2. И поддержка Git в этой IDE реально была одной из самых лучших.

Вон у них на сайт даже лого MS висит: https://libgit2.github.com/

EXL ★★★★★
()

На какой чёрт тебе нужен будет git если хуки, завязанные на bash-совместимый шелл + coreutils, перестанут работать? Ну и да, по ssh будешь через putty соединяться?

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)
Ответ на: комментарий от EXL
Ответ на: комментарий от CYB3R

А, вот нашёл: https://developercommunity.visualstudio.com/comments/30561/view.html

VS2015 used Libgit2 as it's Git implementation, VS2017 uses Git for Windows.

VS2013 тоже юзал libgit2 и работал без всяких Git'ов, установленных в систему, сразу из коробки. Почему они перешли в VS2017 на Git for Windows — без понятия.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от CYB3R

не осилил портировать гит на венду

Нативный клиент под винду есть - значит портирован.

По-моему вы херней страдаете вместо того чтобы пользоваться тем что уже есть.

xDShot ★★★★★
()
Ответ на: комментарий от system-root

Проблемы нет, но это ведь ещё больший костыль, чем MSYS2.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от xDShot

Клиент есть, но он не совсем нативный — работает через костыль. В этом, собственно, и вопрос — неужели всех устраивает текущая реализация и никто не запилил альтернативную?

CYB3R ★★★★★
() автор топика

Тормознутость виндовой версии git должна быть незаметна на фоне тормознутости самой винды.

Неужели никто до сих пор не сделал на ней лёгкий и портабельный клиент?

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

SakuraKun ★★★★★
()

Почему git такой жирный

Summary for: git 2.3.0
================================================================================
Source dir  : 67.9M
Src file    : git-2.3.0.tar.gz
Src size    : 4.9M
Produced    : 16.2M
Packed      : 14.2M
Compressed  : 2.1M
Files       : 230
Cook time   : 226s ~ 4m
Cook date   : 2017-02-24 03:21
Host arch   : i486
================================================================================
DEPENDS="zlib openssl curl expat"

Дистропроблемы.

devl547 ★★★★★
()
Последнее исправление: devl547 (всего исправлений: 1)

Вам для решения этих траблов завезли в винду убунту.

mandala ★★★★★
()

Зачем это всё? Какую проблему ты пытаешься решить? Ты уверен, что выбранное решение действительно решает проблему?

i-rinat ★★★★★
()
Ответ на: комментарий от x905

А насчет рамок: по файловой системе в терминале можно ориентироваться как внутри изолированной мини-ФС (папка data, где android-приложения хранят свои данные изолированно), так и на тех участках файловой системы (внутренняя память, карта памяти), где разрешена запись файлов.

xDShot ★★★★★
()
Ответ на: комментарий от i-rinat

Какой-то конкретной проблемы нет, просто нашёл прямо у себя под носом очередной пример bloatware, который никто не заметил (на самом деле заметили, даже замену написали, и инициатива на GSoC выдвигалась). Так что я думаю, что прекрасный git будущего будет основан на libgit2.

CYB3R ★★★★★
() автор топика

неповоротливости на слабом железе

Чушь. Гит летает, если у ОС есть достаточно памяти для кэша ФС, правда чем больше репозиторий, тем больше понадобится памяти для работы с максимальной скоростью.

На венде, к сожалению, не поможет, из-за ущербности ее кэша ФС

Никто не осилил собрать git в той же вижуалстудии?

Ты правда думаешь, что все бинарники собранные не-вижуалстудией тащат за собой MSYS??

Тут смысл в другом.

1. Значительная часть высокоуровневых команд и встроенных хуков написана на шелле, перле или питоне. Хуки и мерж-драйверы из реальных проектов тоже скриптовые, никакой упорыш не будет писать это на C

1а. Шелловые скрипты, естественно, запускают всякие позиксовые команды, так что они тянутся следом

2. Для работы с гитом нужен удобный шелл, с автокомплитом, показом текущей ветки и статуса в пирглашении и т.д. Для баша все это уже реализовано. Для виндовых шеллов - не факт что вообще возможно, по крайней мере никто не будет возиться проверять

Ведь есть же libgit2 — лёгкая и портабельная библиотека!

С урезанной функциональностью и безх полноценных cli-тулзов

Или всех устраивает тяжёлый и неповоротливый?

Ты правда думаешь что пристуствие msys вместе с гитом его замедляет? тогда у меня плохие новости

annulen ★★★★★
()
Ответ на: комментарий от CYB3R

Так что я думаю, что прекрасный git будущего будет основан на libgit2.

Почему не jgit тогда? На нем есть полно гуишных клиентов, для неосиляторов вроде тебя

annulen ★★★★★
()
Ответ на: комментарий от CYB3R

«разработчики венды» - индусы штоль?) судя по тому, какого качества выходит их продукт, они тормозов не замечают

SakuraKun ★★★★★
()
Ответ на: комментарий от CYB3R

но будет в 10 раз меньше и гораздо быстрее.

Сам git невелик, жрет msys (minimal system, а не форк cygwin).
Тормоза git - это вычисление хеша файла. Больше там нечему тормозить.

andreyu ★★★★★
()
Ответ на: комментарий от system-root

в чём проблема открыть bash в винде и написать apt-get install git?

И это на данный момент лучший вариант. Если бы не wsl, то виндой вообще нельзя было бы пользоваться.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.