2011-11-23 11 views
15

मैं एक परियोजना के लिए गिट और Codebase का उपयोग कर रहा हूं।उपयोगकर्ताओं को गलत उपयोगकर्ता के रूप में गिट करने के लिए रोकें

मैंने अभी एक परीक्षण किया है और मैं एक अलग ईमेल पते और नाम सेट के साथ गिट रिपोजिटरी को प्रतिबद्ध करने में सक्षम हूं जिसके कारण यह एक अलग उपयोगकर्ता के रूप में प्रतिबद्धता को टैग करने का कारण बनता है। मैंने इसे भंडार में धक्का दिया और यह दिखाया गया कि उस उपयोगकर्ता ने ऐसा किया है, भले ही वह मुझे था।

क्या उपयोगकर्ताओं को किसी और के उपयोगकर्ता विवरण के साथ काम करने या धक्का देने से रोकने का कोई तरीका है (प्रभावी रूप से वे "अलग" उपयोगकर्ता के रूप में काम नहीं कर सकते हैं?

संपादित करें:

मुझे लगता है इस प्रमाणीकरण स्थानीय कामकाज में के बाद से सर्वर के लिए प्रतिबद्ध धकेलने के स्तर पर होने के लिए नकल यह बस भंडार उपयोगकर्ता के लिए पूरा उपयोग किया है जो है, क्या करने की जरूरत है जो कुछ भी होता है वे चाहते हैं क्या ऐसा कुछ है जो मुझे शायद Codebase से पूछना चाहिए?

संपादित करें 2:

Git config के रूप में अनुरोध:

(रेपो/.git/config)

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = [email protected]:<redacted company name>/<redacted project name>/test.git 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
+0

क्या आप अपनी .git/config की सामग्री पोस्ट कर सकते हैं? –

+0

आप सर्वर के लिए क्या उपयोग कर रहे हैं? सादा गिट, गिटोसिस, गिटोलाइट, ...? – CodesInChaos

+1

ओपी कोडेबेस का उपयोग कर रहा है, जो कि गिटहब के समान है। यह सवाल के शीर्ष पर है। –

उत्तर

3

ओह: एक ओर जहां यह एक वैध तकनीक है, यह मान लिया गया है आप सर्वर पर प्रभावी ढंग से पूर्ण नियंत्रण है। यदि आप एक होस्टेड समाधान का उपयोग कर रहे हैं तो सभी दांव बंद हैं।

आप रिपोजिटरी के update हुक में लेखक का नाम और ईमेल सत्यापित कर सकते हैं। आप दोनों मान इस तरह प्राप्त कर सकते हैं:

#!/bin/sh 
set -- refname sha1_old sha1_new 
author_name=$(git log --pretty=format:%an $sha1_new) 
author_email=$(git log --pretty=format:%ae $sha1_new) 

चाल, निश्चित रूप से यह पता लगा रही है कि ये मान्य हैं या नहीं। यहां एक चाल है:

आप विकल्प का उपयोग अपने एसएसएच कॉन्फ़िगरेशन में git-receive-pack के आसपास एक रैपर बनाने के लिए कर सकते हैं जो लेखक जानकारी के लिए ssh कुंजी को मानचित्र करता है। उदाहरण के लिए, कुछ इस तरह:

#!/bin/sh 

GV_AUTHOR_NAME="$1" 
GV_AUTHOR_EMAIL="$2" 

export GV_AUTHOR_EMAIL GV_AUTHOR_NAME 
eval exec $SSH_ORIGINAL_COMMAND 

और तुम इस तरह एक authorized_keys लाइन कुछ का प्रयोग करेंगे:

command="~/bin/gitvalidator 'Lars Kellogg-Stedman' '[email protected]'" ssh-rsa ... 

यह सब का नतीजा है कि आपके update स्क्रिप्ट वातावरण चर होता GV_AUTHOR_NAME और GV_AUTHOR_EMAIL है उपलब्ध है, और इन्हें प्रतिबद्धता के खिलाफ जांच सकते हैं और अगर वे मेल नहीं खाते तो त्रुटि के साथ बाहर निकलें।

आप अपने क्रेडेंशियल्स है जब आप किसी दूसरे व्यक्ति के रूप में प्रतिबद्ध कर सकते हैं: इससे पहले कि मैं अपने नवीनतम अद्यतन प्रस्तुत

+0

अगर आप किसी के जवाब को कम करते हैं तो टिप्पणी छोड़ना प्रथागत है। इससे लोगों के समय के साथ अपने उत्तरों की गुणवत्ता में सुधार करने में मदद मिलती है। अगर इस उत्तर में कुछ गड़बड़ है, तो कृपया मुझे बताएं ताकि मैं इसे ठीक कर सकूं। धन्यवाद! – larsks

+0

(... हालांकि मुझे संदेह है कि यह केवल प्रतिशोधक था।) – larsks

+0

मुझे लगता है कि मैं लोगों को कोडबेस में पूछूंगा कि इस पर उनकी स्थिति क्या है, धन्यवाद :) – Richard

-3

क्षमा करें मेरी पोस्ट हटा दिया गया।

बस स्पष्ट करने के लिए, परिदृश्य के बारे में पूछ रहे हैं इस प्रकार है:

उपयोगकर्ता फू और बार रेपो के लिए प्रतिबद्ध कर सकते हैं। आप उपयोगकर्ता फू को उपयोगकर्ता बार के रूप में रेपो में आने से रोकना चाहते हैं।

इस मामले में, उपयोगकर्ता बार को अपनी निजी एसएसएच कुंजी की रक्षा करनी होगी, जैसे कि वे पासवर्ड की रक्षा करेंगे। जैसा कि आपकी प्रतिबद्धता प्रमाणित करने के लिए प्रयोग किया जाता है।

+0

आप अपना नाम और ईमेल जो कुछ भी चाहते हैं उसे सेट कर सकते हैं। इससे कोई फर्क नहीं पड़ता कि आप किस एसएस कुंजी का उपयोग कर रहे हैं (या यदि आप एसएसएच का उपयोग कर रहे हैं या नहीं)। एसएसएच कुंजी के पास गिट द्वारा दर्ज नाम और ईमेल पते से बिल्कुल कुछ नहीं है। – larsks

+0

प्रतिबद्धता परिवहन के इस्तेमाल से पूरी तरह से स्वतंत्र गिट द्वारा स्थानीय रूप से बनाई जाती है। एक पारंपरिक सेटअप में, यदि आप परिवहन के रूप में एसएसएच का उपयोग कर रहे हैं, तो धक्का देने वाले उपयोगकर्ता को प्रमाणीकृत करने के लिए उपयोग किए जाने वाले प्रमाण-पत्रों को धक्का देने वाली गतिविधियों की सामग्री के साथ कुछ भी करने की आवश्यकता नहीं है। –

+0

वह कोडेबेस के संबंध में पूछ रहा है, जो कि गिटहब के समान है। वास्तव में पूछे जाने वाले संबंधों के संबंध में समस्या को देखते हुए जवाबों का मूल्यांकन करते समय सहायक होगा! –

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

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