2013-10-18 6 views
9

私は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ユーザーを強制的にコミット中止します。それは何よりも良いでしょう。

+0

この問題に直面しています。あなたのチームはどちらの解決法を解決しましたか? –

+1

まだ解決していません。私は、最良の解決策は単純なものであるという結論に達しました。バックスラッシュが間違っている場合、コミットに失敗するフックがあり、Windowsユーザーは手動で修正する必要があります。現時点では、誰もそのファイルの基本的な変更を行っていないので、この問題は私たちを噛んでいませんでした。 – steveha

答えて

0

私たちはローカルライブラリのパスに起因する同様の状況に直面したので、しばらくの間検索した後、集中リポジトリツール(Git for us)を使用するベストプラクティス "すべてのEclipse依存/リポジトリからのファイル "。それは私たちのためにうまくいく。このようにして、Eclipse設定ファイルへの変更は、セントラルリポジトリに影響を与えたり、コミットしたりすることはありません。

1

私は両方のバージョンをプロジェクトに保存します(project.properties.windowsproject.properties)。linux)、OSに応じて適切なファイルを指すシンボリックリンクを作成します。このシンボリックリンクをproject.propertiesおよびとし、バージョンコントロールで無視します。

明らかに、この設定の欠点は、Windowsユーザーが(project.properties.windowsを指して)そのproject.propertiesファイルを更新するとき、Linuxのバージョンは手動で更新する必要があるということです、そしてその逆が、それは大きな問題のようには聞こえません、私はあなたがこのファイルを非常に頻繁に更新しないと推測します。

- リンクを作成するには -

を次のコマンドで、セットアップのLinux環境にファイルmake_link.shを作成します。

ln -s $(readlink -m project.properties.linux) $(readlink . -m)/project.properties 

をするファイルmake_link.batを作成します。次のコマンドを使用してWindows環境をセットアップします。

mklink project.properties project.properties.windows 

これらのスクリプトもコミットできます。

関連する問題