So importieren Sie einen Teil eines SVN-Repository in den Basar

703
JW.

Die Situation

Ich führe Basar 2.4.1

Ein Projekt-Hosting-Unternehmen hostet mein SVN-Repository für Project A:

https://svn.example.com/myrepo/trunk/ProjectA/ 

Ich habe keinen svn-admin-Zugriff auf das Repo svn.example.com.

Innerhalb des projectARepos gibt es ein Verzeichnis, das den gesamten Code für enthält Component X. Sein SVN-Standort ist:

https://svn.example.com/myrepo/trunk/ProjectA/ComponentX 

Das Ziel

Ich versuche mich Component Xvom Project ASVN Repo abzuspalten, um zu werden Project B. Wo Project Bist in Bazaar versioniert.

Der Plan

Mein Plan ist es:

  1. Erstellen Sie ein lokales bzr-Repository für Project B
  2. Verwenden Sie bzr svn-importden Import Component Xvon Project Ain meinem lokalenProject B
  3. Drücken Sie dann Project Bauf Launchpad
  4. Dann svn-deletedas alte Component XVerzeichnis aus dem SVN Repo.

Ich stehe bei Schritt 2 fest.

So weit, ist es gut

Auf meinem Windows XP habe ich also ein bzr-Repo erstellt für Project B:

# cd C:\me\OpenSource\ # bzr init-repo ProjectB 

Dann zog ich in dieses Verzeichnis:

# cd ProjectB 

Es geht ein bisschen schief

Dann habe ich versucht, bzr svn-importdas svn-Verzeichnis zu packen:

# bzr svn-import https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/ 

Dies erzeugt jedoch einen Fehler:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a different repository layout (see also 'bzr help svn-layout'). 

Ich habe verschiedene Dinge ausprobiert und bekomme immer wieder den gleichen Fehler.

Dinge, die ich versucht habe

Versucht: Ändern von subversion.conf, um anzuzeigen, dass ComponentX eine Verzweigung ist

Nach dem Anschauen habe 'bzr help svn-layout'ich C:\Documents and Settings\Me\Application Data\bazaar\2.0\subversion.confeine Zeile geändert und hinzugefügt, um darauf hinzuweisen, /ComponentXdass sie als Zweig behandelt werden sollte:

[203ae883-c723-44c9-aabd-cb56e4f81c9a] branches = */ComponentX 

Das hat nicht funktioniert. Gleicher Fehler:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a different repository layout (see also 'bzr help svn-layout'). 

Versucht: Angabe eines anderen Repository-Layouts als Argument

dh als Argument übergeben: --layout=root(Weil ich wollte, dass dieser Pfad als Root des neuen bzr-Repos behandelt wird):

# bzr svn-import --layout=root https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/ 

Das hat nicht funktioniert. Gleicher Fehler:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a different repository layout (see also 'bzr help svn-layout'). 

Also versuchte ich nur zu sagen --layout=none:

# bzr svn-import --layout=none https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/ 

Das hat nicht funktioniert. Gleicher Fehler:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a different repository layout (see also 'bzr help svn-layout'). 

Um ehrlich zu sein, ich hacke jetzt.

Ich weiß nur nicht, wo ich falsch liege.

1

2 Antworten auf die Frage

1
jelmer

svn-import ist speziell darauf ausgerichtet, alle Niederlassungen in einem Subversion-Repository zu importieren. Die Option --layout wird verwendet, um festzulegen, was ein Zweig für erforderlich hält. Es scheint, dass Sie versuchen, einen einzelnen Zweig zu klonen, für den "bzr-Zweig" tatsächlich der richtige Befehl ist.

Um die Layouts zu erklären:

Sternchen in der Einstellung "branches =" durchlaufen nicht mehr als eine Verzeichnisebene. Die Einstellung "branches = trunk / * / ComponentX" in subversion.conf wäre der richtige Wert. Es scheint, als sei der Fehler von bzr-svn etwas verwirrend. Eigentlich sollte es heißen, dass der von Ihnen angegebene Pfad keine Verzweigungen enthält.

Dies bedeutet, dass --layout = root lediglich dazu führt, dass https://svn.example.com/myrepo als Zweig betrachtet wird. Dies erklärt, warum Sie den Fehler erhalten, einen Zweig innerhalb eines Pfads anzugeben.

0
JW.

Antwort auf meine eigene Frage.

Anstatt mit zu kämpfen bzr svn-import, umgehen Sie das Problem, indem Sie bzr branchstattdessen verwenden. Es beantwortet nicht wirklich die Frage, warum bzr svn-importes Fehler gibt, löst aber das Problem.

In der Situation, in der ein Projekt-Hosting-Unternehmen Ihr svn-Repository hostet, finden Sie Project Aunter:

https://svn.example.com/myrepo/trunk/ProjectA/ 

und innerhalb des projectARepos gibt es ein Verzeichnis, das den gesamten Code für enthält Component X. Sein SVN-Standort ist:

https://svn.example.com/myrepo/trunk/ProjectA/ComponentX 

und wo es das Ziel ist, sich Component Xvom Project ASVN-Repo abzuspalten, um zu werden Project B. Wo Project Bist in Bazaar versioniert.

Der Plan sollte sein:

  1. Erstellen Sie ein lokales bzr-Repository für Project B
  2. Verwenden Sie bzr branchdump Component Xaus Project Ain meinem lokalenProject B
  3. Drücken Sie dann Project Bauf Launchpad
  4. Empfohlen: Vergessen Sie nicht, svn-delete Component Xvon Project Azu verwenden, um Doppelarbeit zu vermeiden.

So wie:

1. Erstellen Sie ein lokales bzr-Repository für Project B

Unter Windows XP erstelle ich ein bzr-Repo für Project B:

# cd C:\me\OpenSource\ # bzr init-repo ProjectB 

Wechseln Sie dann in dieses Verzeichnis:

# cd ProjectB 

2. Verwenden Sie bzr branchdump Component Xaus Project Ain meinem lokalenProject B

Dann erstellen Sie einen lokalen Zweig aus dem Unterverzeichnis svn repo:

# bzr branch https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/ ComponentX 

3. Drücken Sie dann Project Bauf Launchpad

Drücken Sie dann die Taste, um den von Launchpad gehosteten Zweig gemäß den Anweisungen in den Basar-Dokumenten zu erstellen :

# bzr push lp:~mylaunchpadteam/mylaunchpadproject/trunk 

Passen Sie dann die Verzeichnisstruktur an und fügen Sie Dateien hinzu, um sie in ein "Projekt" zu konvertieren.

um ehrlich zu sein, ich hätte einfach svn export benutzt und die revisionshistorie weggeworfen und einen bzr add * gemacht; bzr Push. Sirex vor 12 Jahren 0
Ja. Es wäre einfacher, wenn Sie den Revisionsverlauf nicht horten möchten. JW. vor 12 Jahren 0