- You need to create a git repository using 'git init' in the dir you want to have all plugins before running 'git subtree'.
[ben@localhost vim-plugins]$ git subtree add --prefix ./vim-pathogen https://github.com/tpope/vim-pathogen.git master --squash fatal: Not a git repository (or any parent up to mount point /home) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). [ben@localhost vim-plugins]$ git init Initialized empty Git repository in /home/ben/git/vim-plugins/.git/
- You have to have at least one commit.
[ben@localhost vim-plugins]$ git subtree add --prefix ./vim-pathogen https://github.com/tpope/vim-pathogen.git master --squash fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git
[ ...] -- [ ...]' Working tree has modifications. Cannot add. [ben@localhost vim-plugins]$ vi README.md [ben@localhost vim-plugins]$ git add . [ben@localhost vim-plugins]$ git commit -m "initial commit" [master (root-commit) 70de380] initial commit 1 file changed, 2 insertions(+) create mode 100644 README.md - Then you might see this error. What's wrong? Don't use any path './'. I tried '$PWD/vim-pathogen', the same error. I'm using Git 1.8.3 on Fedora 19. Not sure it is a version issue or not.
[ben@localhost vim-plugins]$ git subtree add --prefix ./vim-pathogen https://github.com/tpope/vim-pathogen.git master git fetch https://github.com/tpope/vim-pathogen.git master warning: no common commits remote: Counting objects: 499, done. remote: Compressing objects: 100% (235/235), done. remote: Total 499 (delta 148), reused 499 (delta 148) Receiving objects: 100% (499/499), 82.10 KiB | 0 bytes/s, done. Resolving deltas: 100% (148/148), done. From https://github.com/tpope/vim-pathogen * branch master -> FETCH_HEAD error: Invalid path './vim-pathogen/CONTRIBUTING.markdown' error: Invalid path './vim-pathogen/README.markdown' error: Invalid path './vim-pathogen/autoload/pathogen.vim' error: pathspec 'vim-pathogen' did not match any file(s) known to git. [ben@localhost vim-plugins]$ git subtree add --prefix vim-pathogen https://github.com/tpope/vim-pathogen.git master git fetch https://github.com/tpope/vim-pathogen.git master From https://github.com/tpope/vim-pathogen * branch master -> FETCH_HEAD Added dir 'vim-pathogen'
- You can define a repository using 'git remote add', then use name instead of the url.
[ben@localhost vim-plugins]$ git remote add hive https://github.com/autowitch/hive.vim.git [ben@localhost vim-plugins]$ git subtree add -P hive.vim hive master git fetch hive master From https://github.com/autowitch/hive.vim * branch master -> FETCH_HEAD Added dir 'hive.vim'
- You may not use 'tabular/master' unless you fetch tabular.
[ben@localhost vim-plugins]$ git remote add tabular https://github.com/godlygeek/tabular.git [ben@localhost vim-plugins]$ git subtree add -P tabular tabular/master 'tabular/master' does not refer to a commit [ben@localhost vim-plugins]$ git fetch tabular warning: no common commits remote: Reusing existing pack: 131, done. remote: Total 131 (delta 0), reused 0 (delta 0) Receiving objects: 100% (131/131), 32.36 KiB | 0 bytes/s, done. Resolving deltas: 100% (48/48), done. From https://github.com/godlygeek/tabular * [new branch] gtabularize -> tabular/gtabularize * [new branch] master -> tabular/master * [new branch] pattern_reuse -> tabular/pattern_reuse * [new branch] trim_1st_field -> tabular/trim_1st_field [ben@localhost vim-plugins]$ git subtree add -P tabular tabular/master Added dir 'tabular'
- create a file under ~/git/vim-plugins/.vimrc like below. Then make a symlink to ~/.vimrc.
source ~/git/vim-plugins/vim-pathogen/autoload/pathogen.vim execute pathogen#infect('~/git/vim-plugins/{}') syntax on filetype plugin indent on set sw=2 augroup filetypedetect au BufNewFile,BufRead *.pig set filetype=pig syntax=pig au BufNewFile,BufRead *.hql set filetype=hive syntax=hive augroup END
- qgit works with subtree.
- Because you have to add '--prefix name' in subtree command, you cannot pull all repos. There is not 'git subtree pull-all' yet, see http://ruleant.blogspot.nl/2013/06/git-subtree-module-with-gittrees-config.html.
Thursday, April 10, 2014
Git subtree to manage vim plugins
I found those blogs http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree and http://endot.org/2011/05/18/git-submodules-vs-subtrees-for-vim-plugins/ about how to use Git subtree. It seems straight forward, but I actually encountered a lot of errors before I successfully created one.
Subscribe to:
Posts (Atom)