Windows 용 Git에서 설치하는 항목을 최소화하려면 어떻게해야합니까?

DaveG

Windows 클라이언트 용 git은 500MB 이상의 공간을 차지하는 내 컴퓨터에 전체 mingw 배포판을 설치하는 것으로 보입니다.

이것은 Windows 용 Gimp 설치의 거의 두 배입니다!

저는 이미 cygwin, vim 및 제 작업을 수행하는 데 필요한 다른 모든 유틸리티가 있으므로 perl, vim 등의 다른 복사본에 대해 아무것도 필요하지 않습니다. Windows 용 git 클라이언트가 필요합니다.

내가 사용할 수있는 git 클라이언트를 얻기 위해 설치되는 것을 최소화하려면 어떻게해야합니까?

Kostix

여기에는 두 가지가 있습니다.

  • GfW 설치가 차지하는 공간을 계산하는 데 사용한 도구가 무엇이든 잘못되었습니다. 여기에 이유가 있습니다.

    역사적 이유 때문에 많은 "보조"Git 실행 파일은 이제 주 실행 파일 인 git.exe.

    이를 위해 설치 프로그램은 git.exe파일을 작성한 다음 해당 git.exe실행 파일을 가리키는 소위 "하드 링크"를 생성합니다 . 즉, git-*.exe에 위치한 파일 mingw32\libexec\git-core은 모두 하드 링크에 불과합니다.

    내 (다소 먼지가 많은) GfW 설치에는 116 개의 하드 링크가 git.exe있습니다. 약 3MiB를 곱하면 350MiB에 가까운 값을 얻을 수 있습니다. 1

  • 번들로 제공되는 대부분의 항목이 GfW와 관련이없는 것은 실제로 작동하는 데 중요합니다.

    • Git 핵심 기능의 일부는 쉘 스크립트로 작성됩니다. 좋은 예는 git-rebase두 번의 마이너 Git 릴리스 전에 C로 다시 작성되었습니다.

      쉘 스크립트는 POSIX 쉘의 Windows 포트가 필요함을 의미합니다. 그래서 GfW 번들 bash. 또한 유닉스 쉘 프로그래머가 사용할 수있을 것으로 기대하는 유틸리티 세트가 필요함을 의미하기도합니다. 예를 들어 sedor awk등 ( "그냥"이 아니라 실제로 Git 코드의 일부에서 사용되기 때문입니다).

    • git svn다리는 Perl로 작성하고 클라이언트 서브 버전 라이브러리뿐만 아니라 사용할 수 몇 가지 펄 모듈이 필요합니다.

      핵심 구성 요소는 아니지만 많은 사람들이 그 존재를 당연하게 여기기 때문에 여기에 있습니다.

    • 주식 GUI 유틸리티, git gui그리고 gitk은 Tcl / Tk를 작성하는 ... 그래서 무엇을 생각한다.

      그리고 다시 많은 사람들이 그들의 가용성을 당연하게 여기고 있습니다.

    • OpenSSH SSH클라이언트는 같은 이유로 번들로 제공됩니다.

    • HTTP[S]Git의 프로토콜에 대한 지원은 libcURLOpenSSL을 포함한 많은 항목에 따라 구현됩니다 .

    • 이제 내가 열거 한 소프트웨어의 많은 부분이 번들링이 필요한 자체 하드 종속성을 가지고 있음을 고려하십시오.

따라서 기본적으로 꼭 필요하지 않은 두 개의 번들 소프트웨어 인 Vim과 Mintty가 남아 있습니다. GfW 작업을하는 사람들의 의견은 Git Bash 창에서 GfW 작업을 선호하는 사람들이 사용할 수있을 것으로 기대된다는 것입니다. 간단히 말해서, 그들은 Unix 땅에서 왔거나 Windows와 Unix 유사 시스템 (Mac OS X 포함)간에 시스템을주고받는 사람들을 위해 존재합니다.

그래서 ... 좀 더 생각해 보면, 예를 들어 일반적인 GNU / Linux 기반 OS에서 다음과 같이 할 때

apt install git git-gui gitk git-svn

당신은 의존성에 대해 도저히 신경 쓰지 않습니다.

  • 모든 것이 작동하고
  • 어쨌든 이미 95 %의 종속성 (전 이적 종속성 포함)이 설치되어있을 가능성이 매우 높습니다.

이렇게하면 Git 설치가 잘못된 종속성이 거의없는 것처럼 보입니다.

