将 Mercurial 与 Cygwin 一起使用?

发布于 2024-10-11 02:46:24 字数 286 浏览 2 评论 0原文

我们一直在尝试将 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

??

We've been trying to use Mercurial with Cygwin (on Windows) but run into an error as Cygwin uses forward slashes and Mercurial seems to require backslashes. Is there a workaround?

Example of issue:

hg status 
M src\myfile.java

hg ci src\myfile.java   <-- Error: abort: srcmyfile.java: The system cannot find the file specified

??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

紫瑟鸿黎 2024-10-18 02:46:25

Ia​​n Lewis 建议:

卸载 cygwin Mercurial 软件包并将 TortoiseHG 的路径放入我的 PATH 环境变量中(它已经在那里了),一切都很顺利。 TortoiseHG 神奇地可以在 Windows 上运行(尽管 Windows 网络上的 Mercurial 存储库速度很慢)。很高兴能够只输入“hg Push”并让它像“hg merge”一样工作,就像我在家里的 Linux 机器上所做的那样(“hg view”是“hgtk log”)。

这相当于“如果您还打算使用 Tortoise HG,则不要使用 cygwin 的 hg”,这对我来说似乎是最好的解决方案。

Ian Lewis suggests:

Uninstall the cygwin mercurial package and put TortoiseHG's path in my PATH environment variable (well it was already there) and everything's dandy. TortoiseHG just magically works on windows (though mercurial repos on the windows network are sloooooow). It's nice to be able to just type 'hg push' and have it work as well as "hg merge" the same way I do at home on my linux machine ("hg view" is "hgtk log" though).

Which amounts to "don't use cygwin's hg if your going to also use Tortoise HG", which seems like the best solution to me.

虐人心 2024-10-18 02:46:24

将其添加到您的 .hgrc 中:

[ui]
slash = true

现在 TortoiseHg 也将使用正确的斜杠:

C:> hg status
M src/myfile.java

Add this to your .hgrc:

[ui]
slash = true

Now TortoiseHg will use proper slashes too:

C:> hg status
M src/myfile.java
一袭白衣梦中忆 2024-10-18 02:46:24

我没有这样的问题,因为我使用两个 Mercurial:

  • mercurial 与 TortoiseHG 捆绑在一起,用于 Windows cmd shell(通常我不直接使用它,但它由 TortoiseHG GUI 工具使用)。
  • cygwin 的 Mercurial,我可以在 cygwin 中使用。

您可以安全地使用它们,因为两个版本都将版本历史记录存储在同一 .hg 文件夹中。 Mercurial 以某种独立于操作系统的方式将有关路径的信息存储在 .hg 文件夹中。

为了安全起见,请对两个 Mercurial 使用相同的版本。

I don't have such a problem because I use two Mercurials:

  • mercurial bundled with TortoiseHG for use in windows cmd shell (usually I don't use it directly but it's used by TortoiseHG GUI tools).
  • cygwin's mercurial which I can use in cygwin.

You can safely use both of them because both versions store version history in the same .hg folder. Mercurial stores info about paths in .hg folder is some OS-independent way.

To be safe use the same version for both Mercurials.

风蛊 2024-10-18 02:46:24

我通过使用 shell 脚本解决了 bzr 的类似问题,该脚本使用 cygpath 命令转换斜杠。它可能需要根据您的需要进行一些调整,但这是我的脚本:

#!/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" =~ // 的用途。和我想象的不符。希望有帮助。

I solved a similar problem for bzr by using a shell script that converts the slashes using the cygpath command. It may require some tweaking for your needs, but here's my script:

#!/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

It cycles through all the command line arguments. If it starts with a minus sign (bzr option), it just appends the argument as is. Otherwise, it runs it through cygpath and escapes all the spaces. I don't remember what the "$i" =~ // is for. It doesn't match up what I thought it was. Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文