私はAndroidソフトウェアを開発しているチームで働いています。チームメンバーの中にはWindowsを使っているものもあれば、Macを使っているものもあれば、Linuxを使っている人もいます。誰もがEclipseを使用しています。Eclipse project.propertiesバックスラッシュの有害パスとみなされます
Eclipseは、project.properties
というファイルを書き込みます。ここに例があります。重要な部分は、最後の3行、アンドロイドライブラリリファレンスパスです。
# 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つのアイデアを持っている:
は
project.properties
のようなファイルのパスを保存するときにスラッシュを使用するように言って、Windows上のどこかのEclipseの設定を検索します。 (なぜ、それはデフォルトではないのですか?)私たちはMercurialを使用していますので、問題を解決するために何らかの "フック"をインストールしてください。
- ファイルがリポジトリにコミットされるように、コミットフックをバックスラッシュをスラッシュで置き換えてインストールします。
- MacおよびLinuxコンピュータにプルフックを取り付けます。ファイルがバックスラッシュでコミットされると、ファイルが書き込まれるまでに修正されます。
の両方が利用可能な場合、私はプルフック上でcommitフックを取ると思いますので、commitフックは、クリーンなようです。
タブを空白に編集するMercurial拡張機能が見つかりました。これは少なくとも私が欲しいものと似ています。複雑なので、私が必要とするものに修正しようとするのはちょっと心配です。
https://www.mercurial-scm.org/wiki/CheckFilesExtension
他の戦略は、パスにバックスラッシュを検出し、フックを追加することで、単純にコミットする前に手動でファイルを修正するためにWindowsユーザーを強制的にコミット中止します。それは何よりも良いでしょう。
この問題に直面しています。あなたのチームはどちらの解決法を解決しましたか? –
まだ解決していません。私は、最良の解決策は単純なものであるという結論に達しました。バックスラッシュが間違っている場合、コミットに失敗するフックがあり、Windowsユーザーは手動で修正する必要があります。現時点では、誰もそのファイルの基本的な変更を行っていないので、この問題は私たちを噛んでいませんでした。 – steveha