如何最小化Git for Windows安装的内容?

戴夫

用于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程序员期望可以使用的实用程序,例如sedorawk等(不是“仅仅因为”,而是因为它们确实被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而就,因为

  • 一切都正常,
  • 很有可能您已经安装了95%的依赖项(包括可传递的依赖项)。

这使得Git的安装看起来几乎具有零依赖关系,这是错误的。

另一方面,Windows

  • 没有程序包管理器。(不,不是Chocolatey和NuGet。)
  • 尚未安装“依赖项”的95%。

如您现在所见,GfW开发人员没有其他明智的方法来实现该产品,而不必捆绑所有东西。毕竟,典型的Joe Random Developer希望下载安装程序,单击它并获得一个可以正常运行的产品。

这种情况在这方面将有所改善:自从2.x分支开始以来,GfW努力尽可能多地搭载Msys2生态系统,其中包括其程序包管理工具(基于pacmanIIRC的Windows端口))。我不确定现在是否可以使用,但是目标是通过将GfW作为一组Msys2软件包使用来最终使其可安装。如果您希望对此进行状态更新,请随时在GfW邮件列表中询问。

概括一下,如果尚不存在,有两种方法可以在您的系统上获得GfW:通过(完整)安装程序以及通过Msys2生态系统和它自己的软件包管理器。后一种功能将使您仅安装最少数量的东西(以换取包管理器记账产生的一些开销)。


1如果您在不支持硬链接(例如FAT32)的文件系统上安装了GfW,那将不起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

定义热键,最小化Windows上的崇高文字2

来自分类Dev

C#Windows窗体启动始终最小化

来自分类Dev

Windows如何从桌面快捷方式强制“最小化”状态?

来自分类Dev

如何在Inno Setup中最小化安装程序?

来自分类Dev

最小化HTML内容

来自分类Dev

最小化动态内容的Ajax / jquery函数

来自分类Dev

如何使用cmd在最小化的窗口中启动Windows 10应用程序?

来自分类Dev

Xubuntu桌面最小化安装

来自分类Dev

如何实际启动Windows 10中最小化的程序?

来自分类Dev

Windows 8:“最小化”快捷方式

来自分类Dev

FVWM的Windows按钮(最大化最小化...),主题

来自分类Dev

Xubuntu桌面最小化安装

来自分类Dev

最小化系统启动时的Windows窗体

来自分类Dev

Windows最小化到顶部

来自分类Dev

定义热键,最小化崇高文本上的Windows 2

来自分类Dev

最小化和恢复应用程序时如何处理网络呼叫错误-Windows Phone 8

来自分类Dev

CefSharp。最小化Windows窗体时获得灰色内容

来自分类Dev

如何在Windows 8.1下最小化当前屏幕中的所有窗口?

来自分类Dev

如何在Windows上最小化到系统托盘的信号?

来自分类Dev

Windows窗体中窗体最小化的奇怪效果

来自分类Dev

如何在没有互联网连接的情况下进行最小化安装?

来自分类Dev

如何在Windows 10中使任务栏保持隐藏(即最小化)?

来自分类Dev

Skype 8.x最小化启动时无需重新安装Windows 7

来自分类Dev

如何最小化Ubuntu 16.04 blo肿安装

来自分类Dev

如何配置最小化Ubuntu安装?

来自分类Dev

即时贴Windows 10不会最小化

来自分类Dev

如何使在Windows启动时运行的程序自动最小化/关闭?

来自分类Dev

最小化内容宽度

来自分类Dev

WPF:最小化 System.Windows.Window 的状态

Related 相关文章

热门标签

归档