2010-11-24 16 views
10

से कनवर्ट एक्सटेंशन का उपयोग करके मैंने एक सबवर्जन रिपोजिटरी को मर्कुरियल में परिवर्तित कर दिया। जब मैं कछुआ एचजी के साथ नई भंडार को देखता हूं, तो मैं प्रत्येक स्रोत में संबंधित स्रोत पथ और संशोधन (छवि देखें) में परिवर्तन करता हूं। Tortoise HG Screenshot with HG Changeset and SVN source path/revisionएसवीएन से एचजी: अब आउटपुट एसवीएन संशोधन संख्या एचजी चेंजसेट

क्या उन दोनों को कंसोल में लिखने का कोई तरीका है? आदर्श रूप में मैं इस तरह एक आउटपुट चाहते हैं:

hg:1147 svn:[email protected] 
hg:1146 svn:[email protected] 
... 

मुझे पता है कि मैं उत्पादन अनुकूलित करने के लिए टेम्पलेट विकल्प के साथ hg log उपयोग कर सकते हैं, लेकिन कैसे सबवर्सन स्रोत पथ/संशोधन प्राप्त करने के लिए पता नहीं है।

संपादित करें: यह रास्ता नहीं मैं जाना चाहती थी की तरह लग रहा संभव नहीं है। एसवीएन स्रोत पथ/संशोधन परिवर्तन के भीतर extras नामक फ़ील्ड में है (धन्यवाद @ Ry4en) और न तो hg log और न ही hg export इस मान को आउटपुट करें। क्या मैं अब कोशिश करेंगे

hg log --template 'hg:{rev} nodeid:{node}' 

के साथ संयोजन में फ़ाइल .hg/shamap उपयोग करने के लिए SVN स्रोत पथ/संशोधन के मर्क्युरियल संशोधन नक़्शा बनाने के लिए है।

EDIT2: मेरा Mercurial संस्करण 1.4.3 है। मर्क्युरियल साथ 1.7.1 यह इस आदेश का उपयोग करने के लिए संभव है (धन्यवाद @ विम Coenen): hg log --template {node}\n{extras}\n\n

उत्तर

3

यह changeset पर extras नाम के एक क्षेत्र में रखा है, और मैं नहीं मानता कि इसके लिए एक लॉग टेम्पलेट प्रविष्टि है । यह hg export में दिखाया जा सकता है, जिससे आप इसे grep कर सकते हैं, और यह निश्चित रूप से प्रोग्रामेटिक रूप से उपलब्ध है, लेकिन मुझे नहीं लगता कि इसे पाने के लिए --template तरीका है।

+7

ऐसा लगता है कि आप 'extras' मुद्रित कर सकते हैं,' कोशिश एचजी --template {नोड} \ N {} अतिरिक्त \ n \ उदाहरण के लिए n' लॉग इन करें। –

+0

@Wim: जब मैंने आपके जैसे कमांड को लिखा है (प्लस टेम्पलेट स्ट्रिंग के लिए सिंगल कोट्स), तो मुझे "कोई कीवर्ड 'अतिरिक्त' संदेश नहीं मिला है (गायब एस नोट करें)। जब मैं 'एक्स्ट्रा' के बजाय 'अतिरिक्त' का उपयोग करता हूं तो मुझे लॉग आउटपुट मिलता है, लेकिन केवल नोड आईडी और अतिरिक्त फ़ील्ड के लिए कोई मान नहीं है। –

+0

@ Ry4en: ऐसा लगता है कि आप सही हैं: 'hg log' के साथ डेटा प्राप्त करने का कोई तरीका नहीं है। दुर्भाग्यवश मुझे 'एचजी निर्यात' आउटपुट में अतिरिक्त नहीं दिख रहा है। लेकिन मुझे लगता है कि संयोजन की आवश्यकता के लिए मैं .hg/shamap में प्रविष्टियों के साथ लॉग आउटपुट को सहसंबंधित कर सकता हूं। –

9

hgsubversion के नए संस्करण {svnrev} टेम्पलेट कीवर्ड जोड़ते हैं। यह hg help subversion में वर्णित है:

[...]

ढूँढना और प्रदर्शित सबवर्सन संशोधन

मर्क्युरियल changesets और सबवर्सन संशोधन, hgsubversion तीन टेम्पलेट कीवर्ड प्रदान करता है के बीच के रिश्ते का खुलासा के लिए:

svnrev Expanded to the original Subversion revision number. 
svnpath The path within the repository that the changeset represents. 
svnuuid The Universally Unique Identifier of the Subversion repository. 

एक उदाहरण:

$ hg log --template='{rev}:{node|short} {author|user}\nsvn: {svnrev}\n' 

Mercurial 1.5 या बाद में उपयोग करते समय टेम्पलेट कीवर्ड उपलब्ध हैं।

fromsvn Select changesets that originate from Subversion. Takes no 
      arguments. 
svnrev Select changesets that originate in a specific Subversion 
      revision. Takes a revision argument. 

उदाहरण के लिए:: जब मर्क्युरियल 1 का उपयोग कर

$ hg log -r 'fromsvn()' 
$ hg log -r 'svnrev(500)' 

Revsets उपलब्ध हैं

सबवर्सन से changesets खोजने के लिए, hgsubversion को revsets दो नए चयनकर्ताओं प्रदान फैली हुई है।6 या बाद में और संशोधनों को निर्दिष्ट करने के लिए कई Mercurial आदेशों द्वारा स्वीकार किए जाते हैं। विवरण के लिए "एचजी सहायता revsets" देखें।

+0

क्या यह तब भी काम करता है जब मैंने 'कनवर्ट' एक्सटेंशन के साथ एसवीएन रिपोजिटरी का पूर्ण रूपांतरण किया था या क्या मुझे शुरुआत से hgsubversion का उपयोग करना है? –

+1

वह hgsubversion का उपयोग नहीं कर रहा है, वह भंडार परिवर्तित कर दिया है। –

+0

@ क्रिस: ओह, क्षमा करें, मुझे लगता है कि मैंने माना है कि इन दिनों हर किसी ने hgsubversion का उपयोग किया :-) –

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