msys,msys2和msysgit如何相互关联?

我一直在四处搜寻,但是我无法find关于这三个版本的MSYS的详细描述。 (这完全有可能我只是不知道该找什么。)我明白,MSYS是Linux工具的一个最小端口,用于支持使用MinGW进行开发,但是我不清楚它们三者之间的关系或者开发/维护它们的团队。

要解决的特殊问题:

  • 哪些正在积极发展? (特别是,MSYS死了,MSYS2活跃?)
  • 维持它们的群体之间的关系是什么? (尤其是,MSYS团队是否创build了MSYS2?)
  • msysgit只使用其中一个,或者他们有自己的MSYS分支?
  • 这些中的任何一个是否相互兼容?
  • 对于这些特定版本的Windows是否存在兼容性问题?
  • 一个是否提供了另一个主要function?

免责声明:我是MSYS2开发人员

尽pipeMSYS还没有死,但是我也会说它看起来并不健康。 这是明年团队开发的一个项目,Cygwin的分支从来没有跟上过Cygwin。

msysgit是稍微老版本的MSYS的一个分支,带有一些自定义的补丁,旧版本的bash和perl以及git的本地端口。

MSYS2是由mingw-builds团队的Alexey Pavlov(他们是MinGW-w64工具链的官方软件包)开始的一个项目,作为Cygwin最近的一个分支,它跟踪最新的Cygwin,以便它不会过期。 阿列克谢向前移植了旧的MSYS补丁,并添加了他自己的一些。

除了提供编译本机软件所需的Unix工具(MSYS的既定目标),我们还从Arch Linux移植了Pacman软件包pipe理器。 Pacman不仅仅是pipe理二进制包(尽pipe它非常好)。 它有一个称为makepkg的软件构build基础结构,允许创build配方(PKGBUILD和补丁文件)来构build软件。 恕我直言,Pacman的采用改变了Windows上开源开发的重大事件。 不是所有人都用自己定制的shell脚本来构build软件,而是采用大杂烩,不兼容的方式,所以软件包现在可以依赖于其他软件包,PKGBUILD文件和相关的补丁可以作为构build新的PKGBUILD的参考。 它和Windows系统一样(尤其是Arch系统)与Linux系统非常接近,可以简单地更新所有已安装的软件包。

我们将Windows XP SP3作为最低要求,同时支持32位和64位Windows。 我们会问,你从来没有混合MSYS2与MSYS或MSYSGIT。 Pacman被用来pipe理整个系统,因此来自其他系统的文件将导致冲突。

我们也尝试将补丁上传到我们构build的项目中,并积极地征求其他开源项目的贡献。 我们希望别人觉得和我们一起工作很容易。

我们的主要网站在Sourceforge上 ,它包含了我们PKGBUILD存储库的链接。 我们在github上也有一个用户友好的安装程序站点。

如果您需要更多信息,请随时join我们的IRC(oftc#msys2)。

Git 2.8(2016年3月)包含了一个非常详细的提交,它解释了msys2在2015年初取代msysgit的新的git-for-windows的 重要性 。

请参阅由Johannes Schindelin( dscho ) 提交的df5218b (2016年1月13日) 。
(由Junio C gitster合并- gitster -在2016年1月29日第gitster 提交 )

很长一段时间,Git for Windows落后于Git的2.x版本,因为Windows开发人员的Git希望让这个大跳跃与从MSys到MSys2的必要跳跃一致。

要理解为什么这是一个大问题, 需要注意的是Git的许多部分不是用可移植的C语言编写的,而是Git依赖POSIX shell和Perl来提供

为了支持这些脚本,Git for Windows必须在Bash和Perl中引入一个最小化的POSIX仿真层 ,而当Git for Windows工作在2007年8月开始时,这个开发者决定使用Cygwin的精简版本MSys
因此,项目的原始名称是“msysGit”(可惜,由于很less有Windows用户知道MSys,所以很less引起混淆,更不用说了)。

为了编译用于Windows的Git的C代码,也使用了MSys:它运行GNU C编译器的两个版本:

  • 一个隐式链接到POSIX仿真层,
  • 另一个针对普通的Win32 API(带有一些便利函数)。

Git for Windows的可执行文件是使用后者构build的,因此它们实际上只是Win32程序。 为了识别需要POSIX仿真层的可执行文件,后者被称为MinGW(Minimal GNU for Windows),前者称为MSys可执行文件

但是,对MSys的这种依赖也带来了挑战:

  • 我们对MSys运行时所做的一些更改(为了更好地支持Windows的Git)是不被上游接受的,所以我们必须维护我们自己的分支。
  • 此外,MSys运行时间还没有进一步开发,以支持,例如UTF-8或64位,除了缺less一个包pipe理系统,直到很久以后(当引入mingw-get时),MSys / MinGW项目提供的许多包在各自的源代码版本之后,特别是Bash和OpenSSL。

有一段时间,Git for Windows项目试图通过尝试构build这些软件包的更新版本来弥补这种情况,但是这种情况很快就变得站不住脚了,特别是像Heartbleed bug这样的问题需要迅速的行动,与开发Git无关Windows进一步。

令人高兴的是,与此同时MSys2项目( https://msys2.github.io/ )出现了,被选为Windows 2.x的Git的基础。
就像MSys一样,MSys2是Cygwin的一个精简版,但它被Cygwin的源代码主动保持最新
因此,它已经在内部支持Unicode,并且还提供了自Git for Windows项目开始以来我们所渴望的64位支持。

MSys2也移植了Arch Linux的Pacman软件包pipe理系统,并大量使用它 。 这为Linux用户使用yumapt-get以及MacOSX用户从Homebrew或MacPorts或BSD用户从Ports系统到MSys2带来了同样的便利:简单的pacman -Syu将更新所有已安装的软件包都可以使用最新版本。

MSys2也非常活跃,通常每周提供多次软件包更新。

它仍然需要两个月的时间才能把所有的东西都带到Git的testing套件所经过的状态,直到第一个官方的Windows 2.x版Git发布之前,还有好几个月的时间,还有一些补丁还在等待提交给相应的上游项目。 然而,如果没有MSys2,Git for Windows的现代化将不会发生

这一承诺奠定了基础,以支持基于MSys2的Git构build。