msys, msys2 และ msysgit เกี่ยวข้องกันอย่างไร


162

ฉันค้นหามาแล้วแต่ฉันไม่สามารถหาคำอธิบายอย่างละเอียดเกี่ยวกับสิ่งที่เกิดขึ้นกับ MSYS ทั้งสามรุ่นนี้ได้ (มันเป็นไปได้ทั้งหมดฉันไม่รู้ว่าจะมองหาอะไร) ฉันเข้าใจว่า MSYS เป็นเครื่องมือที่มีพอร์ต Linux เพียงเล็กน้อยเพื่อสนับสนุนการพัฒนาโดยใช้ MinGW แต่ฉันไม่ชัดเจนเกี่ยวกับความสัมพันธ์ระหว่างทั้งสามหรือ ทีมที่พัฒนา / ดูแลพวกเขา

ปัญหาเฉพาะที่อยู่:

  • สิ่งที่อยู่ภายใต้การพัฒนาที่ใช้งานอยู่? (โดยเฉพาะ MSYS จะตายและ MSYS2 ทำงานอยู่หรือไม่)
  • ความสัมพันธ์ระหว่างกลุ่มที่รักษาพวกเขาคืออะไร? (โดยเฉพาะทีม MSYS สร้าง MSYS2 หรือไม่)
  • msysgit ใช้เพียงหนึ่งอย่างใดอย่างหนึ่งหรือพวกเขามีสาขาของ MSYS หรือไม่?
  • สิ่งเหล่านี้เข้ากันได้หรือไม่?
  • มีปัญหาความเข้ากันได้กับ Windows รุ่นใดรุ่นหนึ่งโดยเฉพาะหรือไม่
  • มีคุณสมบัติที่สำคัญมากกว่าอีกหรือไม่?

8
@JamesJohnston ก่อนที่จะเขียนคำถามนี้มันเป็น (และเป็น) ความเข้าใจของฉันที่ MSYS และ MinGW ถูกสร้างขึ้นเป็นคู่แข่งกับ Cygwin เพราะ Cygwin (อย่างน้อยก่อนหน้านี้ฉันไม่แน่ใจว่าสถานะปัจจุบันของมัน) บังคับให้รหัสใหม่ใด ๆ ที่จะผ่าน เลเยอร์ความเข้ากันได้ค่อนข้าง non-performant แทนการเรียก Windows APIs โดยตรง ด้วยเหตุนี้ฉันจึงเห็น MSYS และญาติของมันเป็นระบบน้ำหนักเบากว่า Cygwin ดังนั้นฉันจึงไม่สนใจสถานะปัจจุบันของ Cygwin นั่นอาจเป็นคำถามติดตามที่ดีหากคุณสนใจ อย่าลังเลที่จะถามว่าคุณสามารถวลีให้เป็นหัวข้อ
jpmc26

4
ฉันรู้สึกประทับใจเช่นกันจนกระทั่งฉันเริ่มขุดภายใต้ผ้าห่มเมื่อวานนี้ MSYS ทั้งสามเวอร์ชันที่คุณพูดถึงนั้นเป็นของ Cygwin ที่ @Ray Donnelly ชี้ให้เห็น ดังนั้นในแง่นั้นพวกเขาทั้งหมดคือ "Cygwin" - และคำถามนี้เกี่ยวกับ Cygwin และส้อมของมัน เมื่อเรย์ชี้ให้เห็นดูเหมือนว่า MSYS จะถึงวาระแล้ว ฉันตรวจสอบรหัส MSYS ด้วยตัวเอง มันล้าสมัยอย่างไร้ความหวังและขาดการซิงโครไนซ์พื้นฐานผ่านหน่วยความจำที่แชร์ ผู้ดูแลไม่เพียง แต่คอยติดตามต้นน้ำและไม่เคยได้รับการแก้ไขสำหรับหน่วยความจำที่ใช้ร่วมกันซึ่ง Cygwin ได้รับ
เจมส์จอห์นสตัน

