Eclipse项目属性中反斜杠路径被视为有害的。

9
我正在参与一个开发Android软件的团队。一些团队成员使用Windows,一些使用Mac,而我则常常使用Linux。每个人都使用Eclipse。
Eclipse会写一个名为project.properties的文件;以下是一个示例。其中最重要的部分是最后三行,即Android库引用路径。
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-17
android.library.reference.1=../private-code/lib/SomeLibrary
android.library.reference.2=../google-play-services_lib
android.library.reference.3=../FacebookSDK

上面是Eclipse在Mac或Linux上写入文件时的样子。在Windows上,当Eclipse写入文件时,库引用行会用反斜杠写入。
当然,在Windows上,反斜杠是可接受的路径分隔符。但在Mac或Linux上,这样的路径不起作用。事实上,在Windows上,正斜杠也可以很好地工作。因此,我们现在的政策是始终使用正斜杠提交文件,以便每个人都能使用。
但这对我们的Windows用户来说很麻烦,当Windows用户出现错误时,对于我们其他人来说也很痛苦,因此我正在寻找技术解决方案。我有两个想法:
  • 在Windows的Eclipse中找到一个设置,告诉它在保存像project.properties这样的文件路径时使用正斜杠。 (为什么不是默认值?!)

  • 我们使用Mercurial,因此:安装某种“钩子”来解决问题。

    • 在Windows计算机上安装提交钩子,以便将文件提交到仓库中时,将反斜杠替换为正斜杠。
    • 在Mac和Linux计算机上安装拉钩子;因此,如果文件被提交带有反斜杠,则这些反斜杠会在写入文件时被修复。

提交钩子似乎更清洁,因此如果两者都可用,我会选择提交钩子而不是拉钩子。

我找到了一个Mercurial扩展程序,可以将制表符编辑为空格,这至少与我想要的有点类似。 它足够复杂,以至于我有点不敢尝试将其修改为我需要的。

https://www.mercurial-scm.org/wiki/CheckFilesExtension

另一种策略是添加一个钩子来检测路径中的反斜杠,并简单地终止提交,强制Windows用户在提交之前手动修复文件。这比什么都没有要好。

现在面临这个问题。你们团队最终采用了哪种解决方案? - Mike Ortiz
1
还没有解决。我得出的结论是最好的解决办法是简单明了的:使用钩子,如果反斜杠的方向错误,提交就会失败,Windows用户只需手动修复。目前,没有人对该文件进行基本更改,所以这个问题并没有给我们造成困扰,而且我们都很忙,也没有考虑过这个问题。 - steveha
2个回答

1
我会在项目中保留两个版本(作为project.properties.windowsproject.properties.linux),并创建一个符号链接,根据操作系统指向正确的文件。将此符号链接命名为project.properties,并让版本控制忽略它
显然,这种设置的缺点是当Windows用户更新其指向project.properties.windowsproject.properties文件时,必须手动更新Linux版本,反之亦然,但我认为这不是什么大问题,我假设您不经常更新此文件。 - 创建链接 - 创建一个名为make_link.sh的文件来设置Linux环境,使用以下命令:
ln -s $(readlink -m project.properties.linux) $(readlink . -m)/project.properties

创建一个名为make_link.bat的文件来设置Windows环境,使用以下命令:
mklink project.properties project.properties.windows

您可以提交那些脚本。

0
我们曾经遇到过类似的情况,由于本地库的路径不同,所以在搜索了一段时间后,我们发现使用集中式存储库工具(对我们来说是Git)的最佳实践是“从存储库中删除所有Eclipse相关/特定设置文件”。这对我们来说非常有效。这样,对Eclipse设置文件的更改将不会影响中央存储库或被提交。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接