반면 Windows는

  • 패키지 관리자가 없습니다. (아니요, Chocolatey와 NuGet은 그렇지 않습니다.)
  • 95 %의 "종속성"이 이미 설치되어 있지 않습니다.

지금 보시다시피, GfW 개발자는 모든 것을 번들로 묶는 것보다이 제품을 구현하는 다른 현명한 방법이 없었습니다. 결국, 전형적인 Joe Random Developer는 설치 프로그램을 다운로드하고 클릭하여 결과적으로 완전히 작동하는 제품을 얻을 것으로 예상합니다.

상황은 약간 개선 될 것입니다. 2.x 브랜치가 시작된 이후 GfW는 가능한 한 Msys2 생태계에 편승하기 위해 노력하고 있으며 여기에는 패키지 관리 기능 ( pacmanIIRC 의 Windows 포트 기반)이 포함됩니다. ). 지금 작동하는지 확실하지 않지만 목표는 결국 Msys2 패키지 세트로 사용할 수있게하여 GfW를 설치 가능하게 만드는 것이 었습니다. 이에 대한 상태 업데이트를 원하시면 GfW 메일 링리스트에 문의하십시오.

요약하자면, 시스템에 GfW를 설치하는 방법에는 (전체) 설치 프로그램과 Msys2 에코 시스템 및 자체 패키지 관리자를 통한 두 가지 방법이 있습니다. 후자의 기능을 사용하면 최소한의 물건 만 설치할 수 있습니다 (패키지 관리자의 부기에서 발생하는 일부 오버 헤드 대신).


1 FAT32와 같이 하드 링크를 지원하지 않는 파일 시스템에 GfW를 설치 한 경우에는 작동하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Windows에서 git-bash에 'tree / F'명령을 사용하려면 어떻게해야합니까?

분류에서Dev

Windows에서 정책 적용 화면 잠금을 방지하려면 어떻게해야합니까?

분류에서Dev

Windows에서 vim을 사용하여 git diff를 보려면 어떻게해야합니까?

분류에서Dev

Unity에서 UHD 화면 용 글꼴을 최적화하려면 어떻게해야합니까?

분류에서Dev

Windows 10 OS 설치 디스크 공간을 최소화하려면 어떻게해야합니까?

분류에서Dev

Windows에서 SSH를 통해 Git을 사용할 때 MOTD를 비활성화하려면 어떻게해야합니까?

분류에서Dev

EFI의 Windows 부팅 관리자에서 Linux 용 BCD 부팅 항목을 추가하려면 어떻게해야합니까?

분류에서Dev

Windows 10의 새 GVIM 8.2 설치에서 Python을 활성화하려면 어떻게해야합니까?

분류에서Dev

REST API를 사용하여 SharePoint에서 목록 항목을 가져 오려면 어떻게해야합니까?

분류에서Dev

Flexbox CSS를 사용하여 행에 두 항목을 배치하려면 어떻게해야합니까?

분류에서Dev

LinkedHashSet을 사용하여 ArrayList <Object>에서 중복 항목을 삭제하려면 어떻게해야합니까?

분류에서Dev

Google 크롬 (Windows)에서 URL 자동 수정 항목을 제거하려면 어떻게해야합니까?

분류에서Dev

Windows 7에서 Shift + 오른쪽 클릭 SendTo 항목을 추가하려면 어떻게해야합니까?

분류에서Dev

Windows 스토어 앱에서 SQLite 주석을 사용하려면 어떻게해야합니까?

분류에서Dev

Superscrollorama-여러 목록 항목에 애니메이션을 적용하려면 어떻게해야합니까?

분류에서Dev

CSS를 사용하여 목록 항목을 한 줄에 표시하려면 어떻게해야합니까?

분류에서Dev

Windows 10에 설치된 앱 목록 ( "Metro"만 해당)을 표시하려면 어떻게해야합니까?

분류에서Dev

Windows 10에서 '원격 네트워크에 기본 게이트웨이 사용'설정을 비활성화하려면 어떻게해야합니까?

분류에서Dev

Windows 10에서 '원격 네트워크에 기본 게이트웨이 사용'설정을 비활성화하려면 어떻게해야합니까?

분류에서Dev

jquery를 사용하여 캔버스에서 항목을 지우려면 어떻게해야합니까?

분류에서Dev

사용자 입력시 ListView에서 항목을 추가 / 삭제하려면 어떻게해야합니까?

분류에서Dev

Python 3.8과 함께 사용하기 위해 Windows에 pyodbc를 설치하려면 어떻게해야합니까?

분류에서Dev

Jenkins 파이프 라인에서 Windows의 파일 내용을 편집하려면 어떻게해야합니까?

