Eclipse project.properties反斜杠路径被认为是有害的

时间:2013-10-18 05:41:48

标签: eclipse path mercurial backslash

我在开发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

以上是Mac或Linux上的Eclipse编写文件时的文件。当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用户在提交之前手动修复文件。那比没有好。

2 个答案:

答案 0 :(得分:1)

我会在项目中保留两个版本(如 project.properties.windows project.properties.linux )并创建一个指向正确文件的符号链接在操作系统上。调用此符号链接 project.properties 让版本控件忽略

显然这种设置的缺点是当windows用户更新他们的 project.properties 文件(指向 project.properties.windows )时,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

您也可以提交这些脚本。

答案 1 :(得分:0)

由于本地库的路径不同,我们遇到了类似的情况,所以经过一段时间我们发现使用集中存储库工具的最佳实践(Git for us),“删除所有eclipse依赖/具体来自存储库的设置文件“。这对我们来说很好。这样,对eclipse设置文件的更改将不会影响中央存储库或提交。