thoughtbot / rcm

rc file (dotfile) management
https://thoughtbot.github.io/rcm/rcm.7.html
BSD 3-Clause "New" or "Revised" License
3.12k stars 136 forks source link

rcup fails to link some files when multiple directories are specified #81

Closed derekprior closed 10 years ago

derekprior commented 10 years ago

I'm trying to switch my dotfiles over to using rcm and building on the thoughtbot dotfiles. My repository containst mostly .local overrides to the thoughtbot dotfiles.

I'm running into a problem when using rcm in this way and have a very simple reproduction below:

% mkdir rc-me
% mkdir rc-them
% touch rc-me/foo.local
% touch rc-them/foo
% touch rc-them/bar
% rcup -d $HOME/rc-me -d $HOME/rc-them -v
'/Users/derek/rc-me/foo.local' -> '/Users/derek/.foo.local'
'/Users/derek/rc-them/bar' -> '/Users/derek/.bar'

Notice that files from both directories were symlinked, but for some reason rc-them/foo was skipped. This seems to be the pattern in my problems with my actual dotfiles. If the .local version is already symlinked, rcup won't symlink the non-.local version.

derekprior commented 10 years ago

Some additional debugging (didn't realize I could repeat -vand also just discovered lsrc):

% rcup -d $HOME/rc-me -d $HOME/rc-them -vvv
LS_ARGS: -F -d /Users/derek/rc-me -d /Users/derek/rc-them
run_hooks pre up
  with DOTFILES_DIRS:  /Users/derek/rc-me /Users/derek/rc-them
no pre-up hook present for /Users/derek/rc-me, skipping
no pre-up hook present for /Users/derek/rc-them, skipping
handle_file /Users/derek/rc-me/foo.local /Users/derek/.foo.local @
link_or_copy @
ln_v /Users/derek/rc-me/foo.local /Users/derek/.foo.local
'/Users/derek/rc-me/foo.local' -> '/Users/derek/.foo.local'
handle_file /Users/derek/rc-them/bar /Users/derek/.bar @
link_or_copy @
ln_v /Users/derek/rc-them/bar /Users/derek/.bar
'/Users/derek/rc-them/bar' -> '/Users/derek/.bar'
run_hooks post up
  with DOTFILES_DIRS:  /Users/derek/rc-me /Users/derek/rc-them
no post-up hook present for /Users/derek/rc-me, skipping
no post-up hook present for /Users/derek/rc-them, skipping
% lsrc -d rc-me -d rc-them -vvv
TAGS:
DOTFILES_DIRS:  rc-me rc-them
DOTFILES_DIRS:  rc-me rc-them
COPY_ALWAYS:
SYMLINK_DIRS:
dotfiles_dir_excludes /Users/derek/rc-me
  with excludes:
exclude_file_globs:
dotfiles_dir_excludes /Users/derek/rc-me
  with excludes:
dotfiles_dir_excludes /Users/derek/rc-me
  with excludes:
symlink_dirs_file_globs:
handle_file foo.local /Users/derek /Users/derek/rc-me . 0
is_excluded foo.local
/Users/derek/.foo.local:/Users/derek/rc-me/foo.local
dotfiles_dir_excludes /Users/derek/rc-them
  with excludes:
exclude_file_globs:
dotfiles_dir_excludes /Users/derek/rc-them
  with excludes:
dotfiles_dir_excludes /Users/derek/rc-them
  with excludes:
symlink_dirs_file_globs:
handle_file bar /Users/derek /Users/derek/rc-them . 0
is_excluded bar
/Users/derek/.bar:/Users/derek/rc-them/bar
handle_file foo /Users/derek /Users/derek/rc-them . 0
is_excluded foo
docwhat commented 10 years ago

@derekprior If you add "Closes #81" at the end of your commit on a line by itself, then when the pull request is merged it'll automatically close this issue.

docwhat commented 10 years ago

Whups. Ignore me. I thought your commit was on this repository.

mike-burns commented 10 years ago

This is fixed in master: a7c2b6bed845b8512e878c992e07841ea9b88462 (#74).