2013-05-21 14 views
5

Hintergrund: DynDNS hat jetzt begonnen, einmal im Monat eine Anmeldung zu verlangen, um ihre kostenlosen Konten aktiv zu halten (vorher musste man nur einmal im Monat seine IP-Adresse erneuern). Ich bin sicher, früher oder später werde ich das vergessen und mein Konto verlieren.Wie kann ich Svn URLs zu einer anderen Domain umleiten?

Ich verwende mysvn.dyndns.org für den Zugriff auf mein Subversion-Repository auf einem Server, der (ab sofort) auch von svn.mydomain.com erreichbar ist. Leider beziehen sich die meisten Projekte auch auf Externals, die sich auch auf mysvn.dyndns.org befinden und ich möchte nicht wirklich alle Projekte (> 100) durchgehen und die Externals ändern, denn das würde wahrscheinlich mehrere Stunden dauern und ist eher fehleranfällig .

Gibt es eine Möglichkeit, Windows oder die Subversion/TortoiseSVN Clients zu konfigurieren, um eine Domäne an eine andere umzuleiten?

zB:

https://mysvn.dyndns.org/svn/blablub

sollte

https://svn.mydomain.com/svn/blablub

Ich weiß, umgeleitet werden, dass ich einen Eintrag zu Hosts hinzufügen können, um eine IP-Adresse umgeleitet werden, aber ich würde die Umleitung bevorzugen zu einem Domain-Namen.

+0

Welche Version von Svn Client und Server? – explunit

+0

Dies beantwortet nicht Ihre spezifische Frage, aber kann ich einen alternativen Ansatz vorschlagen? Angenommen, Sie verwenden svn 1.5 oder höher, das [relative URLs für externe Benutzer] unterstützt (http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html), folgen Sie einem der Ansätze [hier ] (http://stackoverflow.com/questions/204616/how-to-migrate-all-urls-in-svnexternals-properties-across-a-repository), um alle externen Elemente in relative zu ändern, würde das grundlegendere Problem lösen. – explunit

+0

@explunit: Das ist ein interessanter Ansatz. Leider wird es nicht für alle Projekte funktionieren, da sie nicht alle im selben Repository wie ihre externen Daten gespeichert sind. Aber die Mehrheit ist. Bitte fügen Sie dies als Antwort hinzu, Sie könnten das Kopfgeld erhalten, auch wenn es die Frage nicht beantwortet, wie ich es ausdrückte. – dummzeuch

Antwort

0

Anscheinend gibt es keine Lösung so einfach, wie ich dachte, es könnte sein. Am Ende habe ich ein kleines Delphi-Programm geschrieben, das auf dem Versions-Insight-Quellcode basiert, der die Externals für alle ausgecheckten Projekte in Unterverzeichnisse eines bestimmten Verzeichnisses ändert und diese Änderungen festschreibt. Dann habe ich den Befehl svn relocate verwendet, um die Projekte selbst zu verschieben.

@rem calls svn relocate for all directories 
@echo off 

for /d %%i in (*) do call :HandleDir %%i 
pause 
goto :eof 

:HandleDir 
echo *** handling dir %1 

svn relocate --ignore-externals https://mysvn.dyndns.org/svn/ https://svn.mydomain.com/svn/ %1 
goto :eof 
5

Sie (wirklich) gefragt 2 Fragen:

  • Kann ich umleiten somename.domain.com-anothername.somedomain.com?
  • Können SVN-Clients einen alten Namen verwenden, aber einen neuen Host?

und kurze Antworten

  • Ja
  • Keine

Längere Ausführungen

zum Umleiten alten Hostnamen neu Sie haben und mindestens zwei verwenden können Variationen (mit dem gleichen Endergebnis)

  • auf die DNS-Ebene und CNAME-Eintrag, die neuen Namen zu neuer Alias ​​wird:

somename.domain.com. IN CNAME anothername.somedomain.com

auf Anfrage von somename mit Daten aus anothername

  • In der Antwort wird Apache-Konfiguration für den Host des Standortes somename Sie können die Umleitung zu einem anderen Namen hinzufügen Apache

Aber: es wird nur auf Browsern Niveau arbeiten - wenn Sie versuchen, diese umgeleitet Position als Ziel der für jeden Subversion-Befehl zu verwenden, werden Sie Fehler „Repository verschoben, bitte verlagern“ und Sie must relocate alle alten Ressourcen zur neuen URL.

Gute Nachrichten für Ihre

alle Äußerlichkeiten Definition als SVN-Eigenschaften innerhalb Quelle Repo geschrieben, können Sie die Liste dieser Äußerlichkeiten (mit Werten) und Update mit den neuen Werten erhalten, und diese Operation (theoretisch) können automatisierte

svn propget -R svn:externals . > FILE der Arbeitskopie für das erhalten Äußerlichkeiten in der Wurzel werden

svn propset svn:externals --target FILE zur Definition neuer Externen in Batch

+0

Also für 1 brauche ich Zugang zu einem DNS für die Domain dyndns.org? Oder habe ich etwas falsch verstanden? – dummzeuch

+0

@dummzeuch - nein, du musst Zugriff auf die Zone 'mydomain.com' haben, um zu den Domains RRs' svn IN CNAME mysvn.dyndns.org' hinzuzufügen, aber lies s.2 danach - es wird das Problem nicht lösen Zugriff auf Svn-Clients –

1

Kann ich vorschlagen, eine alterna Der Ansatz?

Angenommen, Sie verwenden Svn 1.5 oder höher, die supports relative URLs für externe, eines der Ansätze in this question zu ändern, alle externen zu relativ ändern würde das grundlegendere Problem lösen.

Und wenn sie nicht alle relativen URLs sind, können Sie sie von Server1 zu Server2 mit einem ähnlichen Skript ändern. Dies geschieht routinemäßig während Servermigrationen. Angenommen, Sie halten gut backups, ist es wahrscheinlich der Ansatz, mit dem Sie alle Schmerzen gelöst auf einmal, anstatt es im Laufe der Zeit zu verzögern.