I have the latest and greatest version of Mercurial on
my laptop but the other machines I want to 'push' to
over ssh are either a shared host without Mercurial installed
or are pinned to a release of a distro
that has a very old version of Mercurial.
This means that I had to $ make install-home
,
which leaves me with a problem,
which is that the installed Mercurial files won't be
on my Python path when I ssh in. That means I see
this when I ssh in from my laptop:
$ ssh bitworking.org /home/jcgregorio/bin/hg
Traceback (most recent call last):
File "/home/jcgregorio/bin/hg", line 14, in ?
from mercurial import demandimport; demandimport.enable()
ImportError: No module named mercurial
~
$
The easiest way I found to fix
this to add the following two lines to
the beginning of ~/bin/hg
on the server:
import sys
sys.path.append('/home/jcgregorio/lib/python')
Then I need to specify the exact location
of hg
from the command line on the laptop, so it uses
my locally installed version on the server:
$ hg push --remotecmd ~/bin/hg ssh://bitworking.org/myproject/
That --remotecmd
can be made to go away if I add it
to the config file for the project on the laptop. I created the file
.hg/hgrc
and added the following lines:
[ui]
remotecmd = ~/bin/hg
Now I can finally run:
$ hg push ssh://bitworking.org/myproject/
It would probably work, but it's rather invasive as that change would then apply to everything that runs over ssh.
Posted by Joe Gregorio on 2008-07-31
I, too, went the invasive route.
I don't have root, but ~/bin
contains all the executables that I have installed, and ~/lib/python
contains all of the python libraries. Since all of them are available to me when I ssh in, I can simply forget about the difference between system wide installation and per user installation. As none of them have been modified, upgrading is a snap.
Posted by Sam Ruby on 2008-07-31
bin
and lib
dirs at the end of the search paths:
export PATH=$PATH:~/bin
export PYTHONPATH=$PYTHONPATH:~/lib/python
Posted by Will on 2008-07-31
(I know I'm telling you stuff that you already know... for some reason, I felt compelled to spell all this out. Sorry!)
NP, the reason I wrote this up is for people who were looking for a solution. If they come here and find a few alternatives, all the better!
Posted by Joe Gregorio on 2008-07-31
.profile
(or.bash_profile
or whatever) on my shared host:export PATH=~/bin:$PATH
export PYTHONPATH=~/lib/python:$PYTHONPATH
PYTHONPATH
value, though. Depending on the way you installed Mercurial, it's probably something more like~/lib/python2.5/site-packages
. Is there a reason this won't work for you?Posted by Will on 2008-07-31