These are my dotfiles. There are many others like them, but these ones are mine.
To install a new plugin:
git submodule add url vim/bundle/path git submodule init && git submodule update git add . git commit -m "Install foo bundle as a submodule to vim/bundle/path" or whatever
To pull all plugins:
git submodule foreach git pull [origin master]
To remove a plugin:
delete the relevant section from .gitmodules delete the relevant section from .git/config run git rm --cached vim/bundle/path (no trailing slash!) commit and delete the now-untracked submodule files
git clone https://github.com/jonspeicher/dotfiles ~/.dotfiles git submodule init git submodule update
To link (eventually):
cd ~ .dotfiles/dotlink.py platform
Dotfile precedence is awful, with /etc files, tree-local files, ~/ files, command-line options, shell options, and environment variables all entering the equation, and various schemes for merging, overriding, or chaining config. In general the assumption is that simply linking these files into ~ is enough. Where there are issues or other requirements I'll try to note it in the file, and I'll try to provide a link to more information regarding the mess in the file header where I can. If there are really crazy special exceptions I'll note them.