我们一直在尝试使用Mercurial和Cygwin(在Windows上),但遇到错误,因为Cygwin使用正斜杠,Mercurial似乎需要反斜杠。有解决方法吗?
问题示例:
hg status
M src\myfile.java
hg ci src\myfile.java <-- Error: abort: srcmyfile.java: The system cannot find the file specified
??
答案 0 :(得分:10)
将此添加到.hgrc:
[ui]
slash = true
现在TortoiseHg也会使用正确的斜杠:
C:> hg status
M src/myfile.java
答案 1 :(得分:6)
我没有这样的问题,因为我使用了两个Mercurials:
您可以安全地使用它们,因为两个版本都在同一.hg
文件夹中存储版本历史记录。 Mercurial存储有关.hg
文件夹中路径的信息是与操作系统无关的一种方式。
为安全使用Mercurials的相同版本。
答案 2 :(得分:1)
我通过使用使用cygpath命令转换斜杠的shell脚本解决了bzr的类似问题。可能需要根据您的需要进行一些调整,但这是我的脚本:
#!/usr/bin/bash
COMMAND="/c/Python27/python.exe c:\\\\Python27\\\\Scripts\\\\bzr"
for i in "$@"
do
COMMAND+=" "
if [[ "$i" =~ ^- || "$i" =~ // ]]
then
COMMAND+="$i"
else
COMMAND+=$(cygpath -m "$i" | sed -e 's/ /\\ /g')
fi
done
eval $COMMAND
循环遍历所有命令行参数。如果它以减号(bzr选项)开头,它只是按原样附加参数。否则,它通过cygpath运行它并逃脱所有空间。我不记得"$i" =~ //
的用途。它与我的想法不符。希望有所帮助。
答案 3 :(得分:0)
Ian Lewis建议:
卸载cygwin mercurial包并将TortoiseHG的路径放在我的PATH环境变量中(好吧它已经存在)并且一切都很花哨。 TortoiseHG只是神奇地在windows上工作(虽然windows网络上的mercurial repos是sloooooow)。很高兴能够只输入'hg push'并使其与我在linux机器上执行的“hg merge”一样工作(“hg view”虽然是“hgtk log”)。
如果你还要使用Tortoise HG,那就等于“不要使用cygwin的hg”,这对我来说似乎是最好的解决方案。