On Thu, Nov 12, 2009 at 9:00 AM, Bruno Clermont <bruno.clerm...@gmail.com>wrote:

> Hi Jeff,
>
> I just added an other patch for this issue.
>
> It's an other function I created to solve some of my needs. It's like put()
> but with directory support.
>
> It don't use rsync. It use instead the Python tarfile module... so it can
> work on windows without rsync (but I never tried it).
> It create a temporary archive from a directory, send it, remotely extract
> it and change ownership.
>
>
Bruno,

I tried out your put_dir function, and while I really like the idea, it
still needs some work.  Here are a few issues I found (and how I worked
around them):

1. "datadir" is undefined, should be "dst"?
(fixed this with "datadir = dst")

2. os.dirsep does not exist on my system (py2.6), did you mean os.sep?
(I had to remove it anyway, see #3 below)

3. when putting a file from windows to unix, the path separator gets messed
up:

    [hostname] run: tar -xvfj
~/tmp/\28d32c25-4438-46ed-a013-7e8a607aa99f.tar.bz2

notice the "/\".  I'm not sure what the best solution for this is.  Maybe
fabric needs to define a variable for the path separator on the remote
system?
(I just took out the separator and made sure the right separator was in my
"remote_tmp" variable)

4. tar -xvfj is not valid, "f" must be the last parameter
(modified the format string to put the format before the "f")

I've modified your code to work for my specific use case, but I don't think
it would work anywhere else at the moment.  I'd really like to see this
cleaned up and put in fabric.contrib.  It's very handy on systems that don't
have typical Unix utils like tar, gzip, bzip, etc.

Thanks for coming up with this idea!

Kevin Horn
_______________________________________________
Fab-user mailing list
Fab-user@nongnu.org
http://lists.nongnu.org/mailman/listinfo/fab-user

Reply via email to