SVN रिपॉजिटरी URL बदलें


116

मेरी वर्तमान SVN संरचना:

Path: .
URL: svn://someaddress.com.tr/project
Repository Root: svn://someaddress.com.tr
Repository UUID: -------------------------------------
Revision: 10297
Node Kind: directory
Schedule: normal
Last Changed Author: ----
Last Changed Rev: 9812
Last Changed Date: 2010-12-20 17:38:48 +0100 (Mon, 20 Dec 2010)

लेकिन हमारी परियोजना (इसलिए SVN सेवा) sub.someaddress.com.trइसके बजाय काम करेगी someaddress.com.tr(someaddress.com.tr को जल्द ही कहीं पर पुनर्निर्देशित किया जाएगा)।

चूंकि यह विकास सर्वर है, मुझे यकीन नहीं है कि क्या करना है। क्या मुझे उपयोग करने की आवश्यकता होगी svn switchया svn switch --relocate? इसके अलावा, क्या मुझे svn root someaddress.com.tr या प्रोजेक्ट ब्रांच someaddress.com.tr/project को स्विच करना होगा ?

जवाबों:


208

यह देखते हुए कि Apache Subversion सर्वर को इस नए DNS उपनाम में ले जाया जाएगा sub.someaddress.com.tr:

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

    svn relocate svn://sub.someaddress.com.tr/project

  • का उपयोग करते रहें /projectयह देखते हुए कि अपने भंडार के वास्तविक सामग्री शायद नहीं बदलेगा।

नोट: svn relocateसंस्करण 1.7 से पहले उपलब्ध नहीं है (जानकारी के लिए कॉलिनम के लिए धन्यवाद)। पुराने संस्करणों में आप उपयोग करेंगे:

    svn switch --relocate OLD NEW

36
svn रिलोकेट उपलब्ध नहीं है पूर्व 1.7। पूर्व 1.7 के लिए आप उपयोग करेंगेsvn switch --relocate OLD NEW
ColinM

अतिरिक्त TortoiseSVN लिंक बहुत मददगार हैं, इसके लिए धन्यवाद
MOnsDaR

switchकमांड के बारे में नहीं पता था कि मैंने जो ऑनलाइन दस्तावेज़ पाया था वह नए संस्करणों के लिए है।
डस्टिन कुक

यह तब काम आता है जब मुझे + ssh URL से गैर-SSH या इसके विपरीत तक स्थानांतरित करने की आवश्यकता होती है, उदाहरण के लिए: svn switch --relocate svn + ssh: // _ svn_server _ / _ svn_project / / _ svn_branch_ svn: // _ svn_server _ / _ svn_prover_project_project_project_project_ अंतिम विशेष रूप से सहायक है अगर आप जेनकींस एपीआई और उनमें से कुछ (विंडोज नोड्स) का उपयोग करते हुए कई नोड्स पर svn + ssh के रूप में स्वचालित चेकआउट करते हैं, तो SSH नहीं है, लेकिन आपको निर्माण मशीन और "svn अपडेट" को मैन्युअल रूप से लॉगिन करने की आवश्यकता है कुछ जल्दी ठीक करें।
अलेक्जेंडर समोयलोव

11

इससे पहले और बाद में आपको URL देने से मानसिक शांति मिल सकती है:

svn info | grep URL

  URL: svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
  Relative URL: (...doesn't matter...)

और यह सुनिश्चित करने के लिए अपने संस्करण की जाँच कर रहे हैं (1.7 करने के लिए>) svn relocateका उपयोग करने के लिए सही बात है:

svn --version

अंत में, उपरोक्त जोड़ते हुए, यदि आपके रिपॉजिटरी url परिवर्तन में प्रोटोकॉल का परिवर्तन भी शामिल है, तो आपको url से पहले और बाद में भी (यहां देखें )

svn relocate svn://svnrepo.rz.mycompany.org/repos/trunk/DataPortal
    https://svngate.mycompany.org/svn/repos/trunk/DataPortal

पाठ्यक्रम की सभी एक पंक्ति में। इसके बाद, अच्छी भावना प्राप्त करें, कि सभी सुचारू रूप से चले:

svn info | grep URL:

यदि आपको ऐसा लगता है, तो आत्म-आश्वासन का थोड़ा और, नया svn रेपो URL जुड़ा हुआ है और काम कर रहा है:

svn status --show-updates
svn diff

5

मेरे मामले में, svn relocateकमांड (साथ ही svn switch --relocate) किसी कारण से विफल हो गया (शायद रेपो सही ढंग से नहीं ले जाया गया था, या कुछ और)। मुझे इस त्रुटि का सामना करना पड़ा:

$ svn relocate NEW_SERVER
svn: E195009: The repository at 'NEW_SERVER' has uuid 'e7500204-160a-403c-b4b6-6bc4f25883ea', but the WC has '3a8c444c-5998-40fb-8cb3-409b74712e46'

मैं पूरी रिपॉजिटरी को रिड्यूस नहीं करना चाहता था, इसलिए मुझे वर्कअराउंड मिला। यह मेरे मामले में काम करता है, लेकिन आम तौर पर मैं कल्पना कर सकता हूं कि बहुत सी चीजें टूट सकती हैं (इसलिए या तो आपकी काम करने वाली कॉपी का बैकअप लें, या कुछ गलत होने पर पूरे रेपो की दोबारा जांच के लिए तैयार रहें)।

रेपो पता और उसका UUID .svn/wc.dbआपकी वर्किंग कॉपी में SQLite डेटाबेस फाइल में सेव होता है। बस डेटाबेस खोलें (जैसे SQLite ब्राउज़र में), तालिका रिपोर्ट ब्राउज़ करें, rootऔर uuidकॉलम मानों को नए में बदलें । आप जारी करके नए रेपो का यूयूआईडी पा सकते हैंsvn info NEW_SERVER

फिर से, इसे अंतिम उपाय विधि के रूप में मानें।


@IgorGanapolsky: क्या आप अधिक विशिष्ट हो सकते हैं?
मार्टिन पेका

1
यदि आप मेरी पोस्ट को ध्यान से पढ़ते हैं, तो मैं किसी भी कमांड को चलाने का सुझाव नहीं देता। मैं SQLite DB संपादन का सुझाव देता हूं।
मार्टिन पीका

लेकिन SQLite DB के संपादन में कमांड चलाना शामिल है। SQL कमांड।
पीटर फ्लिन

यह पता चलता है कि आप साइक्लाइट का उपयोग नहीं कर सकते; आपको सुझाए अनुसार sqlitebrowser का उपयोग करना होगा। अजीब।
पीटर फ्लिन

1

यदि आप एक नए खाली रेपो के लिए प्रतिबद्ध हैं, तो आप नए खाली रेपो की जांच कर सकते हैं और नए रिमोट रेपो के लिए प्रतिबद्ध हैं।
एक नया खाली रेपो आपकी स्थानीय फ़ाइलों को नष्ट नहीं करेगा।
इसे आज़माएँ: उदाहरण के लिए, रिमोट रेपो url: https://example.com/SVNTest cd [YOUR PROJECT PATH] rm -rf .svn svn co https://example.com/SVNTest ../[YOUR PROJECT DIR NAME] svn add ./* svn ci -m"changed repo url"


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