분류에서Dev

Windows XP 운영 체제에서 BitBucket을 사용하려면 어떻게해야합니까?

분류에서Dev

Windows에서 IPython Notebook을 조용히 실행하려면 어떻게해야합니까?

분류에서Dev

Windows 용 Firefox에서 알림 요청을 중지하려면 어떻게해야합니까?

분류에서Dev

고급 창 목록을 사용하여 irssi에서 추가 (원치 않는) 차단 항목을 제거하려면 어떻게해야합니까?

분류에서Dev

정규식을 사용하여 r에서 일치 항목을 찾은 후 요소를 추가하려면 어떻게해야합니까?

분류에서Dev

Windows 8.1 Enterprise에서 PowerShell MSOnline 모듈을 올바르게 설치하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    Windows에서 git-bash에 'tree / F'명령을 사용하려면 어떻게해야합니까?

  2. 2

    Windows에서 정책 적용 화면 잠금을 방지하려면 어떻게해야합니까?

  3. 3

    Windows에서 vim을 사용하여 git diff를 보려면 어떻게해야합니까?

  4. 4

    Unity에서 UHD 화면 용 글꼴을 최적화하려면 어떻게해야합니까?

  5. 5

    Windows 10 OS 설치 디스크 공간을 최소화하려면 어떻게해야합니까?

  6. 6

    Windows에서 SSH를 통해 Git을 사용할 때 MOTD를 비활성화하려면 어떻게해야합니까?

  7. 7

    EFI의 Windows 부팅 관리자에서 Linux 용 BCD 부팅 항목을 추가하려면 어떻게해야합니까?

  8. 8

    Windows 10의 새 GVIM 8.2 설치에서 Python을 활성화하려면 어떻게해야합니까?

  9. 9

    REST API를 사용하여 SharePoint에서 목록 항목을 가져 오려면 어떻게해야합니까?

  10. 10

    Flexbox CSS를 사용하여 행에 두 항목을 배치하려면 어떻게해야합니까?

  11. 11

    LinkedHashSet을 사용하여 ArrayList <Object>에서 중복 항목을 삭제하려면 어떻게해야합니까?

  12. 12

    Google 크롬 (Windows)에서 URL 자동 수정 항목을 제거하려면 어떻게해야합니까?

  13. 13

    Windows 7에서 Shift + 오른쪽 클릭 SendTo 항목을 추가하려면 어떻게해야합니까?

  14. 14

    Windows 스토어 앱에서 SQLite 주석을 사용하려면 어떻게해야합니까?

  15. 15

    Superscrollorama-여러 목록 항목에 애니메이션을 적용하려면 어떻게해야합니까?

  16. 16

    CSS를 사용하여 목록 항목을 한 줄에 표시하려면 어떻게해야합니까?

  17. 17

    Windows 10에 설치된 앱 목록 ( "Metro"만 해당)을 표시하려면 어떻게해야합니까?

  18. 18

    Windows 10에서 '원격 네트워크에 기본 게이트웨이 사용'설정을 비활성화하려면 어떻게해야합니까?

  19. 19

    Windows 10에서 '원격 네트워크에 기본 게이트웨이 사용'설정을 비활성화하려면 어떻게해야합니까?

  20. 20

    jquery를 사용하여 캔버스에서 항목을 지우려면 어떻게해야합니까?

  21. 21

    사용자 입력시 ListView에서 항목을 추가 / 삭제하려면 어떻게해야합니까?

  22. 22

    Python 3.8과 함께 사용하기 위해 Windows에 pyodbc를 설치하려면 어떻게해야합니까?

  23. 23

    Jenkins 파이프 라인에서 Windows의 파일 내용을 편집하려면 어떻게해야합니까?

  24. 24

    Windows XP 운영 체제에서 BitBucket을 사용하려면 어떻게해야합니까?

  25. 25

    Windows에서 IPython Notebook을 조용히 실행하려면 어떻게해야합니까?

  26. 26

    Windows 용 Firefox에서 알림 요청을 중지하려면 어떻게해야합니까?

  27. 27

    고급 창 목록을 사용하여 irssi에서 추가 (원치 않는) 차단 항목을 제거하려면 어떻게해야합니까?

  28. 28

    정규식을 사용하여 r에서 일치 항목을 찾은 후 요소를 추가하려면 어떻게해야합니까?

  29. 29

    Windows 8.1 Enterprise에서 PowerShell MSOnline 모듈을 올바르게 설치하려면 어떻게해야합니까?

뜨겁다태그

보관