मर्क्यूरियल अटक गया "लॉक का इंतजार"


346

एक व्यापारिक भंडार का क्लोन करते हुए खिड़कियों में एक ब्लूस्क्रीन मिला।

रिबूट के बाद, मुझे अब लगभग सभी hg कमांड के लिए यह संदेश मिला:

c: \ src \> hg कमिट
रिपॉजिटरी c: \ src \ McVrsServer पर '\ x00 \ x00 \ x00 \ x00 \ x00 \ _ द्वारा लॉक का इंतज़ार
x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 '
बाधित!

Google कोई मदद नहीं है।

कोई सुझाव?


3
वाह, मुझे भी कमिटमेंट करते समय ब्लूस्क्रीन मिला था और वही त्रुटि मिली। खुशी है कि मैं अकेला नहीं हूँ!
CBarr

जवाबों:


489

जब "रिपॉजिटरी पर लॉक का इंतजार", रिपॉजिटरी फ़ाइल को हटा दें: .hg/wlock(या इसमें हो सकता है .hg/store/lock)

लॉक फ़ाइल को हटाते समय, आपको यह सुनिश्चित करना चाहिए कि रिपॉजिटरी तक कुछ और नहीं पहुंच रहा है। (यदि लॉक शून्य या रिक्त का एक स्ट्रिंग है, तो यह लगभग निश्चित रूप से सच है)।


103
मेरी समस्या का क्लोनिंग या बीएसओडी से कोई लेना-देना नहीं था, लेकिन मेरे लिए, मैंने लॉक साफ़ करने के लिए .hg / wlock फ़ाइल को हटा दिया।
फ्रैंक हैडर

32
hg recoverटूटी हुई लॉकिंग स्थिति के बाद चलाया जाना चाहिए।
जेम्स ब्रॉडहेड

9
बहुत धन्यवाद - हटाने के बाद .hg / wlock मुझे पता नहीं था कि मुद्दा क्या था
एंड्रयू

34
मेरे मामले में (Mercurial 2.7.2 के साथ TortoiseHg V2.9.2), फ़ाइल का नाम "लॉक" के बजाय "प्लॉक" था; और इसे ".hg" स्टोर में नहीं, ".hg" निर्देशिका में रखा गया था।
फर्नांडो

7
@ मार्मोटे - जब भी कोई बदलाव होने वाला है तो रिपॉजिटरी लॉक हो जाती है। अगर कुछ कारण से यह प्रक्रिया विफल हो जाती है - यानी, मर्क्यूरियल में एक बग, नीचे जाने वाली मशीन, आदि - लॉक फाइलें बनी रहती हैं, सफाई नहीं। मेरा मानना ​​है कि लॉक फ़ाइलों को हटाने के लिए यहां दिए गए सुझाव मैन्युअल रूप से उन मामलों को दूर करने के लिए हैं जहां रिपॉजिटरी को "अशुद्ध" स्थिति में छोड़ दिया गया था। इसे "आँख बंद करके व्यापारिक सुरक्षा को दूर करना" उचित नहीं है और न ही इन मामलों में जो चल रहा है उसका सटीक लक्षण वर्णन है।
जोगुस्टो

345

जब waiting for lock on working directory, हटाएं .hg/wlock


6
यह मेरे लिए मामला था। यह 'निक्स टू करंट' था server:pid। बहुत बहुत धन्यवाद। तब मुझे $ hg recoverमौजूदा पत्रिका (और प्रतिबद्ध संदेश) को समाप्त करने के लिए दौड़ना पड़ा, जिसे मैंने ctrl+cएड किया था। निश्चित नहीं है, लेकिन आप $ hg recoverलॉकफ़ाइल को हटाने के बिना चलाने में सक्षम हो सकते हैं और यह आपके लिए कर देगा। मुझे लगता है कि एक शॉट लायक।
शोल्सिंगर

2
सिर्फ @sholsinger के लिए एक नोट यह कहना है कि जब तक आप पहले लॉक को नहीं हटाते हैं, तब तक hg पुनर्प्राप्त करना काम नहीं करता है। मैं इसे करने की कोशिश की।
दान

