2010-03-30 21 views
11

को कैसे ठीक करते हैं मैं ओएस एक्स तेंदुए पर एसवीएन 1.4 का उपयोग करता था और सबकुछ ठीक था। कुछ हफ्ते पहले मैंने ओएस एक्स 10.6 की ताजा प्रति स्थापित की थी। हिम तेंदुए के साथ आता है जो एसवीएन का संस्करण 1.6.5 है। मैं आगे बढ़ गया और अपनी खुद की प्रति 1.6.6 के साथ बनाया। मैं निर्मित अपाचे सर्वर का उपयोग कर रहा हूं और स्थानीय स्तर पर रिपोजिटरी होस्ट कर रहा हूं।आप एक एसवीएन 40 9 संघर्ष त्रुटि

सब कुछ ठीक काम करने के लिए दिखाई दिया जब तक कि मैंने वास्तव में कुछ करने की कोशिश नहीं की। हर मैं एक परिवर्तन के लिए प्रतिबद्ध करने की कोशिश, मैं निम्न संदेश मिलता है:

Transmitting file data .svn: Commit failed (details follow): 
svn: MERGE of '/svn/svn2': 409 Conflict (http://localhost) 

यह मेरे पुराने खजाने के साथ होता है, तो मैं नए लोगों की एक जोड़ी बनाई। वही सौदा मैंने 1.6.5 संस्करण का उपयोग करने का भी प्रयास किया जो सिस्टम के साथ आता है ... वही। अंत में, मैंने नवीनतम स्थिर एसवीएन (1.6.9) को अपग्रेड करने का प्रयास किया और अभी भी वही समस्या मिली है।

अपाचे त्रुटि लॉग प्रत्येक के लिए निम्नलिखित प्रतिबद्ध विफल रहा:

[Mon Mar 29 19:53:10 2010] [error] [client ::1] Could not MERGE resource "/svn/svn2/!svn/act/d399326f-c20f-424f-bb68-3bb40503b5b1" into "/svn/svn2". [409, #0] 
[Mon Mar 29 19:53:10 2010] [error] [client ::1] An error occurred while committing the transaction. [409, #2] 
[Mon Mar 29 19:53:10 2010] [error] [client ::1] Can't open directory '/usr/local/svn/svn2/db/transactions/5-6.txn/\xeb\xa9\x0f\x1f': No such file or directory [409, #2] 
[Mon Mar 29 19:53:11 2010] [error] [client ::1] Could not DELETE /svn/svn2/!svn/act/d399326f-c20f-424f-bb68-3bb40503b5b1. [500, #0] 
[Mon Mar 29 19:53:11 2010] [error] [client ::1] could not open transaction. [500, #2] 
[Mon Mar 29 19:53:11 2010] [error] [client ::1] Can't open file '/usr/local/svn/svn2/db/transactions/5-6.txn/props': No such file or directory [500, #2] 

और पहुँच लॉग से:

::1 - - [30/Mar/2010:13:02:20 -0400] "OPTIONS /svn/svn2 HTTP/1.1" 401 401 
::1 - user [30/Mar/2010:13:02:20 -0400] "OPTIONS /svn/svn2 HTTP/1.1" 200 188 
::1 - user [30/Mar/2010:13:02:20 -0400] "PROPFIND /svn/svn2 HTTP/1.1" 207 647 
::1 - user [30/Mar/2010:13:02:20 -0400] "PROPFIND /svn/svn2 HTTP/1.1" 207 647 
::1 - user [30/Mar/2010:13:02:20 -0400] "PROPFIND /svn/svn2/!svn/vcc/default HTTP/1.1" 207 398 
::1 - user [30/Mar/2010:13:02:20 -0400] "PROPFIND /svn/svn2/!svn/bln/6 HTTP/1.1" 207 449 
::1 - user [30/Mar/2010:13:02:20 -0400] "REPORT /svn/svn2/!svn/vcc/default HTTP/1.1" 200 1172 

मजे की बात है, का वादा वास्तव में परिवर्तन हो रहा है, लेकिन काम के प्रति नहीं करता है यह नहीं देखता है और सबकुछ खराब हो जाता है।

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

किसी भी मदद की सराहना की जाएगी।

अद्यतन
मैं अपने svn.conf फाइल करने के लिए autoversioning जोड़ने की कोशिश की है। यहाँ मेरी फ़ाइलों का कहना है:

LoadModule dav_svn_module /usr/libexec/apache2/mod_dav_svn.so 
<Location /svn> 
    DAV svn 
    SVNParentPath /usr/local/svn 
    SVNAutoversioning on 

    # how to authenticate a user 
    AuthType Basic 
    AuthName "Subversion repository" 
    AuthUserFile /usr/local/etc/svn-auth-file 

    # only authenticated users may access the repository 
    Require valid-user 
</Location>  

अद्यतन (समाधान)

मैं सिर्फ मामले किसी और पूरी तरह से बेकार त्रुटि संदेश के साथ एक ही समस्या हो रही है में वास्तविक समाधान के साथ इस अद्यतन करने के लिए चाहता था। समस्या एपीआर और एपीआर-यूज पार्ट्स के साथ थी (जैसा शेरेंड सुझाया गया था)। मैं subversion निर्भरता पैकेज का उपयोग कर दोनों की एक प्रति बना रहा था। ओएस एक्स 10.6 में इसका अपना संस्करण भी है। दोनों संस्करण 1.3.8 थे। जाहिर है, हालांकि, मुझे उन संस्करणों का उपयोग करने की आवश्यकता है जो डिफ़ॉल्ट अपाचे इंस्टॉल का उपयोग कर रहे थे।

इसलिए, मैंने यह सुनिश्चित करने के लिए कि मैं इन की अपनी प्रतिलिपि नहीं बना रहा था, मैंने अपने सबवर्जन बिल्ड से एपीआर और एपीआर-यूज फ़ोल्डर्स को हटा दिया। मैं स्रोत से फिर से निम्नलिखित विन्यास का उपयोग कर svn निर्मित, यह समय:

./configure --with-apr=/usr/bin/ --with-apr-util=/usr/bin/ --with-ssl 

फिर से निर्माण के बाद, मैं अपाचे को पुनः आरंभ, और एक नया SVN रेपो बनाया। मैं इसे जांचने, परिवर्तन करने और किसी भी मुद्दे के बिना प्रतिबद्ध करने में सक्षम था। मैंने फिर अपने पुराने रिपोज़ की कोशिश की और उन लोगों ने भी काम किया।

मदद के लिए सभी को धन्यवाद!

उत्तर

2

मैं बहुत पतली बर्फ यहाँ (409 बहुत विशिष्ट नहीं किया जा रहा) पर हूँ, लेकिन मैं दो प्रश्न तैयार करने के लिए कर रहा हूँ:

  1. वहाँ रहे हैं किसी भी पूर्व या जगह में बाद के लिए प्रतिबद्ध हुक?
  2. "Autoversioning" सक्षम है?

यदि कोई हुक हैं, तो क्या आप सुनिश्चित हैं कि उनमें कोई त्रुटि नहीं है? क्या आप उन्हें परीक्षण के लिए अक्षम कर सकते हैं? यदि ऑटोवर्जनिंग सक्षम नहीं है, तो क्या आप इसे परीक्षण के लिए सक्षम करने का प्रयास कर सकते हैं? यह जब mod_dav_svn का उपयोग कर

<Location /repos> 
    DAV svn 
    SVNPath /var/svn/repository 
    SVNAutoversioning on 
</Location> 

की तर्ज पर काम करना चाहिए (लिंक को देखने के ऊपर Autoversioning के लिए)।

शायद यह आपके मुद्दे पर कुछ प्रकाश डालने में मदद करेगा और हम (और/या Google :)) इसे वहां से ले जा सकते हैं।

बीटीडब्ल्यू: आपके द्वारा पोस्ट किए गए लॉग एक ही प्रतिबद्धता से नहीं हैं, है ना? समय अंतर बड़ा होगा?!

संपादित करें: क्षमा याचना करता है, तो आपको लगता है कि बहुत पहले मिली लेकिन मैं इसे एक शॉट दे देंगे: Could not MERGE resource on COMMIT (Apache 2.0.55) कुछ है कि गूगल मुझे :) के लिए मिला है

वहाँ ओपी लिखते हैं कि "अपाचे APR के संस्करण तय उपयोग करने के लिए"। इसका मतलब है कि एसवीएन संकलन करते समय आपको सही एपीआर-संस्करण का संदर्भ देना होगा। मैंने अपने सिस्टम (ओएस एक्स 10.6) पर MacPorts के माध्यम से एसवीएन (v1.6.9) स्थापित किया। मैं स्थानीय रूप से WebDAV या Apache का उपयोग नहीं करता लेकिन मेरे पास एपीआर 1.3.12_1 स्थापित है (केवल संदर्भ के लिए)। एसपीएन संकलित करते समय ओपी --with-apxs=/path/to/bin/apxs का उपयोग करने का सुझाव देता है हालांकि मुझे यकीन नहीं है कि यह आपकी स्थिति पर लागू होता है (मुझे बहुत पहले अनुमान लगाना शुरू हो गया था, आप शायद नोटिस कर सकते हैं :))।

कोई भी मौका आप एपीआर-संस्करण अपाचे की जांच कर सकते हैं बनाम एसवीएन बनाने के लिए इस्तेमाल किया जा सकता है (उदाहरण के लिए आप sudo port installed apr का उपयोग कर सकते हैं यह देखने के लिए कि क्या आप MacPorts का उपयोग कर रहे हैं तो आपके सिस्टम पर एपीआर-संस्करण क्या रहते हैं)?

बस संदर्भ के लिए Building Apache the Way You Want It से एक अंश:

apxs गतिशील configure स्क्रिप्ट का उपयोग करें या अपाचे स्रोत कोड उपलब्ध की आवश्यकता के बिना संकलन मॉड्यूल के लिए एक स्टैंड-अलोन उपयोगिता है। इसे अपाचे की शीर्षलेख फ़ाइलों की आवश्यकता है, हालांकि, को --includedir द्वारा परिभाषित स्थान पर अपाचे स्थापित होने पर प्रतिलिपि बनाई गई है। हालांकि, apxs का उपयोग करना महत्वपूर्ण है जो उसी कॉन्फ़िगरेशन विकल्पों के साथ बनाया गया था Apache; अन्यथा, यह अपाचे गलती करेगा कि अपाचे के विभिन्न स्थापना स्थान कहां हैं।

+0

जगह में हुक नहीं हैं (जब तक डिफ़ॉल्ट रूप से कुछ ऐसा न हो जो मुझे अनजान है)। और नहीं, ऐसा लगता है कि उन दो लॉग एक ही प्रतिबद्ध नहीं हैं। मेरे svn.conf में ऑटोवर्जनिंग बिट जोड़ना इस मुद्दे पर कोई प्रभाव नहीं प्रतीत होता है। आपकी सहायता के लिए धन्यवाद. मैं इस पर अपने wits अंत में हूँ। – NerdStarGamer

+0

मैंने एक और विचार जोड़ा कि मैंने विभिन्न Google परिणामों से एक साथ चिपकाया। यह मुझे किसी तरह का भाव देता है लेकिन स्वीकार्य रूप से यह बहुत अस्पष्ट है। – scherand

+0

अच्छा। मैं अंत में यह काम कर रहा है। जैसा कि आपने सुझाव दिया था वह एपीआर था। – NerdStarGamer

0

क्या आपने ओएसएक्स के लिए Versions एसवीएन क्लाइंट की कोशिश की है? यह वास्तव में आपकी समस्या का समाधान नहीं है लेकिन शायद एक विकल्प है। मुझे और मेरी टीम को एसवीएन और ओएसएक्स को एक दूसरे से बात करने के लिए कुछ समस्याएं थीं, इसलिए वैकल्पिक ग्राहकों की तलाश में गया और संस्करण हमारे लिए बहुत अच्छा काम करते थे।

+0

मैं कोशिश की थी कि कुछ समय पहले। मैं इसके बारे में बहुत पागल नहीं था। यहां समस्या यह है कि मेरे पास एसवीएन 1.4 के साथ 10.5 पर पूरी तरह से काम कर रहा था। अब, कुछ भी काम नहीं कर रहा है। – NerdStarGamer

+0

मैं समझता हूं। क्षमा करें मैं और अधिक मदद नहीं कर सकता। –

1

मेरे पास दो विचार हैं जहां समस्या छिपी जा सकती है, जो निश्चित रूप से जंगली अनुमान हैं, इसलिए चेतावनी दी जानी चाहिए।

एक ओर यह केवल एक फ़ाइल अनुमति समस्या हो सकती है।मुझे पता है, यह मूर्खतापूर्ण लगता है, लेकिन शायद कुछ कॉन्फ़िगरेशन फ़ाइल है, या स्केरैंड सुझाए गए हुक के रूप में एक हुक, या रिपोजिटरी स्ट्रक्चर के भीतर कुछ फ़ोल्डर भी जो 10.6 के अपडेट द्वारा या नए svn संस्करण को बनाते समय अपठनीय छोड़ दिया गया था, इसलिए मैं दो बार जांचें।

दूसरा विचार svn काम करने वाली प्रति-क्लाइंट-सर्वर-रिपोजिटरी संस्करणों की संगतता की जांच करना है। उपversण के लोग कसम खाता है कि 1.5 और 1.6 दोनों के साथ भंडार स्तर पर संगतता को तोड़ना नहीं है (हालांकि वे काम करने वाली प्रतियों पर ऐसा करते हैं)। लेकिन यह जांचने में कोई दिक्कत नहीं होगी कि पूरे ढेर का प्रारूप सुसंगत है। और जब आप इसमें हों, तो सुनिश्चित करें कि आपके द्वारा बनाए गए अपाचे लाइब्रेरी अपाचे 2.2.11 के साथ संगत हैं जो 10.6 के साथ आता है (फिर, उन्हें चाहिए, लेकिन आप कभी नहीं जानते)

और अंत में, शुभकामनाएँ।

+0

उनमें से नीदर मूर्खतापूर्ण सुझाव हैं। मैंने अपने सभी भंडारों पर 'chown -R www: www/usr/svn /' का उपयोग किया है। मैंने यह देखने के लिए कि क्या इसका कोई असर होगा, 777 को अनुमतियों को खोलने का भी प्रयास किया। ऐसा नहीं हुआ क्या कुछ अन्य अनुमतियां हैं कि मैं यहां याद कर रहा हूं? पहले मुझे लगता है कि समस्या मेरी पुरानी भंडारों के साथ थी, इसलिए मैंने उन्हें अपडेट करने का प्रयास किया, जो कुछ भी नहीं कर रहा था। मैंने इस बिंदु पर भी परीक्षण के लिए कई ब्रांड नए रिपो बनाया है। उन लोगों के साथ भी वही त्रुटि। – NerdStarGamer

+0

मुझे svn 1.6.9 और डिफ़ॉल्ट अपाचे 2.2.11 के साथ कोई समस्या नहीं दिखाई दे रही है। शायद मुझे कुछ याद आ रहा है? जब मैंने उपversण की अपनी प्रति बनाई, तो मैंने इसे कॉन्फ़िगर करते समय किसी भी विकल्प का उपयोग नहीं किया। क्या यह समस्या का हिस्सा हो सकता है? – NerdStarGamer

1

पहले आधारभूत आधार स्थापित करें। हिम तेंदुए (10.6.3) के स्टॉक इंस्टॉलेशन पर मैंने वही किया जो मैंने किया था।

"/etc/apache2/other/svn.conf" सामग्री के साथ निर्मित:

LoadModule dav_svn_module /usr/libexec/apache2/mod_dav_svn.so 
<Location /svn> 
    DAV svn 
    SVNParentPath /usr/local/svn 
    AuthType Basic 
    AuthName "Subversion repository" 
    AuthUserFile /usr/local/svn/htpasswd 
    Require valid-user 
</Location> 

बनाया तोड़फोड़ फ़ोल्डर और भंडार "परीक्षण":

sudo mkdir /usr/local/svn 
sudo svnadmin create /usr/local/svn/test 
sudo chown -R _www:_www /usr/local/svn 
sudo htpasswd -cb /usr/local/svn/htpasswd testuser testpass 

सामान्य उपयोगकर्ता से, होम निर्देशिका:

macmini:~ jclark$ mkdir Checkout && cd Checkout 
macmini:Checkout jclark$ svn --username testuser checkout http://localhost/svn/test 
Authentication realm: <http://localhost:80> Subversion repository 
Password for 'testuser': 
Checked out revision 0. 
macmini:Checkout jclark$ cd test && touch test.txt && svn add test.txt && svn commit -m 'test' test.txt 
A   test.txt 
Adding   test.txt 
Transmitting file data . 
Commited revision 1. 
macmini:test jclark$ 

अब, यदि यह सब काम करता है, तो आपके पास एक काम करने वाला स्टॉक 1.6.5 सबवर्जन रिपोजिटो है अपाचे द्वारा सेवा आरई। यदि ऐसा नहीं होता है, तो आप सबसे अधिक संभावना है कि या तो सेब आपूर्ति किए गए एसवीएन बाइनरी/libs अपने स्वयं के (मैक्सपोर्ट, आदि) या के साथ अनुमति समस्याएं हैं। सुनिश्चित करें आप एप्पल प्रदान की गई बाइनरी का उपयोग कर रहे हैं। ऐप्पल थोड़ा सा स्रोत संशोधित करता है और अतीत में 'स्टॉक' के साथ 'बंदरगाहों' को मिलाते समय मैंने संगतता के मुद्दों में भाग लिया है। अनुमतियों के लिए, अपाचे उपयोगकर्ता _www, group _www के रूप में चलता है। सुनिश्चित करें कि सभी फाइलें और निर्देशिकाएं इस तरह के स्वामित्व में हैं, और जब भी आप svnadmin का उपयोग करते हैं या किसी अन्य चीज को सीधे svn भंडार में हेरफेर करने के लिए उन्हें अपडेट करना न भूलें।

चूंकि यह काम कर रहा है, तो अपने 'svn2' भंडार को वापस/usr/local/svn (यदि आपने पहले से नहीं किया है) में स्थानांतरित करें, कहीं भी एक साफ़ चेकआउट करें, और परीक्षण प्रतिबद्ध प्रयास करें।

यदि आप अभी भी समस्याओं में चल रहे हैं, तो भंडार को अपग्रेड करने का प्रयास करें।

sudo svnadmin upgrade /usr/local/svn/svn2 
sudo chown -R _www:_www /usr/local/svn/svn2 

चेकआउट/प्रतिबद्ध परीक्षण दोहराएं।

अंतिम उपाय के रूप में, डंप करें और फिर से भंडार लोड करें।

sudo svnadmin dump /usr/local/svn/svn2 > /tmp/svn2.dump 
sudo svnadmin create /usr/local/svn/svn3 
sudo svnadmin load /usr/local/svn/svn3 < /tmp/svn2.dump 
sudo chown -R _www:_www /usr/local/svn/svn3 

दोहराएँ चेकआउट/परीक्षण के लिए प्रतिबद्ध,/SVN/svn3 साथ इस बार।

अपने निश्चित भंडार का आनंद लें ... उम्मीद है कि :)

अद्यतन

तोड़फोड़ कमांड लाइन क्लाइंट में एक बग हो सकता है।करने के बाद:

mkdir \!vcc && touch \!vcc/default 
svn add \!vcc && svn commit -m 'test' 
svn log 

एसवीएन लॉग (कम से कम मेरे लिए) के आउटपुट पर ध्यान दें कुछ भी नहीं है। कछुआ से एसवीएन लॉग ठीक है, जो सर्वर को इंगित करता है (ऊपर सेटअप के रूप में) सही ढंग से काम कर रहा है।

कोशिश करने की एक और चीज 'http' के बजाय 'फ़ाइल' के माध्यम से भंडार तक पहुंच रही है। संपूर्ण भंडार को अपनी होम निर्देशिका में कॉपी करें या कहीं भी आपका उपयोगकर्ता स्वामी है, फिर इसे जांचें (यानी svn चेकआउट/उपयोगकर्ता/साझा/svn/svn2) और प्रतिबद्ध करने का प्रयास करें।

+0

यह सुझाव देने के लिए धन्यवाद। मैं यह पता लगाने के लिए कि मैं गलत कहां गया था, परीक्षण शुरू करने के लिए बर्फ तेंदुए के साथ एक नया कंप्यूटर स्थापित कर रहा था। लेकिन अब मैंने समाधान निकाला है और शुक्र है कि इस मार्ग को नीचे जाने की जरूरत नहीं है। – NerdStarGamer

0

यह मेरे लिए संघर्ष का हल: मैं अपने स्थानीय फ़ाइलों का एक बैकअप बनाया, फिर सर्वर से सब कुछ खींच लिया। फिर, जब मैंने अपनी बैकअप फ़ाइलों को डाला और धक्का दिया, तो 40 9 संघर्ष त्रुटि फिर से प्रकट नहीं हुई।

सादर, केविन

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