2013-10-18 29 views
9

我正在开发Android软件的团队中工作。一些团队成员使用Windows,一些使用Mac,并且我知道使用Linux。每个人都使用Eclipse。Eclipse project.properties被认为有害的反斜杠路径

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用户犯了一个错误时,这对我们其他人来说是痛苦的,所以我正在寻找一种技术解决方案。我有两个想法:

  • 查找在Eclipse中的某处设置在Windows上,告诉它使用向前文件保存路径时,像project.properties斜杠。 (为什么这不是默认值?!?)

  • 我们使用Mercurial,所以:安装某种“钩子”即可解决问题。

    • 在Windows计算机上安装提交挂钩,以便将文件提交到存储库,反斜杠替换为正斜杠。
    • 在Mac和Linux计算机上安装一个挂钩;所以如果文件被反斜杠提交,那么在文件写入时它们会被修复。

的承诺挂钩似乎更清洁,因此,如果两者都可以我会接管拉勾提交挂钩。

我发现了一个Mercurial扩展,它将选项卡编辑为空格,这至少与我想要的类似。这足够复杂,我有点不情愿试图将其修改为我所需要的。

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

另一个策略是增加了检测的路径反斜杠钩,并简单地中止犯,迫使Windows用户修复用手文件提交之前。那会比没有好。

+0

现在面对这个问题。你的团队解决了哪个解决方案? –

+1

尚未解决。我得出的结论是最好的解决方案是简单的:如果反斜杠是错误的,那么提交失败的钩子就会失败,而Windows用户只需要手动修复它。目前,没有人正在对该文件进行基本修改,所以这个问题并没有让我们感到困扰,而且我们都很忙,没有考虑这个问题。 – steveha

回答

0

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

1

我会保留项目中的两个版本(如project.properties.windowsproject.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 

您也可以提交这些脚本。

相关问题