SVN deposu URL'sini değiştirin


116

Mevcut SVN yapım:

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)

Ancak projemiz (dolayısıyla SVN hizmeti) sub.someaddress.com.tryerine çalışacak someaddress.com.tr(someaddress.com.tr yakında başka bir yere yönlendirilecektir).

Geliştirme sunucusu olduğu için ne yapacağımı bilemedim. Ben kullanmanız gerekecektir svn switchya svn switch --relocate? Ayrıca svn root someaddress.com.tr veya someaddress.com.tr/project proje şubesini değiştirmem gerekecek mi?

Yanıtlar:


208

Apache Subversion sunucusunun bu yeni DNS takma adına taşınacağı göz önüne alındığında sub.someaddress.com.tr:

  • Subversion 1.7 veya üstü ile kullanın svn relocate. Yeniden konumlandırma, SVN sunucusunun konumu değiştiğinde kullanılır. switchyalnızca yerel çalışma kopyanızı başka bir şubeye veya başka bir yola değiştirmek istiyorsanız kullanılır. TortoiseSVN kullanıyorsanız, TortoiseSVN Kılavuzundaki talimatları takip edebilirsiniz . SVN komut satırı arayüzünü kullanıyorsanız, SVN belgelerinin bu bölümüne bakın . Komut şu şekilde görünmelidir:

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

  • Deponuzun /projectgerçek içeriğinin muhtemelen değişmeyeceği için kullanmaya devam edin .

Not: svn relocate1.7 sürümünden önce mevcut değildir (bilgi için ColinM'e teşekkürler). Eski sürümlerde şunları kullanırsınız:

    svn switch --relocate OLD NEW

36
svn relocate 1.7 öncesi mevcut değildir. 1.7 öncesi için kullanacağınızsvn switch --relocate OLD NEW
ColinM

Ek TortoiseSVN bağlantıları çok yardımcı oluyor, bunun için teşekkürler
MOnsDaR

switchÇevrimiçi bulduğum tüm belgelerin daha yeni sürümler için olduğunu komut hakkında bilmiyordum .
Dustin Cook

Bu, + ssh URL'den SSH olmayan bir yere veya tam tersine yeniden yerleştirmem gerektiğinde kullanışlıdır, örneğin: svn anahtarı - relocate svn + ssh: // _ svn_server _ / _ svn_project _ / _ svn_branch_ svn: // _ svn_server _ / _ svn_project _ / _ svn_branch_. Sonuncusu, Jenkins API kullanarak birkaç düğümde svn + ssh olarak otomatik ödeme yaparsanız ve bazılarında (Windows düğümleri) SSH'ye sahip değilseniz, ancak derleme makinesinde oturum açmanız ve "svn güncellemesini" manuel olarak yapmanız gerekiyorsa özellikle yararlıdır. bazı hızlı düzeltmeleri test edin.
Alexander Samoylov

11

URL'yi öncesinde ve sonrasında grep etmek size biraz huzur verebilir:

svn info | grep URL

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

Ve svn relocatekullanmak için doğru şey olduğundan emin olmak için sürümünüzü (> 1.7 olacak) kontrol edin :

svn --version

Son olarak, yukarıdakine ek olarak, eğer depo url değişikliğiniz aynı zamanda bir protokol değişikliğini içeriyorsa, URL'den önce ve sonra belirtmeniz gerekebilir (ayrıca buraya bakın )

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

Elbette hepsi tek bir satırda. Daha sonra, her şey sorunsuz gitti, iyi hissine kapılın:

svn info | grep URL:

Biraz daha fazla özgüven istiyorsanız, yeni svn repo URL'si bağlı ve çalışıyor:

svn status --show-updates
svn diff

5

Benim durumumda, svn relocatekomut (yanı sıra svn switch --relocate) bir nedenden dolayı başarısız oldu (belki de repo doğru hareket ettirilmedi veya başka bir şey). Bu hatayla karşılaştım:

$ 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'

Tüm depoyu yeniden indirmek istemedim, bu yüzden bir geçici çözüm buldum. Benim durumumda işe yaradı, ancak genel olarak birçok şeyin bozulabileceğini hayal edebiliyorum (bu nedenle ya çalışan kopyanızı yedekleyin ya da bir şeyler ters giderse tüm depoyu yeniden kontrol etmeye hazır olun).

Depo adresi ve UUID'si, .svn/wc.dbçalışma kopyanızdaki SQLite veritabanı dosyasına kaydedilir . Sadece veritabanını açın (örn. SQLite Browser'da), REPOSITORY tablosuna göz atın ve rootve uuidsütun değerlerini yenileriyle değiştirin. Yeni reponun UUID'sini ihraç ederek bulabilirsiniz svn info NEW_SERVER.

Yine, bunu son çare yöntemi olarak değerlendirin.


@IgorGanapolsky: Daha spesifik olabilir misiniz?
Martin Pecka

1
Yazımı dikkatlice okursanız, herhangi bir komut çalıştırmanızı önermem. SQLite DB'yi düzenlemenizi öneririm.
Martin Pecka

Ancak SQLite DB'yi düzenlemek, komutların çalıştırılmasını içerir. SQL komutları.
Peter Flynn

Sqlite kullanamayacağınız ortaya çıktı; önerilen şekilde sqlitebrowser kullanmanız gerekir. Tuhaf.
Peter Flynn

1

Yeni bir boş Depoya taahhüt etmek istiyorsanız, yeni boş Depoyu ödünç alabilir ve yeni uzak depoya taahhüt edebilirsiniz.
Yeni bir boş Depo kontrol edin yerel dosyalarınızı silmeyecek.
şunu deneyin: örneğin, uzak repo url'si: 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"


Bu tarihe ne yapacak?
MattBianco
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.