用于Windows客户端的git似乎在我的计算机上安装了整个mingw发行版,占用了500MB以上的空间。
这几乎是Windows Gimp安装的两倍!
我已经有了cygwin,vim和我需要完成工作的所有其他实用程序,因此不需要任何其他的perl,vim等副本。我只需要Windows的git客户端。
我如何才能最小化正在安装的内容,以便仅获得可以使用的git客户端?
这里有两件事在起作用:
无论您使用什么工具来计算GfW安装所占用的空间,都是错的。这就是为什么。
由于历史原因,许多“补充” Git可执行文件现在仅是主要可执行文件的“替代名称” git.exe
。
为此,安装程序将写入git.exe
文件,然后创建一堆所谓的“硬链接”,所有这些链接均指向该git.exe
可执行文件。这意味着git-*.exe
位于中的一堆命名文件mingw32\libexec\git-core
都仅仅是硬链接。
在我(有点尘土飞扬)的GfW安装中,有116个硬链接git.exe
。将其乘以大约3 MiB,您将得到接近350 MiB的值。1个
您认为与GfW不相关的大多数捆绑物品实际上对使其工作至关重要,因为:
Git核心功能的某些部分被编写为Shell脚本。一个很好的例子是git-rebase
仅在2个较小的Git版本之前用C重写过。
Shell脚本意味着需要具有POSIX Shell的Windows端口;所以GfW捆绑了bash
。这还意味着需要有一组Unix Shell程序员期望可以使用的实用程序,例如sed
orawk
等(不是“仅仅因为”,而是因为它们确实被Git代码的某些部分使用)。
该git svn
桥梁是用Perl编写,并需要几个Perl模块可用以及客户端颠覆库。
尽管不是核心组件,但许多人都将其存在视为理所当然,因此就在这里。
常用的GUI实用程序,git gui
并且gitk
是用Tcl / Tk编写的,…所以猜猜是什么。
再一次,许多人认为他们的可用性是理所当然的(包括我在内)。
SSH
出于相同的原因,捆绑了OpenSSH客户端。
HTTP[S]
在Git中对协议的支持是通过使用实现的,libcURL
这取决于包括OpenSSL在内的一堆东西。
现在考虑一下我列举的这些软件的许多部分都具有自己的硬依赖关系,这些依赖关系也必须捆绑在一起。
因此,我们基本上只剩下两个捆绑软件,它们不是严格需要的:Vim和Mintty。从事GfW工作的人们的意见是,希望从Git Bash窗口中与GfW合作的人可以找到他们。简而言之,它们适合那些来自Unix领域或在Windows和类似Unix的系统(包括Mac OS X)之间来回切换系统的人使用。
所以……如果您再想一想,例如,在典型的基于GNU / Linux的OS上,您会做些类似的事情
apt install git git-gui gitk git-svn
您只是不对依赖项一ck而就,因为
这使得Git的安装看起来几乎具有零依赖关系,这是错误的。
另一方面,Windows
如您现在所见,GfW开发人员没有其他明智的方法来实现该产品,而不必捆绑所有东西。毕竟,典型的Joe Random Developer希望下载安装程序,单击它并获得一个可以正常运行的产品。
这种情况在这方面将有所改善:自从2.x分支开始以来,GfW努力尽可能多地搭载Msys2生态系统,其中包括其程序包管理工具(基于pacman
IIRC的Windows端口))。我不确定现在是否可以使用,但是目标是通过将GfW作为一组Msys2软件包使用来最终使其可安装。如果您希望对此进行状态更新,请随时在GfW邮件列表中询问。
概括一下,如果尚不存在,有两种方法可以在您的系统上获得GfW:通过(完整)安装程序以及通过Msys2生态系统和它自己的软件包管理器。后一种功能将使您仅安装最少数量的东西(以换取包管理器记账产生的一些开销)。
1如果您在不支持硬链接(例如FAT32)的文件系统上安装了GfW,那将不起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句