2012-04-07 3 views
1

Я новичок в git, поэтому вопрос может быть действительно глупым, извините за это. Я имею в виду, что я даже нашел здесь проблемы с stackoverflow, довольно близкие к моим, но до сих пор не понимаю, как правильно решить проблему.Использование git-подмодулей с моим собственным репо

У меня есть github repo с моими точками, в том числе для vim. Я использую патоген с Vim, поэтому естественный способ получить плагины швы быть

git submodule add https://github.com/msanders/snipmate.vim.git vim/bundle/snipmate 
... 
git submodule init 
git submodule update 
git submodule foreach git submodule init 
git submodule foreach git submodule update 

которым я нашел где-то. Последние четыре команды, которые я просто добавил в свой сценарий установки, запускать каждый раз, когда я клонирую это репо.

Первая проблема это git status всегда показывает мне

# modified: vim/bundle/snipmate (untracked content) 
# ... 

в разделе # Changed but not updated: и git add vim/bundle/snipmate не помогает. Это довольно раздражает.

Вторая проблема, я, очевидно, не палочка держать snipmate фрагменты по умолчанию, и я хочу, чтобы изменить их, и из-за патогена фрагменты сохраняются в snipmate папку, которая подмодуль, не мое собственное репо. Конечно, я мог бы просто clone их там, или даже создать вилку некоторых из них, но это не кажется хорошим решением:

  • Он путает свой собственный код с кодом другого можно найти на GitHub;
  • Я действительно не буду изменить snipmate, я собираюсь настроить его;
  • Все это делает сложным или даже невозможным обновление тридцатичастных плагинов.

Возможно, кто-то может помочь найти «правильный» ответ?

+0

forking - единственное правильное и хорошее решение для вашей второй проблемы. –

ответ

0

Вы можете начать с чтения snipmate's doc, в котором говорится, что рекомендуемое по умолчанию местоположение для ваших собственных фрагментов (предположим, что ваш материал находится под ~/.vim) ~/.vim/snippets/<filetype>.snippets. Вне каталога плагина, вне подмодуля.

Да Подмодули Git классные, но они, вероятно, не идеальное решение для управления конфигурацией Vim.

+0

Да, и при использовании патогена это будет .vim/bundle/snipmate/snippets /. Конечно, я все еще могу создать свой собственный .vim/snippets /, но набор по умолчанию будет загружен в любом случае. – user1094249

+0

Идея состоит в том, чтобы поместить свои собственные фрагменты в их собственное местоположение, чтобы вы могли обновлять snipmate без перезаписи своих фрагментов. – romainl

+0

Я не знаю, в чем проблема. [Snipmate] (https://github.com/garbas/vim-snipmate) не поставляется со стандартными фрагментами: вам нужно установить их отдельно. Если вам не нравятся и вы хотите использовать свои собственные фрагменты, просто не устанавливайте пакет и не помещайте свои фрагменты в '~/.vim/snippets /'. Я не могу придумать более простую настройку. Если вы используете [старый snipmate] (https://github.com/msanders/snipmate.vim), как и я, нет абсолютно никакого смысла импортировать его в качестве подмодуля, поскольку проект полностью мертв в течение 2 лет , Параметр для описания фрагментов находится в L189 файла ': h snipmate'. – romainl

0

Я использую снотворное и патоген с помощью vim. Возбудитель позволяет использовать подмодулях возможные установки

Мой snipmate плагин здесь (и намного проще!): Установлены здесь

.vim/bundle/snipmate 

Мои сниппеты:

.vim/bundle/snipmate-snippets 

Пример сниппет здесь:

.vim/bundle/snipmate-snippets/snippets/c.snippets 

У меня также есть рабочий репо с фрагментами.Они здесь:

.vim/bundle/work/snippets/cpp.snippets 

До тех пор, пока есть папка а фрагменты в вашем runtimepath (:help rtp), вы хорошо. Это волшебство патогена.

Чтобы установить мои Подмодули я сделал:

git submodule add git://github.com/garbas/vim-snipmate.git bundle/snipmate 
git submodule add git://github.com/honza/snipmate-snippets.git bundle/snipmate-snippets 

Когда я хочу, чтобы обновить свой ВИМ репо Я делаю это:

git pull origin master 
git submodule update --init 

Если я на самом деле изменить пульт для субмодуля (например, если я раздвоенный snipmate на GitHub и хотите указать свой локальный репозиторий на новой вилке), меняю .gitmodules и сделать:

git submodule sync 

Используя подмодули, это упростит обновление git submodule git pull origin и будет проще модифицировать и выталкивать обновления обратно сопровождающему.

Смежные вопросы