Я решил аналогичную проблему для bzr, используя сценарий оболочки, который преобразует косые черты с помощью команды cygpath. Это может потребовать некоторой настройки для ваших нужд, но вот мой сценарий:
#!/usr/bin/bash
COMMAND="/c/Python27/python.exe c:\\\\Python27\\\\Scripts\\\\bzr"
for i in "[email protected]"
do
COMMAND+=" "
if [[ "$i" =~ ^- || "$i" =~ // ]]
then
COMMAND+="$i"
else
COMMAND+=$(cygpath -m "$i" | sed -e 's/ /\\ /g')
fi
done
eval $COMMAND
Он циклически проходит через все аргументы командной строки. Если он начинается с знака минус (опция bzr), он просто добавляет аргумент как есть. В противном случае он запускает его через cygpath и избегает всех пробелов. Я не помню, для чего нужен "$i" =~ //
. Это не соответствует тому, что я думал. Надеюсь, это поможет.
Какая ошибка? – geoffspear
Вы пытались установить Mercurial внутри cygwin, а не пытаться использовать Windows Mercurial? Предположительно Mercurial будет вести себя более unix-y, если он работает под Python, скомпилированным для cygwin. – joeforker
@joeforker, это не плохое предложение, за исключением случаев, когда вы используете версию unix вообще для данного репозитория, вы должны * использовать * только версию unix или вы получите странные ошибки из-за различий в пути. Это исключает использование таких инструментов, как интеграция IDE или черепаховый, чтобы дополнить ваш CLI cygwin. –