2013-07-10 6 views
4

다른 시스템에서 vim을 사용하고 구성을 동기화하려는 경우 pathogen을 사용하여 잘 알려진 방법을 시도하여 다른 vim 플러그인을 설치하여 설명한대로 git 서브 모듈로 유지합니다 예 : here.병원균 및 git 하위 모듈을 사용하여 vim 번들 사용자 정의

이제 내 .vim 폴더는 서브 폴더로 .vim/bundle에 들어있는 자식 레포입니다. 그 메인 레포를 bitbucket에 업로드하고 다른 머신에서 복제했습니다. git submodule initgit submodule update 이후에는 원하는대로 모두 동일한 구성을 얻었습니다.

이제 일부 플러그인에서 일부 사용자 정의가 필요할 때 문제가 발생합니다. 예를 들어, 일부 서브 모듈은 단순한 빔 색상 표입니다. 주석의 색깔을 바꾸고 싶다고 가정 해 봅시다. 그렇게하는 것이 올바른 방법일까요? I (예를 들어) 직접 .vim/bundle/vim-github-colorscheme/colors을 수정하는 경우, 다음 AFAIK, 내가 어떤 난 못해, 주요 vim-github-colorscheme의 repo에 해당 변경 사항을 추진해야하고, 어쨌든 말도 안되는 것

  1. :

    몇 가지 아이디어

    내 마음 공동왔다 . 내 사용자 정의는 본질적으로 비공개입니다. 그러나 서브 모듈 레포와 동기화하지 않으면 변경 사항이 다른 시스템에서 볼 수 없습니다.
  2. .vim/colors에 내 자신의 colorscheme 사용자 정의를 유지하면이 변경 사항이 주 repo의 일부가되어 시스템간에 쉽게 공유되지만 이는 병원체의 "번들"철학을 파괴합니다. 또한이 방법으로 다른 방법으로 사용자 정의를 수행하는 방법이 명확하지 않습니다 (예 : snipMate에 대한 일부 스 니펫 수정 또는 플러그인 코드 수정)
  3. 플러그인의 개인 포크를 만들어 업로드해야합니까? bitbucket으로 옮겨서 원래의 서브 모듈 대신 서브 모듈로 사용합니까? 이 방법은 적어도 내가 1에서 접근법을 제대로 할 수는 있지만 좋은 옵션으로 보지 않습니다. 특별히 플러그인을 커스터마이징 할 필요가 있을지 미리 알지 못하기 때문에, "just in case"를 설치할 때마다 새로운 vim 플러그인을 만들어야합니다.
  4. 번들 코드를 단일 자식 레포 아래에 보관할 수 있습니다. 즉, 하위 모듈을 전혀 사용하지 마십시오. 이렇게하면 자유롭게 수정할 수 있고 수정 사항을 Bitbucket Repo와 동기화하여 모든 컴퓨터에 단일 git pull으로 배포 할 수 있습니다. 그러나 이런 식으로, 플러그인의 원래 소스에서 변경이 이루어지면 내 자신의 수정 내용과 병합하기가 어려울 것입니다.

나는 아이디어가 없어졌으며, 위의 모든 것은 하나 또는 다른 이유로 저에게 틀린 것 같습니다. 자식과 병원균을 사용하는 사람들이이 시나리오를 어떻게 관리합니까?

답변

4

3은 사용 사례에 가장 적합한 솔루션입니다. 모든 포크를 체계적으로 만들 필요는 없습니다. 이 실제로 일 때만 플러그를 포크하고 원래의 하위 모듈을 포크로 교체해야합니다.

즉, 3과 4의 혼합을 사용합니다. 내 플러그인은 서브 모듈이 아니며 사용자 지정 목적으로 두 개를 포크로 만들었습니다.

+0

Ok. 그러나 원래 repo에서 변경 사항을 병합하려면 더 많은 구성이 필요합니다. 3을 사용하면 원래의 repo를 업스트림으로 추가해야하며 내 자신의 포크 사본과 함께 추가하지 않으면 안됩니까? 그리고 제가 4를 사용한다면 어떻게 할 수 있습니까? – JLDiaz

+0

내 의견 *은 원래 저장소에 신경 쓰지 않아야한다는 것입니다. 변경 사항을 "비공개"로 설정 한 경우, 정의에 따라 변경 사항은 업스트림에 푸시되지 않습니다. ou가 그것을 좋아하는 경우 github로 풀 요청을하는 것이 너무 쉽습니다. 내가 신발에 있다면 너무 많이 생각하지 않을 것입니다. 도망자 포크에 어떤 일을 하든지 어쨌든 원본 repo에 대한 권리를 행사할 수는 없습니다. 좋은 github 시민 일 것 및 머리 분열에 당신의 시간을 낭비하는 다른 것. – romainl

+0

혼란을 가져 주어서 죄송합니다. 변경 사항을 적용 할 의도는 없었지만 원래 repo에서 변경 사항을 가져 와서 내 맞춤 설정과 병합했습니다. 내 생각에 항상 최신 상태를 유지하고 맞춤 설정을 유지하는 것이 합리적이라고 생각합니다. – JLDiaz

1

다른 해결책이 있습니다. Git의 하위 트리 병합을 사용하면 각 지점이있는 모든 플러그인의 공식 저장소 복사본을 얻을 수 있습니다. 그런 다음 하나의 브랜치에서 모두 함께 존재하며, 원하는만큼 플러그인을 편집 할 수 있으며, 업데이트 할 때 각 플러그인 브랜치를 체크 아웃하고 업데이트 한 다음 모든 브랜치에 다시 병합합니다 살고 있다.

플러그인에 대한 변경 사항이 예상대로 병합됩니다.

이것은 모든 유연성을 제공하고 문제를 해결하지만 설치하는 데 약간의 고통이 있으며 최신 상태로 유지하는 데 어려움이 있습니다.

+0

Pathogen에 git-subtree를 사용하는 방법은 다음과 같습니다. http://endot.org/2011/05/18/git-submodules-vs-subtrees-for-vim-plugins/ – mahemoff