9
@JamesJohnston ฉันคิดว่าคุณเข้าใจผิด ประเด็นของฉันคือ Cygwin ไม่สนับสนุนการสร้างไบนารีใหม่โดยไม่มีเลเยอร์ความเข้ากันได้ MSYS และญาติ ๆ ทำผ่าน MinGW เช่นนี้ฉันไม่สนใจ Cygwin แม้จะรู้ตัวดีว่าพวกเขาทั้งหมดมีรากฐานใน Cygwin เนื่องจากฉันไม่สนใจ Cygwin จึงไม่มีเหตุผลที่จะถามเกี่ยวกับมัน คำถามนี้ยังให้ความสำคัญกับประวัติของการฟอร์กตัวเองและสาเหตุของมันและสาเหตุเบื้องต้นของมัน เมื่อพยายามเลือกระหว่าง MSYS เวอร์ชันต่างๆประวัติของ Cygwin นั้นไม่เกี่ยวข้องกันจริงๆ
jpmc26

1
สิ่งที่ฉันไม่เข้าใจคือสาเหตุที่นักพัฒนา MSYS2 และนักพัฒนา Cygwin ไม่สามารถตกลงกันได้และออกจากการทะเลาะกันเพื่อที่เราจะได้หยุดส้อมที่โง่เหล่านี้ Cygwin ได้รับความสนใจเพียงเล็กน้อย แต่อย่างน้อยก็มีพนักงาน Red Hat ที่ได้รับค่าจ้างทำงานอยู่ ส้อมไม่ได้รับสิ่งนั้น ฉันพบการสนทนาเมื่อปีที่แล้วในรายชื่อผู้รับจดหมาย Cygwin เกี่ยวกับการมี MSYS2 เพียงแค่เป็น hook DLL สำหรับ Cygwin เพื่อให้ MSYS2 ไม่ต้องแยกทั้ง Cygwin DLL เห็นได้ชัดว่าการสนทนาเหล่านั้นไม่ได้ไปไกล ในขณะที่ MSYS2 มีพลังงานตอนนี้ฉันคาดการณ์ว่ามันจะซบเซาเหมือน MSYS หาก / เมื่ออาสาสมัคร MSYS2 หยุดอัปเดต
James Johnston

1
@JamesJohnston ฉันคิดว่าคุณอาจจะได้รับคำตอบที่ดีกว่าสำหรับคำถามของคุณในช่อง IRC ที่ Ray พูดถึงในคำตอบของเขา กลุ่มความคิดเห็นนี้เริ่มค่อนข้างยาวและหลุดพ้นจากหัวข้อ
jpmc26

คำตอบ:


178

ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้พัฒนา MSYS2

ในขณะที่ MSYS ยังไม่ตายฉันอยากบอกว่ามันไม่ได้ดูดีมากเช่นกัน มันเป็นโครงการที่เริ่มต้นโดยทีม MinGW เมื่อหลายปีก่อนในฐานะของ Cygwinที่ไม่เคยติดตาม Cygwin มาก่อน

msysgit เป็นทางแยกของ MSYS รุ่นที่เก่ากว่าเล็กน้อยพร้อมกับแพตช์ที่กำหนดเอง, Bash และ Perl เวอร์ชันเก่าและพอร์ตดั้งเดิมของ Git

MSYS2 เป็นโครงการที่เริ่มต้นโดย Alexey Pavlov ของทีมงาน mingw-builds (ซึ่งเป็นผู้ทำแพ็คเก็ตอย่างเป็นทางการสำหรับ MinGW-w64 toolchains) ในฐานะCygwinล่าสุดซึ่งติดตาม Cygwin ล่าสุดอย่างใกล้ชิดเพื่อไม่ให้ล้าสมัย Alexey ส่งต่อโปรแกรมปะแก้ MSYS เก่าและเพิ่มของเขาเอง

รวมทั้งให้เครื่องมือ Unix จำเป็นที่จะรวบรวมซอฟต์แวร์พื้นเมือง - เป้าหมายที่กำหนดไว้ของ MSYS - เรารังเพลิงPacmanผู้จัดการแพคเกจจากArch ลินุกซ์ Pacman เป็นมากกว่าเพียงแค่การจัดการแพ็คเกจไบนารี (แม้ว่าจะทำได้ดีมาก) มันมีโครงสร้างพื้นฐานการสร้างซอฟต์แวร์ที่เรียกว่า makepkg ที่ช่วยให้การสร้างสูตร (PKGBUILD และไฟล์แพทช์) สำหรับการสร้างซอฟต์แวร์

