【问题标题】:Windows & Mercurial change cases of class namesWindows & Mercurial 更改类名的案例
【发布时间】:2011-09-09 13:44:01
【问题描述】:

我继承了一个 Java 项目,其中包含许多未根据 UpperCamelCase 命名约定命名的类。

对于缩写尤其如此(例如 HTMLButton 而不是 HtmlButton)。虽然我知道在缩略语中使用 CamelCase 存在一些意见分歧,但我们想改用大写字母作为缩略语的第一个字母。 (目前,似乎有几种同时命名的约定。)

我想整理一下。我们使用 Mercurial 作为我们的源代码存储库并在 Windows 机器(包括 XP、Vista、7)上工作。但是,如果我将类名从 HTMLButton 更改为 HtmlButton,Mercurial 会将此识别为类名更改,而不是文件名更改。 (随后任何来自 Mercurial 的拉取都不会影响文件名更改。)

我知道 Windows 在不区分大小写的文件系统上工作,并且我了解 Mercurial 在接受来自 Windows 框的推送时采用了此功能...

所以...: - 是否可以更改设置以使 Mercurial 使用区分大小写的文件名? - 是否可以更改设置以使 Windows 使用区分大小写的文件名? (这些是单独的问题。我的首要任务是让 Mercurial 接受文件名更改,如有必要,我们可以在 IDE 中手动强制文件重命名。但是,直接解决方案将是首选!)

(如果一切都失败了,我可能会尝试将 HTMLButton 重命名为 HtmlButtonA,提交并推送,并将 HtmlButtonA 重命名为 HtmlButton,然后再次提交并推送......但是,我不确定这会对 Windows 产生什么影响如果其他人在第二次推送后才拉动文件名...)

【问题讨论】:

    标签: java windows mercurial naming-conventions case-sensitive


    【解决方案1】:

    如果你这样做:

    hg rename foo bar
    hg rename bar Foo
    

    您不需要实际提交并推送到最后。换句话说,您的存储库不会知道这种特定于 Windows 的解决方法。

    另一种选择是在 Windows 中重命名文件,然后调用:

    hg rename foo Foo --after
    

    通知 Mercurial 更改。

    来源:http://hgbook.red-bean.com/read/mercurial-in-daily-use.html#id364064

    【讨论】:

    • 谢谢 - 我认为双重重命名是我能做的最好的(至少我不必做很多提交/推送)。这仍然有点乏味,但我想这就是生活......
    • 这样做要小心。我这样做了(之间没有提交),现在我无法将该分支与另一个具有旧案例的分支合并...... :(我仍在努力,但就目前而言,我还没有找到纠正的方法这个问题。我已尝试将其重命名(此时我可以合并),然后重新命名为新案例(再次破产)。因此,请确保您可以在推送到任何地方之前与任何其他分支合并!;)
    • 在 Visual Studio 中重命名(更新 csproj)后,在 TortoiseHg(2.11.1)中,我右键单击并选择重命名。这似乎奏效了。我提交,与另一个分支成功合并并推送。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    相关资源
    最近更新 更多