我在开发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,所以:安装一些可以解决问题的“钩子”。
提交钩子看起来更干净,所以如果两者都可用,我会在拉钩上使用提交挂钩。
我找到了一个Mercurial扩展,它将标签编辑到空格,这至少与我想要的类似。这很复杂,我有点怀疑尝试将其修改为我需要的东西。
https://www.mercurial-scm.org/wiki/CheckFilesExtension
另一个策略是添加一个检测路径中反斜杠的钩子,然后简单地中止提交,强制Windows用户在提交之前手动修复文件。那比没有好。
答案 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设置文件的更改将不会影响中央存储库或提交。