2010-05-24 9 views
6

मैं एक linux/अपाचे/php वेब इस तरह परियोजना के लिए मेरी निर्देशिका संरचना योजना बना रहा हूँ:घटक आधारित Git और सिमलिंक के साथ वेब परियोजना निर्देशिका लेआउट

केवल www.example.com/webroot/ अपाचे

www.example.com/ 
    webroot/ 
    index.php 
    comp1/ 
    comp2/ 
    component/ 
    comp1/ 
     comp1.class.php 
     comp1.js 
    comp2/ 
     comp2.class.php 
     comp2.css 
    lib/ 
    lib1/ 
     lib1.class.php 

में उजागर किया जाएगा component/ और lib/ निर्देशिका केवल php पथ में होगी।

वेबूट निर्देशिका में सीएसएस और जेएस फ़ाइलें दिखाई देने के लिए मैं symlinks का उपयोग करने की योजना बना रहा हूं।

  • घटकों और पुस्तकालयों द्वारा लेआउट, फ़ाइल प्रकार के अनुसार नहीं और नहीं के साथ "सार्वजानिक 'या' गैर सार्वजनिक ', index.php एक अपवाद यह है:।

    webroot/ 
        index.php 
        comp1/ 
         comp1.js (symlinked) 
        comp2/ 
         comp2.css (symlinked) 
    

    मैं इन सिद्धांतों का अनुसरण करने की कोशिश की आसान विकास के लिए।

  • सार्वजनिक वेब निर्देशिका में फ़ाइलों के न्यूनतम सेट को उजागर करें और वेब पर सबकुछ अपरिवर्तनीय बनाएं। सिमलिंकिंग फाइलें जो घटकों और libs के लिए सार्वजनिक स्थान पर सार्वजनिक होने की आवश्यकता है, लेकिन अभी भी लेआउट को मिरर करना इसलिए लिंक और परिणामी एचटीएमएल कोड में घटक और लाइब्रेरी संरचना भी दिखाई दे रही है , जो विकास में मदद कर सकता है।
  • गिट उपयोग सुरक्षित होना चाहिए और हमेशा काम करना चाहिए। यह Git करने के लिए एक सिमलिंक जोड़ने के लिए कुछ प्रक्रिया का पालन करने के लिए ठीक हो सकता है, लेकिन उसके बाद उन्हें बाहर की जाँच या शाखाओं को बदलने सुरक्षित रूप से संभाला जाना चाहिए और साफ

सही ढंग से एकल फ़ाइलों के symlinking संभाल git होगा कैसे, वहाँ है कुछ विचार करने के लिए?

जब छवियों की बात आती है तो मुझे निर्देशिकाओं को लिंक करने की आवश्यकता होगी, गिट के साथ इसे कैसे संभालना है?

component/ 
    comp3/ 
     comp3.class.php 
     img/ 
     img1.jpg 
     img2.jpg 
     img3.jpg 

वे यहाँ जोड़ा जाना चाहिए:

webroot/ 
    comp3/ 
     img/ (symlinked ?) 

तो उस के लिए सिमलिंक का उपयोग कर है नुकसान शायद मैं सीधे webroot/पेड़ के लिए छवियों को स्थानांतरित कर सकता है, जो तीसरे के लिए पहले सिद्धांत टूट जाएगा (Git व्यावहारिकता)।

तो यह एक गिट और सिम्लिंक प्रश्न है। लेकिन मुझे PHP लेआउट के बारे में टिप्पणियां सुनने में दिलचस्पी होगी, शायद आप इसके लिए टिप्पणी फ़ंक्शन का उपयोग करना चाहते हैं।

उत्तर

2

जैसे ही आप पुन: उपयोग कहीं और फ़ाइलों में से कुछ सेट करने की जरूरत के रूप में, कि जब आप components की अवधि में सोच submodules

इसके बजाय webroot के प्रबंधन के लिए शुरू करने या (Git में) करना चाहिए, और comp , और lib ही रेपो के भीतर (जो SVN या "Centralized way" for CVCS है), तो आप को परिभाषित:

  • n रेपोस, एक पे आर घटक आप पुन: उपयोग करने के लिए (webroot के भीतर ऐसा 'img' एक Git रेपो एक submodule के रूप में पुन: उपयोग किया होगा, उदाहरण के लिए)
  • उन submodules आप की जरूरत की सटीक संशोधन संदर्भित करने के लिए एक मुख्य परियोजना की जरूरत है।

सिमलिंक की submodules के फायदे में से एक है कि: आप संदर्भ एक सटीक संशोधन, और अगर है कि घटक अपने स्वयं के कुछ विकास ने किया है, तो आप उन्हें तुरंत नहीं दिख रहा है (नहीं जब तक आप अपने submodule वैसे भी अद्यतन)।
एक सिम्लिंक के साथ, आप देखते हैं कि जो भी राज्य उस लिंक के दूसरे छोर पर फाइलों का सेट है।

+0

इसे इंगित करने के लिए धन्यवाद। मैंने अलग-अलग परियोजनाओं के रूप में घटकों को देखने का विचार नहीं किया था। मैं बाद के बिंदु पर घटकों को विभाजित करने के बारे में सोचूंगा, लेकिन अभी के लिए मैं उन्हें एक भंडार में रखूंगा, जो मुझे इसे सरल रखने में मदद करता है - कार्लथोरवाल्ड - उर्फ ​​ – user89021

+0

मुझे यकीन नहीं है लेकिन यह समाधान इस बात पर ध्यान नहीं देता है कि सिम्लिंकिंग का कारण लगभग सभी फ़ाइलों को एक अप्रत्याशित गैर सार्वजनिक निर्देशिका में रखना था? मैं सवाल अब स्पष्ट कर दूंगा। - karlthorwald - उर्फ ​​ – user89021

+0

@ user89021: कोई समस्या नहीं: आप sylink के साथ submodules जोड़ सकते हैं (एक सबमिशन के लिए symlink!)। यहां ध्यान देने योग्य महत्वपूर्ण बात यह है कि गिट का मतलब * एक * रेपो में सबकुछ शामिल नहीं है: http://stackoverflow.com/questions/984707/what-are-the-git-limits/984973#984973 – VonC