2012-08-29 14 views
11

मुझे एक स्क्रिप्ट लिखनी है जो एक Mercurial repo से खींचने को स्वचालित करता है। क्या वैसे भी मैं hg pull -u कर सकता हूं जिसमें एक ही कमांड में अनुरोध किया गया उपयोगकर्ता नाम और पासवर्ड गुजरना शामिल है? मुझे पता है कि एक इंटरैक्टिव विधि है जो डिफ़ॉल्ट व्यवहार है, और मैं उपयोगकर्ता नाम और पासवर्ड को hgrc या अन्य जगहों में सहेजना नहीं चाहता क्योंकि यह एकाधिक उपयोगकर्ताओं द्वारा उपयोग किया जाएगा, इसलिए उपयोगकर्ता नाम और पासवर्ड को पास करने का कोई तरीका है कमांड लाइन? मैंने PHP में proc_open का उपयोग करने का प्रयास किया लेकिन वह काम नहीं कर रहा था और साथ ही साथ STDIN को प्रतिबिंबित कर रहा था।Mercurial (एचजी) पुल पैरामीटर: उपयोगकर्ता नाम और पासवर्ड

+0

एसएसएच कुंजी का उपयोग क्यों नहीं करें? –

उत्तर

15

मैं दो समाधान मिल गया।

hg pull -u https://user:[email protected]/path

2. का उपयोग कर, --config साथ क्रेडेंशियल्स प्रदान करें * उपसर्ग के रूप में (विक्टर का जवाब से):

hg pull -u --config auth.x.prefix=* --config auth.x.username=user --config auth.x.password=pass स्पष्ट रूप से पूर्ण क्रेडेंशियल्स सहित URL प्रदान

+1

अच्छा, इन दोनों कार्य :) – radtek

-1

आप --config स्विच का उपयोग करने के लिए ऐसा करने के लिए इस तरह सक्षम हो सकता है:

hg --config auth.username=USERNAME --config auth.password=PASSWORD pull -u 

मैं व्यक्तिगत रूप से कभी नहीं किया है, लेकिन उम्मीद है कि इस मदद करता है।

+4

अमान्य [auth] कुंजी 'उपयोगकर्ता नाम' अमान्य को अनदेखा कर रहा है, अमान्य [auth] कुंजी 'पासवर्ड' को अनदेखा कर रहा है – radtek

4

कमांड लाइन पर पासवर्ड पास करना असुरक्षित है क्योंकि अन्य उपयोगकर्ता इसे ps और इसी तरह का उपयोग कर देख सकते हैं।

  1. hg पाइप आप proc_open से वापस पाने पर साथ संवाद: क्या आपको क्या करना चाहिए या तो है। आपको Mercurial से आउटपुट को ध्यान से पार्स करने और stdin पर उपयोगकर्ता नाम और पासवर्ड फ़ीड करने की आवश्यकता होगी। मर्क्युरियल के रूप में चलाएँ:

    hg --config ui.interactive=yes 
    

    यकीन है कि यह आप के लिए बात करेंगे बनाने के लिए - अन्यथा मुझे डर लग रहा है कि यह पता लगाता है कि कोई TTY है कि वहाँ और अभ्यस्त बिल्कुल पूछेगा।

  2. [auth] section के साथ एक अस्थायी कॉन्फ़िगरेशन फ़ाइल लिखें। यह इस तरह दिखेगा:

    [auth] 
    x.prefix = output of "hg paths default" 
    x.username = USERNAME 
    x.password = PASSWORD 
    

    (कुछ भी x महत्वपूर्ण नहीं है, यह हो सकता है।) सुनिश्चित करें कि फ़ाइल केवल आप के रूप में स्क्रिप्ट चला रहे हैं उपयोगकर्ता द्वारा पढ़े जाने योग्य बनाओ। फिर फ़ाइल को इंगित करने और Mercurial निष्पादित करने के लिए HGRCPATH पर्यावरण चर सेट करें। जब आप पूरा कर लें तो फ़ाइल हटाएं!

command server के लिए एक libhg PHP library नहीं है, लेकिन मैं उपयोगकर्ता नाम या पुल या कि पुस्तकालय में क्लोन के लिए पासवर्ड के बारे में कुछ भी नहीं दिख रहा है। पुस्तकालय प्रगति पर काम कर रहा है, लेकिन जब यह अधिक परिपक्व होता है तो मैं इसका उपयोग करने का सुझाव देता हूं। लेकिन अब के लिए उपरोक्त दृष्टिकोण आपको मदद करनी चाहिए।

5

समाधान 2 एक भंडार के लिए विशिष्ट है।

[auth] 
x.prefix = * 
x.username = USERNAME 
x.password = PASSWORD 

यह सभी रिपॉजिटरीज़ पर लागू करने के लिए करें। इसके अलावा, अगर आप इसे "~/.hgrc" में डालते हैं और 600 की अनुमति देते हैं तो आपको एचजीआरसीपीएटीएच चाल नहीं करना है। बस इसे छोड़ दो।

2

यही काम किया:

1:

hg --config auth.rc.prefix=http://host/ --config auth.rc.username=user --config auth.rc.password=password pull -u http://host/full/path/to/repo 
संबंधित मुद्दे