IMHO การใช้ Pacman เปลี่ยนแปลงสิ่งต่าง ๆ อย่างมีนัยสำคัญสำหรับการพัฒนาโอเพ่นซอร์สบน Windows แทนที่จะทุกคนแฮ็คเชลล์สคริปต์ตามความต้องการของตนเองเพื่อสร้างซอฟต์แวร์ในแบบฮ็อดจ์ - พอดจ์วิธีที่ไม่เข้ากันแพคเกจสามารถขึ้นอยู่กับแพ็คเกจอื่นและไฟล์ PKGBUILD และแพตช์ที่เกี่ยวข้องสามารถใช้เป็นข้อมูลอ้างอิงสำหรับการสร้าง PKGBUILDs ใหม่ มันใกล้เคียงกับระบบ Linux ในฐานะที่เป็น (เนทีฟ) Windows สามารถได้รับ (โดยเฉพาะ Arch Linux) และอนุญาตให้อัปเดตแพคเกจที่ติดตั้งทั้งหมดได้ง่าย

เรากำหนดเป้าหมายเป็น Windows XP SP3 เป็นขั้นต่ำและสนับสนุนทั้ง Windows แบบ 32 บิตและ 64 บิต เราจะขอให้คุณไม่ผสม MSYS2 กับ msys หรือ msysgit Pacman ใช้เพื่อจัดการระบบทั้งหมดและดังนั้นไฟล์จากระบบอื่นจะทำให้เกิดข้อขัดแย้ง

นอกจากนี้เรายังพยายามอัปสตรีมแพตช์ของเราไปยังโครงการที่เราสร้างและขอการสนับสนุนจากโครงการโอเพ่นซอร์สอื่น ๆ เราหวังว่าคนอื่น ๆ จะสามารถทำงานกับเราได้ง่าย

เว็บไซต์หลักของเราอยู่บนSourceForgeและมีลิงก์ไปยังที่เก็บ PKGBUILD ของเรา เรายังมีผู้ใช้มากขึ้นเว็บไซต์ติดตั้งที่เป็นมิตรบนGitHub

อย่าลังเลที่จะเข้าร่วมกับเราใน IRC (oftc # msys2) หากคุณต้องการข้อมูลเพิ่มเติม


6
สามารถใช้ msys2 เพื่อสร้างและเรียกใช้ git (เช่นแทนที่ msysgit)
eckes

10
MSYS2 มีแพ็คเกจคอมไพล์ เป็นรุ่น MSYS2 ซึ่งต่างจากรุ่นเนทีฟ ในการติดตั้ง git: pacman -S git .. เรายังมีพอร์ตงานที่กำลังดำเนินการของ msysgit ในที่เก็บ MINGW- แพ็คเกจของเรา
Ray Donnelly

16
ไม่คอมไพล์ MSYS2 ของเรานั้นมีคุณสมบัติที่สมบูรณ์และไม่มีการแฮ็ก เราใช้มันอย่างกว้างขวางในการพัฒนาแพ็คเกจอื่น ๆ มีความกังวลว่า MSYS2 (เนื่องจากเป็นทางแยกของ Cygwin) เพิ่มการใช้งานโอเวอร์เฮดในการดำเนินงานไฟล์และเนื่องจาก git นั้นเป็นไฟล์ที่มีการใช้งานหนักซึ่ง git ดั้งเดิมจะทำงานได้เร็วขึ้น วิธีที่จะพิสูจน์หรือหักล้างสิ่งนี้คือการมีทั้งเกณฑ์มาตรฐานและนั่นคือสิ่งที่เราจะทำ ฉันควรระมัดระวังเกี่ยวกับคำศัพท์นี้เนื่องจากการอ้างอิงถึง msysgit นั้นมีสองสิ่งที่แตกต่างกัน msys-fork กับ git ของ Windows ดั้งเดิมและ git ของ Windows ดั้งเดิม ที่นี่ฉันหมายถึงหลัง!
Ray Donnelly

7
@eckes ฉันแค่อยากบอกว่าฉันใช้ MSYS2 เพื่อคอมไพล์มาสองสามเดือนแล้ว MSYS2 มีสองส่วนคร่าวๆ (ซอฟแวร์อะไรไม่ได้) แต่ฉันมีความสุขมากที่ได้ใช้มัน ไม่มีใครเกี่ยวข้องกับคอมไพล์เอง
jpmc26

7
คำสัญญาของ msys2 นั้นขึ้นอยู่กับความคาดหวังของฉัน ติดตามการทำงานที่ดี @RayDonnelly
bvj

73

Git 2.8 (มีนาคม 2016) รวมถึงรายละเอียดมากกระทำซึ่งจะอธิบายความสำคัญของการ msys2 สำหรับใหม่คอมไพล์สำหรับหน้าต่างซึ่งแทนที่ msysgit ในต้นปี 2015

ดูกระทำ df5218b (13 มกราคม 2016) โดยโยฮันเน Schindelin (dscho )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 116a866 , 29 มกราคม 2016)

