"svn: Can't recode string" - how is Cap's ssh connection different from mine?

64 views
Skip to first unread message

alex.c...@gmail.com

unread,
Jul 23, 2007, 4:45:59 PM7/23/07
to Capistrano
Hi all,

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

Jamis Buck

unread,
Jul 23, 2007, 4:55:20 PM7/23/07
to capis...@googlegroups.com
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

alex.c...@gmail.com

unread,
Jul 23, 2007, 5:13:38 PM7/23/07
to Capistrano
That worked like a charm.

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

Reply all
Reply to author
Forward
0 new messages