1
रिपॉजिटरी एक कारण से लॉक हो जाती है, रेपो पर एक और प्रक्रिया काम कर रही है। आपको उस प्रक्रिया को ढूंढना चाहिए और आँख बंद करके मर्क्यूरियल प्रोटेक्शन को हटाने के बजाय इसे समाप्त करना चाहिए। बस फ़ाइल को छोड़ने से रिपॉजिटरी भ्रष्टाचार हो सकता है।
मर्मूटे

@ मार्मोटे मेरे मामले में मुझे ताला हटाना पड़ा, क्योंकि रेपो पर कोई अन्य प्रक्रिया काम नहीं कर रही थी। लेकिन मैं सहमत हूं, यह पहली प्रक्रिया के लिए देखने लायक है
Mi-La

मुझे यह संदेश अचानक मिला जब खींचने की कोशिश कर रहा था, खींचने और कुछ दिनों तक बिना किसी समस्या के साथ धक्का देने के बाद। फ़ाइल को हटाने के बाद समस्या हल हो गई थी। फ़ाइल 0 केबी की थी जिसका मतलब है कि यह खाली था। क्या केवल फ़ाइल को हटाना ठीक है? मुझे लगता है कि यह सुरक्षा के लिए उपयोगी है।
बेन कार्प

47

मुझे पता लगाने वाली लॉक फ़ाइलों के साथ यह समस्या थी। मुझे यहाँ समाधान मिला: http://schooner.uwaterloo.ca/twiki/bin/view/MAG/HgLockError

यहाँ कछुआ Hg कार्यक्षेत्र कंसोल से एक प्रतिलेख है

% hg debuglocks
lock:  user None, process 7168, host HPv32 (114213199s)
wlock: free
[command returned code 1 Sat Jan 07 18:00:18 2017]
% hg debuglocks --force-lock
[command completed successfully Sat Jan 07 18:03:15 2017]
cmdserver: Process crashed
PaniniDev% hg debuglocks
% hg debuglocks
lock:  free
wlock: free
[command completed successfully Sat Jan 07 18:03:30 2017]

इसके बाद गर्भपात खींचने के बाद तेजी से भाग गया।

2 साल पहले एक मशीन पर एक प्रक्रिया द्वारा लॉक को सेट किया गया था, जो अब लैन पर नहीं है। एचजी डेवलपर्स के लिए शर्म की बात है) पर्याप्त रूप से ताले का दस्तावेजीकरण नहीं; बी) जब वे बासी हो जाते हैं तो उन्हें स्वचालित रूप से हटाने के लिए टाइमस्टैम्पिंग नहीं।


23
प्रोटिप: यदि wlockकोई बंद है, तो उपयोग करेंhg debuglocks --force-wlock
ब्रैड ट्यूरेक

5
मैंने 7+ वर्षों के लिए कछुआ hg का उपयोग किया है। मैंने लगभग 3 महीने पहले तक कभी समस्या नहीं देखी थी। मैंने इसे पिछले 3 महीनों में 3 बार देखा है। कुछ अपडेट में समस्या बढ़ गई होगी।
d ei

20

धक्का देने की कोशिश करते हुए बीएसओडी के बाद आज सहकर्मी के पास यह सटीक समस्या थी। उसको करना पड़ा:

फिर उनके रेपो ने फिर से काम किया।

संपादित करें: @ मर्मूटे की टिप्पणी के अनुसार - जब लॉक-संबंधित मुद्दों से निपटना हो, hg debuglockतो .hg/store/lockफ़ाइल का आँख बंद करके उपयोग करना एक सुरक्षित विकल्प है ।


2
1) पूरी तरह से कोई कारण नहीं है कि आपको फेजरूट्स फाइल को छूना चाहिए, यह लॉकिंग के लिए पूरी तरह से असंबंधित है। 2) झुंड को हटाने के लिए अंधा करना एक बुरा विचार है, इसका उपयोग करने की एक और प्रक्रिया होने की संभावना है। एचजी डीबग्लॉक का उपयोग यह पता लगाने के लिए करें कि यह क्या हो रहा है और लॉक को पकड़े हुए प्रक्रिया को समाप्त करें
मर्मूटे