เป็นเวลานาน Git สำหรับ Windows ล้าหลังรุ่น 2.x ของ Git เนื่องจากนักพัฒนา Git สำหรับ Windows ต้องการให้การกระโดดครั้งใหญ่นั้นเกิดขึ้นพร้อมกับการกระโดดที่จำเป็นจาก MSys ไปยัง MSys2

เพื่อให้เข้าใจว่าทำไมเรื่องนี้จึงเป็นปัญหาใหญ่จึงจำเป็นต้องสังเกตว่าส่วนต่าง ๆ ของ Git ไม่ได้เขียนในอุปกรณ์พกพา แต่ Git นั้นใช้ POSIX shell และ Perlแทน

เพื่อสนับสนุนสคริปต์ Git สำหรับ Windows มีการจัดส่งชั้นจำลอง POSIX น้อยที่สุดกับทุบตีและ Perl โยนในและเมื่อ Git สำหรับ Windows พยายามเริ่มต้นในเดือนสิงหาคม 2007 นักพัฒนาซอฟต์แวร์นี้ตัดสินเกี่ยวกับการใช้MSYS, รุ่นปล้นลงของ Cygwin
ดังนั้นชื่อดั้งเดิมของโครงการคือ "msysGit" (ซึ่งน่าเศร้าทำให้เกิดความสับสนมากเพราะผู้ใช้ Windows ไม่กี่คนที่รู้เกี่ยวกับ MSys และแม้แต่ความใส่ใจน้อยกว่า)

ในการรวบรวมรหัส C ของ Git สำหรับ Windows นั้น MSys ก็ถูกใช้เช่นกัน: มันรองรับ GNU C Compiler สองรุ่น:

  • ชั้นที่เชื่อมโยงกับเลเยอร์การจำลอง POSIX โดยปริยาย
  • และอีกอันหนึ่งที่มีเป้าหมาย Win32 API แบบธรรมดา (ที่มีฟังก์ชั่นความสะดวกสบายเล็กน้อยโยนเข้ามา)

ไฟล์ประมวลผลของ Git for Windows นั้นสร้างขึ้นโดยใช้โปรแกรมหลังและดังนั้นจึงเป็นเพียงโปรแกรม Win32 เท่านั้น เพื่อ executables มองเห็นกำหนดชั้นจำลอง POSIX จากคนที่ไม่ได้หลังถูกเรียกว่า MinGW (GNU น้อยที่สุดสำหรับ Windows) เมื่ออดีตจะเรียกว่า MSYS executables

