I'm trying to get Capistrano working for the first time, and I've hit
a roadblock.
What I have working:
- I can manually checkout the source using SVN on both my local
machine (Windows) and the remote server (CentOS)
- I've set up deploy.rb, and Capistrano can connect to my server (both
cap deploy:setup and cap -q deploy:check are successful)
What doesn't work:
- cap deploy:cold fails when trying to checkout the code, with the
message "svn: Can't recode string"
The long story:
I have some files in SVN that were committed from a Mac machine. When
I first manually checked out my code on the CentOS machine, SVN choked
on the files from the Mac with an "svn: Can't recode string" message.
I managed to solve this by setting LC_CTYPE="en_US.UTF-8" (instead of
LC_CTYPE="en_US").
However, when I try cap deploy:cold, I still get the "svn: Can't
recode string" message!
- I can checkout the code on my Windows box with no problems (just
copy&paste the Capistrano svn line and change the paths)
- I can SSH into the CentOS box and manually check out the code with
no problems (same user as Capistrano; same command line; no fiddling
with environment variables; nothing about the locale in .bash_profile;
I just login using SSH, copy&paste the Capistrano svn line).
- Capistrano deploy:cold fails on the svn command.
I'm at a loss - what's different between my putty SSH connection and
the one set up by Capistrano? How can I go about troubleshooting
this?
Any help would be greatly appreciated.
Here's the output I get from Capistrano on my local machine:
C:\XXXX>cap deploy:cold
[DEPRECATION] Capistrano.configuration is deprecated. Use
Capistrano::Configuration.instance instead
* executing `deploy:cold'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
SVN Password:
* executing "svn checkout -q -r165 --username XXXX --password XXXX
http://XXXX/repos/www/XXXX /home/XXXX/XXXX/releases/20070723193853 &&
(echo 165 > /home/XXXX/XXXX/releases/20070723193853/REVISION)"
servers: ["xx.xx.161.39"]
Password:
[xxx...@xx.xx.161.39] executing command
** [out] svn: Can't recode string
command finished
*** [deploy:update_code] rolling back
* executing "rm -rf /home/XXXX/XXXX/releases/20070723193853; true"
servers: ["xx.xx.161.39"]
[xxx...@xx.xx.161.39] executing command
command finished
command "svn checkout -q -r165 --username XXXX --password XXXX http://XXXX
/repos/www/XXXX /home/XXXX/XXXX/releases/20070723193853 && (echo 165
> /home/XXXX/XXXXreleases/20070723193853/REVISION)" failed on
XX...@xx.xx.161.39
default_environment["LC_CTYPE"] = "en_US.UTF-8"
The thing to remember is that Capistrano does not use a login shell,
which means that your .profile or .bashrc or whatever will not be
loaded automatically. (In general; you can reconfigure sshd to change
that, but the default is as I've described.)
- Jamis
Thanks for the prompt help, and thanks for a great tool!
Alex
On Jul 23, 4:55 pm, "Jamis Buck" <ja...@37signals.com> wrote:
> Try adding this to your deploy.rb:
>
> default_environment["LC_CTYPE"] = "en_US.UTF-8"
>
> The thing to remember is that Capistrano does not use a login shell,
> which means that your .profile or .bashrc or whatever will not be
> loaded automatically. (In general; you can reconfigure sshd to change
> that, but the default is as I've described.)
>
> - Jamis
>
> >http://XXXX/repos/www/XXXX/home/XXXX/XXXX/releases/20070723193853 &&
> > (echo 165 > /home/XXXX/XXXX/releases/20070723193853/REVISION)"
> > servers: ["xx.xx.161.39"]
> > Password:
> > [xxx...@xx.xx.161.39] executing command
> > ** [out] svn: Can't recode string
> > command finished
> > *** [deploy:update_code] rolling back
> > * executing "rm -rf /home/XXXX/XXXX/releases/20070723193853; true"
> > servers: ["xx.xx.161.39"]
> > [xxx...@xx.xx.161.39] executing command
> > command finished
> > command "svn checkout -q -r165 --username XXXX --password XXXXhttp://XXXX
> > /repos/www/XXXX /home/XXXX/XXXX/releases/20070723193853 && (echo 165
> > > /home/XXXX/XXXXreleases/20070723193853/REVISION)" failed on
> > X...@xx.xx.161.39