3
1) यह देखते हुए कि इसे हटाने से समस्या ठीक हो गई, मुझे असहमत होना पड़ेगा। 2) उस समय hg डीबग्लॉक के बारे में नहीं पता था (या तो उस पर कोई दस्तावेज नहीं मिल सकता है), और चूंकि सिस्टम सिर्फ एक रिबूट से आया था, इसलिए स्पष्ट रूप से रिपॉजिटरी को लॉक करने के लिए कुछ भी नहीं था - इसलिए लॉक फाइल को हटाना उचित था।
इयान केम्प

12

मैं मर्क्यूरियल के लॉकिंग कोड (1.9.1 के रूप में) से बहुत परिचित हूं। उपरोक्त सलाह अच्छी है, लेकिन मैं यह जोड़ना चाहूंगा:

  1. मैंने इसे जंगल में देखा है, लेकिन शायद ही कभी, और केवल विंडोज मशीनों पर।
  2. लॉक फाइल्स को डिलीट करना सबसे आसान फिक्स है, लेकिन आपको यह सुनिश्चित करना होगा कि रिपॉजिटरी तक कुछ भी नहीं पहुंच रहा है। (यदि लॉक शून्य का एक स्ट्रिंग है, तो यह लगभग निश्चित रूप से सच है)।

(जिज्ञासु के लिए: मैं अभी तक इस समस्या के कारण को पकड़ने में सक्षम नहीं हुआ हूं, लेकिन संदेह है कि यह या तो मर्क्यूरियल के पुराने संस्करण को रिपॉजिटरी तक पहुंचाने वाला है या पायथन के सॉकेट.गेटहोस्टनेम () में विंडोज के कुछ संस्करणों पर कॉल करने का है।)


2
FWIW यह सिर्फ Ubuntu पर मेरे साथ हुआ। यह कई हफ्तों में रिपॉजिटरी का उपयोग करने का मेरा पहला मौका था, इसलिए मुझे याद नहीं है कि उस राज्य में क्या हो सकता था।
Cosmologicon

7

मुझे Win 7 पर एक ही समस्या थी। इसका समाधान निम्नलिखित फाइलों को हटाना था:

  1. .hg / स्टोर / phaseroots
  2. .hg / wlock

के रूप में .hg / store / lock के लिए - ऐसी कोई फ़ाइल नहीं थी।


Stackoverflow में आपका स्वागत है। पोस्ट में अधिक सामग्री जोड़ने की कोशिश करें
NJInamdar

5
1) पूरी तरह से कोई कारण नहीं है कि आपको फेजरूट्स फाइल को छूना चाहिए, यह लॉकिंग के लिए पूरी तरह से असंबंधित है। 2) झुंड को हटाने के लिए अंधा करना एक बुरा विचार है, इसका उपयोग करने की एक और प्रक्रिया होने की संभावना है। hg debuglockयह पता लगाने के लिए उपयोग करें कि यह क्या हो रहा है और ताला पकड़े हुए प्रक्रिया को समाप्त करें।
मर्मूटे

6

मुझे उम्मीद नहीं है कि यह एक विजयी जवाब होगा, लेकिन यह काफी असामान्य स्थिति है। मेरे अलावा किसी और के मामले में उल्लेख करना।

आज मुझे एक hg पुश कमांड पर "रिपॉजिटरी पर लॉक का इंतजार" मिला।

जब मैंने त्रिशंकु hg कमांड को मार दिया तो मैं no .hg / store / lock देख सकता था

जब मैंने कमांड को लटकाते समय .hg / store / lock की तलाश की, तो यह अस्तित्व में था। लेकिन hg कमांड के मारे जाने पर लॉकफाइल को हटा दिया गया था।

जब मैं पुश के लक्ष्य पर गया, और hg पुल निष्पादित किया, तो कोई समस्या नहीं।

आखिरकार मुझे एहसास हुआ कि hg पुश पर प्रोसेस आईडी लॉक वेटिंग मैसेज था जो हर बार बदल रहा था। यह पता चला है कि "एचजी पुश" अपने आप से बंद एक ताला के लिए इंतजार कर रहा था (या संभवतः एक उपप्रकार, मुझे आगे नहीं जाना था)।

