- 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:
Post Comments (Atom)
Thanks for your post.
ReplyDeleteI too tripped over the fact that Git in combination with PowerShell won't accept backwards slashes when defining the directory of the subtree.
Git and Github Online Training
ReplyDeletewww.21cssindia.com/courses/git-and-github-online-training-248.html
Familiarization with Git and DVCS concepts; Introduction to the Github platform; Repository creation on the web and desktop; Document versioning with local ...Many more… | Call Us +917386622889 - contact@21cssindia.com
Visit: http://www.21cssindia.com/courses.html