2011-08-27 12 views
12

मैं गिटोलाइट के साथ गिटवेब काम करने की कोशिश कर रहा हूं ... लेकिन अब तक असफल रहा है।
मैं रेडहाट लिनक्स मशीन पर काम कर रहा हूं। git नामक उपयोगकर्ता मौजूद है। /home/git
भंडार स्थान:मुझे गिटवेब और गिटोलाइट को कॉन्फ़िगर कैसे करना है ताकि वे एक साथ काम करेंगे?

gitolite के तहत स्थापित किया गया है /home/git/repositories

कृपया ध्यान दें कि, gitweb सादे वेनिला Git के साथ ठीक काम कर रहा था। अब मैं इसे गिटोलाइट के साथ काम करने की कोशिश कर रहा हूं।

यहाँ क्या मेरी फ़ाइलों की तरह लग रहे:

  • /etc/gitweb.conf

    $projectroot = "/home/git/repositories"; 
    @git_base_url_list = qw(ssh://[MyHostName]/home/git/projects.list); 
    $projects_list = "/home/git/projects.list" 
    
  • /home/git/projects.list

    myrepo1.git 
    myrepo2.git 
    
  • /home/git/.gitolite.rc:

    $PROJECTS_LIST = $ENV{HOME} . "/projects.list"; 
    $GL_GITCONFIG_KEYS = "gitweb.url receive.denyNonFastforwards receive.denyDeletes"; 
    

मुझे किस कॉन्फ़िगरेशन को याद किया गया है? मैंने अपाचे में कोई बदलाव नहीं किया है।

वेब यूआरएल: - कोई खजाने पाया http://MyHostName/git
यह कह रही है एक 404 त्रुटि देता है।

उत्तर

0

आपको /etc/gitweb_config.perl के अंत में Gitolite contrib/gitweb.conf जोड़ने की आवश्यकता है।
दूसरे शब्दों में, आपको अपने gitweb.conf perl फ़ाइल से गिटोलाइट फ़ंक्शन को कॉल करने की आवश्यकता है, अन्यथा गिटवेब-गिटोलाइट एकीकरण काम नहीं करेगा।

# check for (at least) "R" permission 
    my ($perm, $creator) = &repo_rights($repo); 
    return ($perm =~ /R/); 

चेक अनुभाग "helping with gitweb" (यहाँ repo_rightsgitolite.pm से एक विधि है)।

पिछले लाइनों आप तो gitweb_config.perl के अंत में जोड़ने की जरूरत है कर रहे हैं:

use lib ("."); 
require "gitweb.conf.pl"; 

इस तरह, आप किसी भी "500 - Internal Server Error syntax error at /etc/gitweb.conf" त्रुटि संदेश से बचने जाएगा।

आप एक gitweb_config.perl जिसमें आप घोषित gitweb.conf.pl नहीं है, तो है, लेकिन सीधे "gitweb.conf.pl", फिर "use lib (".");" उस फ़ाइल की पहली पंक्ति के रूप में जोड़ें।

+0

के लिए /etc/gitweb.conf वास्तव में क्या लाइन मैं जोड़ने की जरूरत है ऐसा करने के अंत में? मैंने इस लाइन को जोड़ने का प्रयास किया: $/home/git/gitolite/contrib/gitweb.conf, लेकिन यह त्रुटि देता है। मुझे लगता है कि मैं गलत समझा। – Jee

+0

मैं कुछ बहुत स्पष्ट रूप से गलत कर रहा हूं। क्या मेरा gitweb.conf, projects.list, .gitolite.rc सेटअप सही है? त्रुटि संदेश स्पष्ट रूप से कहता है: कोई परियोजना नहीं मिली। – Jee

+0

@Jee: '/ etc/gitweb.conf' के अंत में, आप https://github.com/sitaramc/gitolite/blob/pu/contrib/gitweb/gitweb.conf की सभी * पंक्तियों की प्रतिलिपि बनाने के लिए तैयार हैं। (और लाइन 21, 23, के मान को बदलें ... यदि आपने अपने गिटोलाइट इंस्टॉलेशन में विभिन्न पथों का उपयोग किया है) – VonC

13

मैंने हाल ही में गिटोलाइट और गिटवेब स्थापित किया और पाया कि /etc/gitweb.conf आवश्यक बहुत छोटी कॉन्फ़िगरेशन। आपने मेरे लिए क्या सही देखा है। /home/git/repositories पर अनुमतियां क्या हैं? आप पाते हैं कि वे बहुत ही सीमित हैं।इस आजमाएं:

$ chmod -R 775 /home/git/repositories 

क्या, मेरे लिए समस्या हल हो जाती है यही कारण है कि (हालांकि मुझे लगता है वहाँ अनुमतियां सेट अप करने के लिए एक अधिक सुरक्षित तरीके से है)। यदि यह काम करता है, तो मैं केवल अपाचे (या जो भी उपयोगकर्ता खाता gitweb को निष्पादित किया जा रहा है) को रिपोजिटरीज निर्देशिका पर अधिक सुगंधित अनुमति देने की अनुशंसा करता हूं।

मैं अपने .gitolite.rc में यह है:

GIT_CONFIG_KEYS => 'gitweb\.(owner|description|category)', 

तो <gitolite-admin>/conf/gitolite.conf में निम्नलिखित काम करता है कि:

config gitweb.owner   = owner name 
config gitweb.description = some description 
config gitweb.category  = some category 
+4

थोड़ी अधिक सुरक्षित होने के लिए आप अपाचे/www-data उपयोगकर्ता को गिटोलाइट समूह 'usermod -a -G gitolite apache' में जोड़ सकते हैं और फिर gitolite चर सेट करने के साथ' chmod -R 750/home/git/repositories' करें '$ REPO_UMASK = 0027;' –

+1

$ REPO_UMASK सेटिंग मेरे लिए विशेष रूप से उपयोगी थी। अगली बार जब आप एक रेपो अपडेट करते हैं तो रिपॉजिटरीज निर्देशिका chmod-ing काम करता है और फिर अनुमतियों में से किसी एक पर 700 पर रीसेट हो जाता है। ध्यान दें कि दस्तावेज़ कहते हैं कि गिटोलाइट में यूएमएएसके सेटिंग महत्वपूर्ण है यदि आप गिटवेब को चलाने के लिए चाहते हैं: http://gitolite.com/gitolite/g2/rc.html –

0

1/gitolite स्थापित करने और इसे सेट अप। तो यह सुनिश्चित करें कि /home/git/.gitolite.rc शामिल uncommented भागों कि तरह लग रहे बनाने के लिए पर्याप्त होता है:

%RC = (
    ... 
    UMASK       => 0027, 
    ... 
    ENABLE => [ 
     ... 
     'gitweb', 
     ... 
    ] 
); 

2/सही तरीके से सेट $projectroot और $projects_list के निर्देशों /etc/gitweb.conf (projects.list फ़ाइल और repositories निर्देशिका के स्थान का मिलान करने के लिए)। पसंद:

$projectroot = "/home/git/repositories"; 
... 
$projects_list = "/home/git/projects.list"; 

3/सुनिश्चित करें कि वर्तमान भंडार फ़ाइलों को वेबसर्वर उपयोगकर्ता द्वारा भी पठनीय किया जा सकता है। ये उदाहरण है, तो डेबियन आधारित प्रणाली से YMMV हैं:

sudo adduser www-data git     # append `www-data` user to a `git` group 
sudo chmod g+r /home/git/projects.list  # make sure group members can read the `project.list` 
sudo chmod -R g+rx /home/git/repositories # recursively set less restrictive access mode for group members 
sudo /etc/init.d/apache2 restart   # restart web server to apply these changes 

4/अंत में एक क्लाइंट मशीन पर gitolite-admin भंडार के अपने /conf/gitolite.conf फ़ाइल के भीतर उपयोगकर्ता gitweb के लिए पहुंच कॉन्फ़िगर और प्रतिबद्ध होते हैं और उन्हें (मानक तरीका) को धक्का देकर उन्हें लागू । एक रिपोजिटरी हम देखते हैं और gitweb के माध्यम से प्रबंधन करने के लिए चाहते हैं का उपयोग इस तरह की स्थापना की है करने के लिए है:

repo testing                  
    RW+  = @all                
    R  = gitweb # add this line to make the repo browsable using `gitweb` 

नोट: ... केवल पता चलता है फ़ाइलों के भीतर अन्य विन्यास निर्देशों देखते हैं। उन्हें वहाँ मत डालो!

gitlabgitolite भंडारों को देखने के लिए कोई अन्य शुल्क आवश्यक नहीं है।

लागू होता है (कम से कम) gitolite 3.6.6 और 2.1.4 gitweb