2013-10-18 7 views
9

मैं एंड्रॉइड सॉफ्टवेयर विकसित करने वाली एक टीम में काम कर रहा हूं। कुछ टीम के सदस्य विंडोज का उपयोग करते हैं, कुछ मैक का उपयोग करते हैं, और मुझे लिनक्स का उपयोग करने के लिए जाना जाता है। हर कोई ग्रहण का उपयोग करता है।ग्रहण परियोजना.प्रोपर्टीज बैकस्लैश पथ हानिकारक मानते हैं

ईक्लीप्स project.properties नामक एक फ़ाइल लिखता है; यहाँ एक उदाहरण है। महत्वपूर्ण हिस्सा पिछले तीन पंक्तियों, एंड्रॉइड लाइब्रेरी संदर्भ पथ है।

# 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 

उपर्युक्त फ़ाइल कैसा दिखता है जब मैक या लिनक्स पर ग्रहण लिखता है। जब विंडोज़ पर एक्लिप्स इसे लिखता है, लाइब्रेरी संदर्भ रेखा बैकस्लाश के साथ लिखी जाती है।

बेशक विंडोज़ पर, बैकस्लाश स्वीकार्य पथ विभाजक हैं। लेकिन मैक और लिनक्स पर ऐसे पथ काम नहीं करते हैं। बात यह है कि, विंडोज़ पर, आगे slashes पूरी तरह से अच्छी तरह से काम करते हैं। इसलिए, हमारी नीति हमेशा फ़ाइल को आगे की स्लैश के साथ प्रतिबद्ध करती है, ताकि यह सभी के लिए काम करे।

लेकिन यह हमारे विंडोज उपयोगकर्ताओं के लिए दर्द है, और जब हम विंडोज उपयोगकर्ता गलती करते हैं तो यह हमारे लिए दर्द है, इसलिए मैं तकनीकी समाधान की तलाश में हूं।

  • , विंडोज पर एक सेटिंग ग्रहण में कहीं पता लगाएं आगे उपयोग करने के लिए यह कह स्लैश जब project.properties की तरह फाइलों में रास्तों की बचत: मैं दो विचार है। (बिल्ली क्यों डिफ़ॉल्ट नहीं है?!?)

  • हम Mercurial का उपयोग करते हैं, इसलिए: कुछ प्रकार के "हुक" स्थापित करें जो समस्या को हल करेंगे।

    • विंडोज कंप्यूटर पर एक प्रतिबद्ध हुक स्थापित करें, ताकि फ़ाइल को रेसॉजिटरी में आगे बढ़ाया जा सके और बैकस्लेश के साथ आगे की स्लैश द्वारा प्रतिस्थापित किया जा सके।
    • मैक और लिनक्स कंप्यूटर पर पुल हुक स्थापित करें; इसलिए यदि फ़ाइल बैकस्लाश के साथ प्रतिबद्ध हो जाती है, तो वे फाइलें लिखे जाने तक तय हो जाते हैं।

हुक प्रतिबद्ध क्लीनर लगता है, यदि ऐसा है तो दोनों उपलब्ध हैं मैं एक एक पुल हुक से अधिक हुक प्रतिबद्ध काफ़ी होगा।

मुझे एक Mercurial एक्सटेंशन मिला जो रिक्त स्थान पर टैब संपादित करता है, जो कम से कम मेरे जैसा चाहता है। यह काफी जटिल है कि मैं इसे जो कुछ चाहिए उसे संशोधित करने की कोशिश करने का थोड़ा सा झुकाव हूं।

https://www.mercurial-scm.org/wiki/CheckFilesExtension

अन्य रणनीति एक हुक कि रास्तों के बैकस्लैश का पता लगाता है जोड़ने के लिए है, और बस के लिए प्रतिबद्ध रोकता है Windows उपयोगकर्ता के लिए मजबूर करने से पहले हाथ से फ़ाइल को ठीक करने के लिए। यह कुछ भी नहीं होगा।

+0

अब इस समस्या का सामना करना पड़ रहा है। आपकी टीम किस समाधान पर बसे? –

+1

अभी तक इसे हल नहीं किया है। मैं इस निष्कर्ष पर पहुंचा हूं कि सबसे अच्छा समाधान सरल है: बैकस्लैश गलत तरीके से होने पर हुक जो विफल हो जाते हैं, और विंडोज उपयोगकर्ताओं को इसे हाथ से ठीक करना होगा। फिलहाल, कोई भी उस फ़ाइल में बुनियादी बदलाव नहीं कर रहा है, इसलिए यह समस्या हमें काट नहीं रही है, और हम सभी व्यस्त हैं और इसके बारे में सोच नहीं रहे हैं। – steveha

उत्तर

0

स्थानीय लाइब्रेरी के रास्ते के कारण हमें इसी तरह की स्थिति का सामना करना पड़ा, इसलिए थोड़ी देर के बाद हमें पता चला कि केंद्रीकृत भंडार उपकरण (हमारे लिए गिट) का उपयोग करने का सबसे अच्छा अभ्यास, "सभी ग्रहण निर्भर/विशिष्ट सेटिंग्स को हटाएं रिपोजिटरी से फ़ाइलें "। और यह हमारे लिए ठीक काम करता है। इस तरह, ग्रहण सेटिंग्स फ़ाइल में परिवर्तन केंद्रीय भंडार को प्रभावित नहीं करेगा या प्रतिबद्ध नहीं होगा।

1

मैं प्रोजेक्ट में दोनों संस्करणों को रखूंगा (project.properties.windows और project.properties।लिनक्स) और ओएस के आधार पर सही फ़ाइल को इंगित करने वाला एक प्रतीकात्मक लिंक बनाएं। इस प्रतीकात्मक लिंक को कॉल करें project.properties और इसे संस्करण नियंत्रण द्वारा अनदेखा कर दें।

जाहिर है इस स्थापना का नुकसान है कि विंडोज़ उपयोगकर्ताओं फ़ाइल, लिनक्स संस्करण मैन्युअल रूप से अद्यतन किया जाना चाहिए (जो project.properties.windows को इंगित करता है), और उपाध्यक्ष प्रतिकूल, अद्यतन जब उनके project.properties लेकिन यह एक बड़े सौदे की तरह नहीं लगता है, मुझे लगता है कि आप इस फ़ाइल को अक्सर अद्यतन नहीं करते हैं।

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

के लिए एक फ़ाइल make_link.bat बनाएँ:

- निम्न आदेश के साथ सेटअप लिनक्स वातावरण के लिए

make_link.sh एक फ़ाइल बनाएँ, - लिंक बनाने के लिए निम्नलिखित कमांड के साथ विंडोज वातावरण सेटअप करें:

mklink project.properties project.properties.windows 

आप उन स्क्रिप्ट को भी कर सकते हैं।

संबंधित मुद्दे