我在一个开发 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 用户在提交之前手动修复文件。那总比没有好。