यह पता चला है कि दो कार्यस्थान, चलो उन्हें ए और बी कहते हैं, सिंघल द्वारा साझा किए गए .hg पेड़:

A/.hg --symlinked-to--> B/.hg

मर्क्यूरियल के साथ यह करना अच्छी बात नहीं है। मर्क्यूरियल एक ही रिपॉजिटरी को साझा करने वाले दो कार्यक्षेत्रों की अवधारणा को नहीं समझता है। मुझे समझ में आता है, हालांकि, किसी अन्य वीसीएस से मर्क्यूरियल में आने वाले व्यक्ति यह कैसे चाहते हैं (पेरफोर्स करता है, हालांकि डीवीसीएस नहीं; बाजार डीवीसीएस कथित तौर पर ऐसा कर सकता है)। मुझे आश्चर्य है कि एक सिम्प्लाइड REP-ROOT / .hg बिल्कुल काम करता है, हालाँकि इस पुश को छोड़कर ऐसा लगता है।


में ट्रैक नहीं करता है dirstate .hg/? जब आप कहते हैं कि रिपॉजिटरी "काम" करता है, तो hg upएक में चलने से एक दूसरे में सिंक से बाहर नहीं निकलता है या क्या मर्क्यूरियल इसे सपोर्ट करने के लिए कुछ खास करता है?
बिंकी

1
आप एकल रिपॉजिटरी से कई वर्किंग डायरेक्टरी रखने के लिए शेयर एक्सटेंशन (कोर मर्क्यूरियल के साथ शिप) का उपयोग कर सकते हैं।
मर्मूटे

4

मुझे भी यही समस्या थी। जब मैंने कमिट करने की कोशिश की तो निम्न संदेश मिला:

waiting for lock on working directory of <MyProject> held by '...'

hg debuglock यह दिखाया:

lock:  free
wlock:  (66722s)

इसलिए मैंने निम्नलिखित कमांड किया, और इसने मेरे लिए समस्या तय की:

hg debuglocks -W

Win7 और TortoiseHg 4.8.7 का उपयोग करना।


2

यदि लॉक किया गया रेपो मूल था, तो मैं कल्पना नहीं कर सकता कि इसे क्लोन करने के लिए इसे संशोधित कर रहा था , इसलिए यह केवल आपको इसे बीच में बदलने और क्लोन को गड़बड़ करने से रोक रहा था। ताला हटाने के बाद यह ठीक होना चाहिए।

नई क्लोन प्रति (यदि यह एक स्थानीय क्लोन है) किसी भी प्रकार की विकृत स्थिति में हो सकती है, हालांकि, आपको इसे फेंक देना चाहिए और इसे शुरू करना चाहिए। (यदि यह एक दूरस्थ क्लोन था, तो मुझे उम्मीद है कि यह विफल हो जाएगा और पहले से ही अपूर्ण प्रतिलिपि को बाहर निकाल दिया।)


2

जब मैं पुश करने की कोशिश कर रहा था तो मुझे मैक ओएस एक्स 10.7.5 और मर्क्यूरियल 2.6.2 पर इस समस्या का सामना करना पड़ा। मर्क्यूरियल 3.2.1 में अपग्रेड करने के बाद, मुझे "रिपॉजिटरी पर लॉक का इंतजार करने" के बजाय "कोई परिवर्तन नहीं मिला" मिला। मुझे पता चला कि किसी तरह डिफ़ॉल्ट मार्ग ने उसी रिपॉजिटरी को इंगित करने के लिए सेट किया था, इसलिए यह बहुत आश्चर्य की बात नहीं है कि मर्क्यूरियल भ्रमित हो जाएगा।


1
मुझे पता चला कि किसी तरह डिफ़ॉल्ट मार्ग ने उसी रिपॉजिटरी को इंगित करने के लिए सेट किया था । इस। धन्यवाद, आप - मैं समस्या से छुटकारा पाने के लिए छोरों के माध्यम से गया pathथा और सेटिंग एक अपराधी थी।
WoJ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.