การพึ่งพา MSys นี้ก็เป็นสิ่งที่ท้าทายเช่นกัน:

  • การเปลี่ยนแปลงบางอย่างของเราในการรันไทม์ของ MSys ซึ่งจำเป็นต่อการรองรับ Git สำหรับ Windows ดีกว่านั้นไม่ได้รับการยอมรับในขั้นต้นดังนั้นเราจึงต้องรักษาทางเลือกของเราเอง
  • นอกจากนี้รันไทม์ของ MSys ยังไม่ได้รับการพัฒนาเพิ่มเติมเพื่อรองรับเช่น UTF-8 หรือ 64- บิตและนอกเหนือจากการขาดระบบการจัดการแพ็กเกจจนกระทั่งภายหลังมาก (เมื่อmingw-getได้รับการแนะนำ) แพ็คเกจจำนวนมากที่โครงการ MSys / MinGW ล้าหลัง ซอร์สโค้ดเวอร์ชันโดยเฉพาะอย่างยิ่ง Bash และ OpenSSL

ในขณะที่โครงการ Git for Windows พยายามแก้ไขสถานการณ์โดยพยายามสร้างแพ็คเกจรุ่นใหม่ แต่สถานการณ์ไม่สามารถแก้ไขได้อย่างรวดเร็วโดยเฉพาะอย่างยิ่งปัญหาเช่น Heartbleed bug ที่ต้องการการกระทำที่รวดเร็วซึ่งไม่เกี่ยวข้องกับการพัฒนา Git สำหรับ Windows เพิ่มเติม

