使用git子模块和我自己的repo

时间:2012-04-07 16:40:00

标签: git vim git-submodules pathogen

我是git的新手,所以问题可能真的很愚蠢,对不起。我的意思是,我甚至发现这里的stackoverflow问题非常接近我的,但仍然不明白如何正确解决问题。

我有gifub repo和我的dotfiles,包括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

我找到了什么地方。最后四个命令我只是添加到我的设置脚本中,每次克隆此repo时都会运行。

第一个问题 git status始终显示

# modified:   vim/bundle/snipmate (untracked content)
# ...
# Changed but not updated:部分中的

git add vim/bundle/snipmate没有帮助。这很烦人。

第二个问题我显然不会将 snipmate 片段保留为默认值,我想更改它们,因为病原体片段存储在 snipmate 文件夹中,该文件夹是子模块,而不是我自己的存储库。当然,我可以在那里简单clone,或者甚至创建其中一些的分叉,但这似乎不是一个好的解决方案:

  • 它弄乱了我自己的代码,其他的代码可以在github上找到;
  • 我真的不打算修改 snipmate,我要配置它;
  • 所有这些都使得更新,甚至无法更新三十部分插件。

也许有人可以帮助找到“正确”的答案?

2 个答案:

答案 0 :(得分:0)

您可以先阅读snipmate's doc,其中指出您自己的代码段的默认推荐位置是(假设您的内容位于~/.vim~/.vim/snippets/<filetype>.snippets。在插件目录之外,在子模块之外。

是的Git子模块很酷但它们可能不是管理Vim配置的完美解决方案。

答案 1 :(得分:0)

我用vim使用snipmate和病原体。病原体使子模块成为可能(并且更容易!)

我的snipmate插件安装在这里:

.vim/bundle/snipmate

我的片段安装在这里:

.vim/bundle/snipmate-snippets

这里有一个示例代码:

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

我还有一个特定于工作的回购片段。他们在这里:

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

只要你的运行路径(: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

当我想更新我的vim repo时,我这样做:

git pull origin master
git submodule update --init

如果我实际更改了子模块的遥控器(比如我在github上分叉了snipmate并希望将我的本地仓库指向新的分支),我改变.gitmodules并执行:

git submodule sync

通过使用子模块,它可以更容易地更新git submodule git pull origin并更容易修改并将更新推送回维护者。