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

以上是 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 用户在提交之前手动修复文件。那总比没有好。

4

2 回答 2

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

您也可以提交这些脚本。

于 2015-02-23T14:52:04.140 回答
0

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

于 2013-10-18T05:47:43.130 回答