master and symlinks
When using a symlink in the repo dotfiles thinks that it should follow the symlink and dotfiles considers all files in the symlink target.
One of the strengths of the old dotfiles version is that it can handle symlinks and just add the symlink not all files IMO.
sarena:~$ env | grep DOTFILES
DOTFILES_REPO=/tmp/dotfiles-repo
DOTFILES_DOT=0
sarena:~$ tree -a /tmp/dotfiles-repo -I .git
/tmp/dotfiles-repo
└── .config
└── nvim -> /home/simmel/.vim
2 directories, 0 files
sarena:~$ dotfiles status
E .config/nvim/.netrwhist
? .config/nvim/autoload/pathogen.vim
? .config/nvim/bundle/DetectIndent/doc/detectindent.txt
E .config/nvim/bundle/DetectIndent/doc/tags
? .config/nvim/bundle/DetectIndent/plugin/detectindent.vim
? .config/nvim/bundle/gnupg/plugin/gnupg.vim
? .config/nvim/bundle/logstash/LICENSE
? .config/nvim/bundle/logstash/ftdetect/logstash.vim
? .config/nvim/bundle/logstash/syntax/logstash.vim
? .config/nvim/bundle/matchit/doc/matchit.txt
E .config/nvim/bundle/matchit/doc/tags
? .config/nvim/bundle/matchit/plugin/matchit.vim
? .config/nvim/bundle/openssl/plugin/openssl.vim
E .config/nvim/bundle/rcs/doc/rcs.txt
E .config/nvim/bundle/rcs/doc/tags
? .config/nvim/bundle/rcs/plugin/rcs.vim
? .config/nvim/bundle/rust.vim/LICENSE-APACHE
? .config/nvim/bundle/rust.vim/LICENSE-MIT
? .config/nvim/bundle/rust.vim/after/syntax/rust.vim
? .config/nvim/bundle/rust.vim/autoload/cargo.vim
? .config/nvim/bundle/rust.vim/autoload/rust.vim
? .config/nvim/bundle/rust.vim/autoload/rustfmt.vim
? .config/nvim/bundle/rust.vim/compiler/cargo.vim
? .config/nvim/bundle/rust.vim/compiler/rustc.vim
? .config/nvim/bundle/rust.vim/doc/rust.txt
E .config/nvim/bundle/rust.vim/doc/tags
? .config/nvim/bundle/rust.vim/ftdetect/rust.vim
? .config/nvim/bundle/rust.vim/ftplugin/rust.vim
? .config/nvim/bundle/rust.vim/indent/rust.vim
? .config/nvim/bundle/rust.vim/plugin/rust.vim
? .config/nvim/bundle/rust.vim/syntax/rust.vim
? .config/nvim/bundle/rust.vim/syntax_checkers/rust/cargo.vim
? .config/nvim/bundle/rust.vim/syntax_checkers/rust/rustc.vim
? .config/nvim/bundle/surround/doc/surround.txt
E .config/nvim/bundle/surround/doc/tags
? .config/nvim/bundle/surround/plugin/surround.vim
? .config/nvim/bundle/tcomment_vim/CHANGES.TXT
? .config/nvim/bundle/tcomment_vim/addon-info.json
? .config/nvim/bundle/tcomment_vim/autoload/tcomment.vim
E .config/nvim/bundle/tcomment_vim/doc/tags
? .config/nvim/bundle/tcomment_vim/doc/tcomment.txt
? .config/nvim/bundle/tcomment_vim/plugin/tcomment.vim
? .config/nvim/bundle/tcomment_vim/spec/tcomment/issue30.vim
? .config/nvim/bundle/tcomment_vim/spec/tcomment/issue30_sel=exclusive.vim
? .config/nvim/bundle/tcomment_vim/spec/tcomment/issue30_sel=inclusive.vim
? .config/nvim/bundle/tcomment_vim/spec/tcomment/issue30_test.c
? .config/nvim/bundle/tcomment_vim/spec/tcomment/issue30_test_1.c
? .config/nvim/bundle/tcomment_vim/spec/tcomment/issue30_test_2.c
? .config/nvim/bundle/tcomment_vim/spec/tcomment/issue30_test_3.c
? .config/nvim/bundle/vim-json/ftdetect/json.vim
? .config/nvim/bundle/vim-json/ftplugin/json.vim
? .config/nvim/bundle/vim-json/indent/json.vim
? .config/nvim/bundle/vim-json/json-test.json
? .config/nvim/bundle/vim-json/jsonp-test.jsonp
? .config/nvim/bundle/vim-json/readme.md
? .config/nvim/bundle/vim-json/syntax/json.vim
? .config/nvim/bundle/vim-makeshift/doc/makeshift.txt
E .config/nvim/bundle/vim-makeshift/doc/tags
? .config/nvim/bundle/vim-makeshift/plugin/makeshift.vim
? .config/nvim/bundle/vim-pastie/doc/pastie.txt
E .config/nvim/bundle/vim-pastie/doc/tags
? .config/nvim/bundle/vim-pastie/plugin/pastie.vim
E .config/nvim/bundle/vim-ptpb/plugin/ptpb.vim
? .config/nvim/bundle/vim-tmux/CHANGELOG.md
? .config/nvim/bundle/vim-tmux/autoload/tmux.vim
? .config/nvim/bundle/vim-tmux/compiler/tmux.vim
? .config/nvim/bundle/vim-tmux/doc/tmux.vim
? .config/nvim/bundle/vim-tmux/ftdetect/tmux.vim
? .config/nvim/bundle/vim-tmux/ftplugin/tmux.vim
? .config/nvim/bundle/vim-tmux/indent/tmux.vim
? .config/nvim/bundle/vim-tmux/syntax/tmux.vim
? .config/nvim/bundle/vimclojure/autoload/vimclojure.vim
? .config/nvim/bundle/vimclojure/autoload/vimclojure/util.vim
? .config/nvim/bundle/vimclojure/bin/clj
? .config/nvim/bundle/vimclojure/bin/clj.bat
? .config/nvim/bundle/vimclojure/bin/ng-server
? .config/nvim/bundle/vimclojure/bin/ng-server.bat
? .config/nvim/bundle/vimclojure/doc/LICENSE.txt
? .config/nvim/bundle/vimclojure/doc/clojure.txt
E .config/nvim/bundle/vimclojure/doc/tags
? .config/nvim/bundle/vimclojure/ftdetect/clojure.vim
? .config/nvim/bundle/vimclojure/ftplugin/clojure.vim
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.core.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.data.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.inspector.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.java.browse.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.java.io.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.java.javadoc.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.java.shell.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.main.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.pprint.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.repl.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.set.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.stacktrace.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.string.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.template.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.test.junit.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.test.tap.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.test.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.walk.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.xml.txt
? .config/nvim/bundle/vimclojure/ftplugin/clojure/completions-clojure.zip.txt
? .config/nvim/bundle/vimclojure/indent/clojure.vim
? .config/nvim/bundle/vimclojure/plugin/clojure.vim
? .config/nvim/bundle/vimclojure/syntax/clojure.vim
? .config/nvim/init.vim
sarena:~$
Likewise using add on a link:
sarena:~$ ln -s ~/.vim ~/.config/nvim
sarena:~$ dotfiles add ~/.config/nvim
Traceback (most recent call last):
File "/home/simmel/.local/lib/python3.5/site-packages/py/_error.py", line 66, in checked_call
return func(*args, **kwargs)
FileExistsError: [Errno 17] File exists: '../../../../../../../home/simmel/code/code/config/.config/nvim/bundle/DetectIndent/doc/tags' -> '/tmp/dotfiles-repo/.config/nvim/bundle/DetectIndent/doc/tags'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/simmel/.local/bin/dotfiles", line 11, in <module>
load_entry_point('dotfiles==0.9.dev0', 'console_scripts', 'dotfiles')()
File "/home/simmel/.local/lib/python3.5/site-packages/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "/home/simmel/.local/lib/python3.5/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/home/simmel/.local/lib/python3.5/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/simmel/.local/lib/python3.5/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/simmel/.local/lib/python3.5/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/home/simmel/.local/lib/python3.5/site-packages/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/home/simmel/.local/lib/python3.5/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/home/simmel/.local/lib/python3.5/site-packages/dotfiles/cli.py", line 65, in add
perform('add', files, repo, debug)
File "/home/simmel/.local/lib/python3.5/site-packages/dotfiles/cli.py", line 29, in perform
getattr(dotfile, method)(debug)
File "/home/simmel/.local/lib/python3.5/site-packages/dotfiles/dotfile.py", line 99, in add
self._link(debug)
File "/home/simmel/.local/lib/python3.5/site-packages/dotfiles/dotfile.py", line 51, in _link
source.mksymlinkto(target, absolute=0)
File "/home/simmel/.local/lib/python3.5/site-packages/py/_path/local.py", line 90, in mksymlinkto
py.error.checked_call(os.symlink, target, self.strpath)
File "/home/simmel/.local/lib/python3.5/site-packages/py/_error.py", line 86, in checked_call
raise cls("%s%r" % (func.__name__, args))
py.error.EEXIST: [File exists]: symlink('../../../../../../../home/simmel/code/code/config/.config/nvim/bundle/DetectIndent/doc/tags', '/tmp/dotfiles-repo/.config/nvim/bundle/DetectIndent/doc/tags')
makes dotfiles go haywire.
Or maybe symlinks should just be dealt with by a configuration management tool?
- Simon Lundström [email protected] wrote:
Or maybe symlinks should just be dealt with by a configuration management tool?
I agree with your first comment, symlinks should be handled properly. I have a partial implementation done. There's a reasonable chance I'll get some time to finish it up over the holidays, I'll keep you posted.
-- Jon
-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/jbernard/dotfiles/issues/69#issuecomment-449471787