2011-08-17 10 views
8

में गिट भंडार का चेकआउट मुझे शुद्ध PHP में गिट चेकआउट करने की आवश्यकता है। मैंने पहले से ही (http://www.phpclasses.org/package/5310-PHP-Retrieve-project-files-from-GIT-repositories.html) HTTP और SASL के साथ प्रयास किया है, लेकिन मैंने वास्तव में काम नहीं किया था। फिर मैंने जीएलआईपी (https://github.com/patrikf/glip) पर एक नज़र डाली, लेकिन ऐसा लगता है कि इस तरह की कोई कार्यक्षमता नहीं है। एक निर्दिष्ट निर्देशिकाशुद्ध PHP

पीएचपी GIT की मुख्य समस्या यह है में "निकालने" मास्टर शाखा फ़ाइलें, कि यह सिर्फ ऐसा नहीं किया - मूल रूप से मैं करने के लिए

-replicate/क्लोन एक दूरस्थ Git भंडार

की जरूरत प्रतिबद्धता में किए जा सकने वाले सभी संभावित परिवर्तनों का समर्थन किया। केवल नई फाइलें, फ़ाइलों के चारों ओर नहीं चलती हैं। और यह फ़ाइलों को निकालने में भी असमर्थ था।

/संपादन: Git स्थापित नहीं है और मैं भी Git स्थापित नहीं कर सकता

+0

यहाँ एक लगभग समान सवाल है। [प्रदर्शन-ए-गिट-पुल-इन-शुद्ध-php] (http://stackoverflow.com/questions/6994773/performing-a-git-pull-in-pure-php) – Andy

उत्तर

4

आप

Git PHP के लिए Streamwrapper एक PHP पुस्तकालय है कि एक कोड के भीतर से एक या एकाधिक गिट भंडारों के साथ बातचीत करने के लिए PHP कोड की अनुमति देता है। लाइब्रेरी में एक गिट रिपोजिटरी एब्स्ट्रैक्शन शामिल है जिसका प्रयोग गिट रिपॉजिटरीज़ और स्ट्रीम रैपर के प्रोग्रामेटिक रूप से एक्सेस करने के लिए किया जा सकता है जिसे PHP स्ट्रीम इंफ्रास्ट्रक्चर में लगाया जा सकता है ताकि डेवलपर को गिट रिपोजिटरी में फ़ाइलों पर फ़ाइल और निर्देशिका एक्सेस फ़ंक्शंस का उपयोग करने की अनुमति मिल सके। पुस्तकालय एक गिट भंडार, जैसे कि लॉग, वर्तमान भंडार स्थिति या जानकारी को भी जानकारी पर स्थिति जानकारी तक पहुंचने का माध्यम प्रदान करता है।

यह गिट को मशीन पर स्थापित करने की आवश्यकता है हालांकि बीटा में इस लेखन के रूप में है।

+2

क्षमा करें कि मैं इसका उल्लेख करना भूल गया लेकिन - गिट स्थापित नहीं है और मैं इसे इंस्टॉल नहीं कर सकता (साझा वेबस्पेस) :( – dom0

+0

मुझे बिल्कुल वही कठिनाई है और किसी ने मुझे एफ़टीपीएलॉय का उपयोग करने का सुझाव दिया है, मेरे लिए पर्याप्त नहीं है, लेकिन शायद – Tony

3

मैं Git संग्रह हेरफेर करने के लिए एक बहुत अच्छा पीएचपी पुस्तकालय विकसित किया है, तो आप इसे विचार करना चाहिए: http://gitonomy.com/doc/gitlib/master/

इस तरह लग रहा है:

$repository = new Gitonomy\Git\Repository('/path/to/repository'); 
$master  = $repository->getReferences()->getBranch('master'); 

$author = $master->getCommit()->getAuthorName(); 

echo "Last modification on master made by ".$author; 
+0

देखने के लायक है इस प्रणाली पर 'गिट' स्थापित करने की भी आवश्यकता है? – Potherca

+0

@ अलेक्जेंड्रे सैल्यूम मैंने एक बार आपकी लाइब्रेरी की कोशिश की है और इसे काम नहीं कर सका। विचार स्थानीय रूप से मेरे भंडार में हेरफेर करने पर केंद्रित था। कहें कि मेरे पास एक PHP आवेदन है गिट के साथ वैंप www फ़ोल्डर पर प्रारंभ किया गया है। क्या आपके पुस्तकालय का उपयोग उस रिपोजिटरी में हेरफेर करने के लिए किया जा सकता है क्योंकि बिटबकेट या गीथब को स्रोत पथ के रूप में उपयोग करने के विपरीत? – Maximum86

-3
<?php 
    /** 
    * This function handles the pull/init/clone of a git repo 
    * 
    * @param $git_url 
    * Example of git clone url git://github.com/someuser/somerepo.git 
    * 
    * @return bool true 
    */ 
    public static function pullOrCloneRepo($git_url) { 
    if (!isset($git_url)) { 
     return false; 
    } 
    // validate contains git://github.com/ 
    if (strpos($git_url, 'git://github.com/') !== FALSE) { 
     // create a directory and change permissions 
     $uri = 'public://somedir'; // change this if not in drupal 
     //check the dir 
     $file_path = drupal_realpath($uri); // change this if not in drupal 
     if (isset($file_path)) { 
     $first_dir = getcwd(); 
     // change dir to the new path 
     $new_dir = chdir($file_path); 
     // Git init 
     $git_init = shell_exec('git init'); 
     // Git clone 
     $git_clone = shell_exec('git clone '. $git_url); 
     // Git pull 
     $git_pull = shell_exec('git pull'); 
     // change dir back 
     $change_dir_back = chdir($first_dir); 
     return true; 
     } 
    } 
    else { 
     return false; 
    } 
    } 
?> 
+0

यदि आपके पास गिट स्थापित है तो पागल हो जाएं – taggartJ

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