cabal에서 Giit 창고에서 패키지를 직접 설치할 때 다운로드를 줄이기 위해

1641 단어 CabalHaskell
Cabal 2.4 이후source-repository-packagestanza를 통해 GiitHub 등의 창고에서 직접 설치해 봉인할 수 있다.
예를 들어, cabal입니다.프로젝트 파일에서 다음과 같이 기술합니다.
source-repository-package
    type: git
    location: https://github.com/brendanhay/amazonka
    tag: 0ccede621e56fb6f240e4850e205cde82d0e4a4b
    subdir: lib/amazonka lib/amazonka-core lib/services/amazonka-sts
(또한subdir에 여러 개의 디렉터리를 지정하려면cabal-istall>=3.2.0.0이 필요할 것 같다)
이렇게 하면 GiitHub 창고에서 아마존카 포장을 직접 설치할 수 있다.
하지만 이렇게 하면 cabal은 무슨 일이 있어도 창고의 전액 대출을 받기 때문에 대량의 다운로드가 발생한다.
이와 상대적인workaround는 로컬 파일 시스템에서 shoallow clone을 잠시 사용하고 source-repository-package에서 이shoallow clone을 지정하는 방법이 있다.
상기 예에서 먼저 다음과 같이 로컬 클론 2.0.0-rc1 탭의 스냅샷만
$ cd /path/to/repo
$ git clone -b 2.0.0-rc1 --depth 1 --no-tags https://github.com/brendanhay/amazonka amazonka-2.0-rc1
cabal.프로젝트에서 로컬 Git 저장소를 지정합니다.
source-repository-package
    type: git
    location: file:///path/to/repo/amazonka-2.0-rc1
    tag: 0ccede621e56fb6f240e4850e205cde82d0e4a4b
    subdir: lib/amazonka lib/amazonka-core lib/services/amazonka-sts
(시도는 안 했지만 git clone 명령어--bare에서도 선택 가능)
참조:
  • 8.1.1. Specifying Packages from Remote Version Control Locations - Cabal User's Guide
  • 게임 이름:source-repository-package generats fat clones·Issue#7264·haskell/call
  • 좋은 웹페이지 즐겨찾기