อย่างมีความสุขในระหว่างนี้โครงการ MSys2 ( https://msys2.github.io/ ) ก็ปรากฏตัวขึ้นและได้รับเลือกให้เป็นฐานของ Git สำหรับ Windows 2.x
เช่นเดียวกับ MSYS, MSys2 เป็นรุ่นปล้นลงของ Cygwin แต่มันจะถูกเก็บไว้อย่างแข็งขัน up-to-date กับรหัสที่มาของ
ดังนั้นมันรองรับ Unicode ภายในแล้วและยังรองรับ 64- บิตที่เราปรารถนาตั้งแต่เริ่มต้นโครงการ Git สำหรับ Windows

MSys2 รังเพลิงยังระบบการจัดการแพคเกจ Pacman จาก Arch Linux และใช้มันอย่างหนัก สิ่งนี้นำมาซึ่งความสะดวกสบายแบบเดียวกันกับที่ผู้ใช้ Linux ใช้ในการyumหรือจากapt-getและผู้ใช้ MacOSX ที่ใช้จาก Homebrew หรือ MacPorts หรือผู้ใช้ BSD จากระบบพอร์ตเป็น MSys2: ง่าย ๆpacman -Syuจะอัปเดตแพ็คเกจที่ติดตั้งทั้งหมดเป็นเวอร์ชั่นล่าสุด สามารถใช้งานได้.

MSys2 นั้นยังทำงานอยู่มากโดยปกติแล้วจะมีการอัพเดทแพ็คเกจหลายครั้งต่อสัปดาห์

ยังคงต้องใช้ความพยายามสองเดือนเพื่อนำทุกอย่างเข้าสู่สถานะที่ชุดทดสอบของ Git ผ่านไปอีกหลายเดือนจนกระทั่ง Git อย่างเป็นทางการชุดแรกสำหรับ Windows 2.x ได้รับการเผยแพร่และแพทช์สองแผ่นยังรอการส่งของโครงการต้นน้ำตามลำดับ . แต่โดยไม่ต้อง MSys2 ทันสมัยของ Git สำหรับ Windows จะเพียงแค่ไม่ได้เกิดขึ้น

การกระทำนี้เป็นการวางรากฐานของการทำงานเพื่อสนับสนุนการสร้าง Git ที่ใช้ MSys2


ในความคิดเห็นคำถามถูกถามในเดือนมกราคม 2559:

เนื่องจาก Git สำหรับ Windows ใช้ MSYS2 อยู่แล้วไบนารีที่ไม่ได้ขึ้นอยู่กับเลเยอร์การจำลองนั้นมีให้เป็นแพ็คเกจ MSYS2 หรือไม่

เรย์ Donnellyตอบในเวลา:

เรายังไม่ได้รวมอย่างเต็มที่เลย เรากำลังดำเนินการอยู่

แต่ ... madz ชี้ให้เห็นว่าในช่วงต้นปี 2017 ความพยายามดังกล่าวไม่ได้เลื่อนออกไป
ดู:

ปัญหาคือฉันไม่สามารถมีส่วนร่วมการเปลี่ยนแปลงที่จะทำให้ msys2-runtime ใหม่ในเวลาที่เหมาะสม
ไม่ใช่ปัญหาใหญ่ แต่ฉันจะคอย Git for Windows ทำงานต่อไปเรื่อย ๆ

วิกิกล่าวถึงตอนนี้ (2018):

Git สำหรับ Windows สร้างแพทช์บางตัวสำหรับ msys2-runtime ที่ยังไม่ได้ส่งอัปสตรีม (สิ่งนี้ได้ถูกวางแผนไว้ แต่ถูกกำหนดในปัญหา # 284 ซึ่งอาจไม่เกิดขึ้น)
ซึ่งหมายความว่าคุณต้องติดตั้ง Git สำหรับ Windows msys2-runtime เองเพื่อให้มีคอมไพล์ทำงานได้อย่างสมบูรณ์ภายใน MSYS2


โปรดทราบว่าตั้งแต่คอมมิชชัน aeb582a9 (Git 2.22, Q2 2019) โครงการ Git for Windows เริ่มกระบวนการอัปเกรดเป็นเวอร์ชันรันไทม์ MSYS2 โดยยึดตาม Cygwin v3.x

mingw: อนุญาตการสร้างด้วยรันไทม์ MSYS2 v3.x

เมื่อเร็ว ๆ นี้โครงการ Git for Windows เริ่มกระบวนการอัปเกรดเป็นเวอร์ชันรันไทม์ MSYS2 ซึ่งอ้างอิง Cygwin v3.x

สิ่งนี้มีผลที่น่าทึ่งมากที่จะ$(uname -r)ไม่รายงานเวอร์ชันที่ขึ้นต้นด้วย "2" อีกต่อไป แต่เป็นเวอร์ชันที่มี "3"

สิ่งนี้ทำลายโครงสร้างของเราเช่นdf5218b ( config.mak.uname: รองรับ MSys2, 2016-01-13, Git v2.8.0-rc0) เพียงแค่ไม่ได้คาดหวังว่ารุ่นที่รายงานuname -rจะขึ้นอยู่กับรุ่น Cygwin พื้นฐาน: คาดว่ารุ่นที่รายงานจะตรงกับ " 2 "ใน" MSYS2 "

ดังนั้นกลับด้านกรณีทดสอบเพื่อทดสอบอย่างอื่นที่ไม่ใช่รุ่นที่ขึ้นต้นด้วย "1" (สำหรับ MSys)
สิ่งนี้จะปกป้องเราในอนาคตแม้ว่า Cygwin จะออกเวอร์ชั่นที่เผยแพร่เช่น 314.272.65536


Git 2.22 (Q2 2019) จะทำการทดสอบในอนาคตกับการอัพเดทสำหรับรันไทม์ MSYS2 ซีรี่ส์ v3.x

ดูกระทำ c871fbe (7 พฤษภาคม 2019) โดยโยฮันเน Schindelin (dscho )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ b20b8fe , 19 พฤษภาคม 2019)

t6500(mingw): ใช้ Windows PID ของเชลล์

ใน Git สำหรับ Windows เราใช้ MSYS2 Bash ซึ่งสืบทอดโมเดล PID ที่ไม่ได้มาตรฐานจากเลเยอร์การจำลอง POSIX ของ Cygwin: กระบวนการ MSYS2 ทุกกระบวนการมี Windows PID ปกติและนอกจากนี้ยังมี MSYS2 PID (ซึ่งสอดคล้องกับกระบวนการเงาที่เลียนแบบ การจัดการสัญญาณแบบ Unix)

ด้วยการอัปเกรดเป็น MSYS2 runtime v3.x กระบวนการเงานี้ไม่สามารถเข้าถึงได้OpenProcess()อีกต่อไปดังนั้น t6500 จึงคิดอย่างไม่ถูกต้องว่ากระบวนการอ้างอิงในgc.pid(ซึ่งจริงๆแล้วไม่ใช่gcกระบวนการจริงในบริบทนี้ แต่เชลล์ปัจจุบัน) ไม่ได้อีกต่อไป ที่มีอยู่

มาแก้ไขกันด้วยการทำให้แน่ใจว่า Windows PID นั้นเขียนไว้ gc.pidในสคริปต์ทดสอบนี้เพื่อให้git.exeสามารถเข้าใจได้ว่ากระบวนการนั้นยังคงมีอยู่จริง


1
สิ่งนี้ทำให้เกิดคำถามที่น่าสนใจมาก: เนื่องจาก Git สำหรับ Windows นั้นใช้ MSYS2 อยู่แล้วมีไบนารีที่ไม่ได้ขึ้นอยู่กับเลเยอร์การจำลองที่มีอยู่ในแพ็คเกจ MSYS2 หรือไม่ @ RayDonnelly กล่าวไว้ข้างต้นว่าทีม MSYS2 มีความสนใจในการสร้างไบนารีเหล่านั้นเพื่อดูว่ามันมีความแตกต่างด้านประสิทธิภาพอย่างไร
jpmc26

4
เรายังไม่ได้รวมอย่างเต็มที่เลย เรากำลังดำเนินการอยู่
Ray Donnelly

4
ในการขยายตัว .. ตอนนี้ยังไม่ได้แพคเกจคอมไพล์ของ MSYS2 ยังเชื่อมโยงกับ msys-2.0.dll ยังมีกระบวนการที่จะรวม MSYS2 กับ Git สำหรับ Windows 'และเมื่อเสร็จสมบูรณ์เราคาดว่าจะวางแพ็คเกจคอมไพล์ของเรา สำหรับแพคเกจเนทีฟอย่างเต็มรูปแบบตั้งแต่แพ็คเกจ msys-2.0.dll เชื่อมโยงอยู่เพื่อสนับสนุนการสร้างซอฟต์แวร์เนทีฟและไม่ได้เป็นเป้าหมายสุดท้ายในสิทธิ์ของตนเอง
Ray Donnelly

1
@RayDonnelly สถานะในขณะนี้คืออะไร? หากแทนที่ Git สำหรับ Windows ด้วย MSYS2 (การจัดการแพ็คเกจ!) มีข้อเสียหรือไม่?
Brecht Machiels


18

ความเข้าใจของฉันเกี่ยวกับการเชื่อมต่อระหว่างพวกเขาคือ

  • Cygwinเสนอการจำลอง POSIX ที่ด้านบนของหน้าต่าง
  • msysพยายามลดความซับซ้อนของ Cygwin แต่ล้าสมัยจากปี 2010
  • msysGit - อนุญาต Git ได้มากถึง 1.9.4 ใน Windows (อาจเรียกว่าgit-for-windows-1.X ) ขึ้นอยู่กับ msys รุ่นเก่า
  • msys2 - Cygwin ที่เรียบง่ายซึ่งแยกจากกันด้วยการเปลี่ยนแปลงจาก msys และซิงค์กับฟีเจอร์ต่าง ๆ จาก Cygwin ซึ่งรวมเข้ากับ Pacman
  • MinGW - MinGWเริ่มต้นถูกละทิ้งจาก 2010
  • MinGW-w64 - การผสานรวมที่รวดเร็วและดีกว่ากับ windows โดยไม่มี POSIX
  • git-for-windows-2.x - มอบ Git ตั้งแต่ 2.X สำหรับ Windows โดยใช้MinGW-64 , MinGW-32และเมื่อไม่สามารถใช้ทางเลือกmsys2 ได้

เปรียบเทียบ Cygwin, msys, msys2, MinGW, git-for-windows, msysGit

ซอกับความหมายสมบูรณ์กราฟในนางเงือก


1
กราฟิกที่ดี +1 "Git สำหรับ Windows 1.0" ได้รับการดำเนินการตามความพยายามอย่างดีที่สุดแล้ว: stackoverflow.com/a/1704687/6309 (ที่ฉันพูดถึงในstackoverflow.com/a/50555740/6309 )
VonC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.