scttnlsn / dandelion

Incremental Git repository deployment.
http://scttnlsn.github.io/dandelion
MIT License
738 stars 60 forks source link

Symlink in repo fails #77

Closed davidosomething closed 10 years ago

davidosomething commented 10 years ago

public/content/uploads is a symlinked folder in my repo. The symlinked dir is actually in my exclude:

exclude:
  ...
  - public/content/uploads

when dandelion gets to it:

/Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/tree.rb:45:in `read': No such file or directory @ rb_sysopen - ../../shared/content/uploads (Errno::ENOENT)
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/tree.rb:45:in `symlink_content'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/tree.rb:31:in `content'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/tree.rb:23:in `data'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/changeset.rb:27:in `block in each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/diff.rb:58:in `block in each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/diff.rb:57:in `each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/diff.rb:57:in `each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/changeset.rb:20:in `each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/deployer.rb:9:in `deploy_changeset!'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/command/deploy.rb:55:in `deploy_changeset!'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/command/deploy.rb:30:in `execute!'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/cli.rb:66:in `execute!'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/bin/dandelion:8:in `<top (required)>'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/bin/dandelion:23:in `load'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/bin/dandelion:23:in `<main>'
scttnlsn commented 10 years ago

Looks like this is two bugs:

  1. Exclude is not working correctly in this case. Does Dandelion print Skipping file: public/content/uploads before the error occurs?
  2. There's no support at the moment for recursively uploading the symlinked directory, however, I would have expected an Errno::EISDIR: Is a directory - ../../shared/content/uploads error instead. Does ../../shared/content/uploads actually exist? (relative to your current working directory).
davidosomething commented 10 years ago
  1. It doesn't print that
  2. Yea that folder exists (but is not in the repository! .gitignore'd)
scttnlsn commented 10 years ago
  1. What does it print? Writing file: public/content/uploads?
  2. Why is ../../shared/content/uploads in your .gitignore? Isn't that outside the repo?
davidosomething commented 10 years ago

1 - nope - no output related to that folder, just goes from writing file to error. Deduced that it was my uploads folder since it's next up alphabetically and is the only symlink_content in my repo

Writing file:  public/content/themes/arndotcom/templates/jobsDepartments.hbs
Writing file:  public/content/themes/arndotcom/templates/jobsRecent.hbs
Writing file:  public/content/themes/arndotcom/templates/vimeo.hbs
/Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/tree.rb:45:in `read': No such file or directory @ rb_sysopen - ../../shared/content/uploads (Errno::ENOENT)
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/tree.rb:45:in `symlink_content'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/tree.rb:31:in `content'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/tree.rb:23:in `data'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/changeset.rb:27:in `block in each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/diff.rb:58:in `block in each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/diff.rb:57:in `each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/diff.rb:57:in `each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/changeset.rb:20:in `each'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/deployer.rb:9:in `deploy_changeset!'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/command/deploy.rb:55:in `deploy_changeset!'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/command/deploy.rb:30:in `execute!'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/lib/dandelion/cli.rb:66:in `execute!'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/dandelion-0.4.2/bin/dandelion:8:in `<top (required)>'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/bin/dandelion:23:in `load'
    from /Users/dotrakoun/.rbenv/versions/2.1.0/bin/dandelion:23:in `<main>'

2 - sorry it's not in my .gitignore, the linked folder is just not part of the repo

scttnlsn commented 10 years ago

Ahh, looks like it's eagerly reading the symlink content even when it's not needed (since it's excluded). I'll push a fix.

scttnlsn commented 10 years ago

This is fixed in v0.4.3. Please re-open this issue if you're still having trouble.

davidosomething commented 10 years ago

fixed ! :+1: :+1: