私は Android ソフトウェアを開発しているチームで働いています。一部のチーム メンバーは Windows を使用しており、一部は Mac を使用しており、私は Linux を使用していることで知られています。誰もがEclipseを使用しています。
project.properties
Eclipse は;というファイルを書き込みます。これが例です。重要な部分は、最後の 3 行、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 ユーザーが間違いを犯すと他の人にとっても苦痛なので、技術的な解決策を探しています。私には2つのアイデアがあります:
Windows の Eclipse のどこかで設定を見つけて、
project.properties
. (一体なぜそれがデフォルトではないのですか?!?)Mercurial を使用しているので、問題を解決する何らかの「フック」をインストールします。
- ファイルがリポジトリにコミットされ、バックスラッシュがスラッシュに置き換えられるように、Windows コンピューターにコミット フックをインストールします。
- Mac および Linux コンピューターにプル フックをインストールします。そのため、ファイルがバックスラッシュでコミットされた場合、ファイルが書き込まれるまでに修正されます。
コミット フックの方がすっきりしているように見えるので、両方が利用可能であれば、プル フックよりもコミット フックを使用します。
タブをスペースに編集する Mercurial 拡張機能を見つけました。これは、少なくとも私が望むものと似ています。それは十分に複雑なので、必要なものに変更しようとするのは少し気が引けます。
https://www.mercurial-scm.org/wiki/CheckFilesExtension
もう 1 つの戦略は、パス内のバックスラッシュを検出するフックを追加し、単純にコミットを中止して、Windows ユーザーがコミットする前に手動でファイルを修正することを強制することです。それは何もないよりはましです。