2011-09-04 2 views
2

나는 dotfiles repository에서 Git 하위 모듈을 사용하여 내가 사용하는 각 Emacs 패키지를 추적했다. 패키지 관리자가 Emacs 24에 내장되어 있기 때문에 좀 더 공식적이고 사용하기 쉬운 방법으로 바꾸고 싶습니다.Dotfiles 저장소 : 이식성을 유지하면서 패키지 별 Git 하위 모듈을 ELPA로 전환

내 문제점 : 현재의 Git 하위 모듈 방법을 사용하면 dotfiles 저장소의 모든 복제본에 참조 된 모든 추가 기능이 포함됩니다. 이 패키지 관리자 내에 패키지의 동기화를 허용하는 기능이 내장되어 있으므로 Git repo의 모든 패키지에 필요한 패키지가 포함될 수 있습니다 (또는 모두 단일 명령으로 설치할 수있게 할 수 있습니까?).

이 패키지에는 아무 것도 없지만 패키지의 텍스트 기반 목록을 유지 관리하는 데 사용할 수있는 "패키지 설치 후크"가 있습니다 (나중에 패키지를 설치하는 사용자 정의 명령으로 읽을 수 있음). 명부)? 기본적으로 내 패키지/패키지 목록을 컴퓨터간에 이식 가능하도록 버전 제어하에 보관하고 싶습니다.

+0

el-get https://github.com/dimitri/el-get을 확인해야합니다. – kindahero

답변

4

나는 kindahero의 제안에 의해 el-get을 시도했지만 이것은 나에게 잘 맞지 않았다. 코드의 일부 버그 또는 Emacs Lisp의 기술 부족으로 인해 올바르게로드되지 않았다. 후자의).

은 내가 Emacs Prelude 프로젝트 우연히, 그리고 소스를 통해 검색하는 동안 코드의 매우 간단한 조각을 발견

(require 'package) 
(add-to-list 'package-archives 
      '("marmalade" . "http://marmalade-repo.org/packages/") t) 
(package-initialize) 

(when (not package-archive-contents) 
    (package-refresh-contents)) 

(defvar prelude-packages 
    '(auctex clojure-mode coffee-mode deft gist haml-mode 
       haskell-mode magit markdown-mode paredit projectile 
       sass-mode scss-mode yaml-mode yari yasnippet) 
    "A list of packages to ensure are installed at launch.") 

(dolist (p prelude-packages) 
    (when (not (package-installed-p p)) 
    (package-install p))) 

내가 뻔뻔하게 내 own purposes이를 훔쳐, 그것은 좋은 일하고있다. 패키지 관리자 (마멀레이드 레포 포함)로 전환하여 거의 모든 서브 모듈을 삭제했습니다.