2012-04-17 14 views
6

में पुल और अपडेट की तिथियां प्राप्त करें क्या यह जानना संभव है कि किसी दूरस्थ प्रतिबद्धता से एक निश्चित प्रतिबद्धता को खींचा गया था और Mercurial के साथ अपडेट की गई फाइलें?Mercurial

अधिक सटीक, मैंने कुछ दिन पहले hg pull -u बनाया था, और अब मैं जानना चाहता हूं कि यह पुल केवल अंतिम प्रतिबद्धता डाउनलोड करता है, या अगर कुछ ऐसा काम करता है जो अभी तक खींचा नहीं गया है, तो मेरा आखिरी खींच उन्हें भी मिल रहा है।

hg log प्रतिबद्धताओं की तिथियां देने लगता है, लेकिन अपडेट के बारे में कुछ नहीं। क्या यह जानकारी कहीं भी है?

उत्तर

8

यह जानकारी Mercurial द्वारा दर्ज नहीं की गई है। एक Mercurial भंडार केवल परिवर्तनों के लिए एक कंटेनर है और Mercurial संग्रह नहीं करता है कि कैसे (या कब) परिवर्तनों को भंडार में प्रवेश किया।

आप इसके लिए हुक सेट कर सकते हैं, हालांकि आपको स्क्रिप्ट स्वयं बनाना होगा। एक बहुत ही मौलिक प्रणाली होगा

[hooks] 
pre-pull = (date; hg root; hg tip) >> ~/.pull-log 
post-pull = hg tip >> ~/.pull-log 

यह आज की तारीख, वर्तमान भंडार, और बस हर hg pull से पहले ~/.pull-log में वर्तमान टिप रिकॉर्ड होगा। खींचने के बाद नई टिप दर्ज की गई है। आप उन स्क्रिप्ट्स का निर्माण कर सकते हैं जो लॉग फ़ाइल को प्रत्येक पुल के बारे में जानकारी निकालने के लिए पार्स करते हैं।

hg log प्रतिबद्ध की तारीखों देने के लिए लगता है, लेकिन अद्यतन

हाँ बारे में कुछ नहीं, hg log केवल संग्रहीत इतिहास (changesets) और कॉपी ऑपरेशन काम कर से संबंधित है की तरह अद्यतन करने का हिस्सा नहीं है लिखित इतिहास।

अंत में, मुझे यह उल्लेख करने दो कि मैंने पहली बार किसी को "पुल लॉग" के लिए कहा है। हालांकि, विपरीत काफी आम है: सर्वर पर "पुश लॉग" बनाए रखने के लिए स्क्रिप्ट हैं, यह देखने के लिए कि किसने और कब धक्का दिया। यह Mozilla द्वारा दूसरों के बीच किया जाता है। कुछ शुरुआती निर्देशों के लिए this README देखें।

+0

धन्यवाद के बिना चला जाता है काम करता है, और विशेष रूप से मुझे अंतिम भविष्य की जरूरतों के लिए समाधान की एक विचार देने के लिए । बहुत अच्छा। – nIcO

+0

@ एनआईसीओ: आपका स्वागत है! मैंने पुशलॉग के बारे में कुछ जोड़ा है - यह विपरीत अवधारणा है। उम्मीद है कि भविष्य में दूसरों के लिए उपयोगी होगा। –

1

आप लॉग इन करने जब और जो संशोधन एचजी अद्यतन के साथ कोड को अद्यतन करने के लिए उपयोग किया गया तो इन हुक का उपयोग करना चाहते हैं:

[hooks] 
pre-update = (echo "---------------------------------"; date --rfc-3339=s; hg root; echo "pre-update:"; hg identify --id --branch) >> .hgupdates 
post-update = (echo "post-update:"; hg identify --id --branch) >> .hgupdates 

ऊपर हुक उत्पादन हर बार एचजी अद्यतन के लिए इस तरह की एक लॉग प्रविष्टि है चलाएँ:

2015-12-23 00:44:31+02:00 
/var/www/my/project 
pre-update: 
802120d1d3a0 somebranch 
post-update: 
302720d1d3d2 otherbranch 

यह भी जब एचजी अद्यतन एक विशिष्ट संशोधन ध्वज (-r) सेट अपने जवाब के लिए