2010-07-20 5 views
17

Ich versuche zu ändern „svn: externals“ Eigenschaft einer Remote-Repository über diesen Befehl:Ist es möglich, die Eigenschaft "svn: externals" des Subversion-Repositorys remote zu ändern?

svn ps svn:externals "vendor1 http://vendor_repo_here.com" http://main-repo-here.com 

Ich erwarte über den Befehl zu ändern „svn: externals“ Eigenschaft aus, was auch immer es ist, „Hersteller1 http://vendor_repo_here.com “.. Aber es wirft einen Fehler:

Setting property on non-local target 'http://main-repo-here.com' needs a base revision. 

Also versuche ich, dieses:

svn ps -r HEAD svn:externals "vendor1 http://vendor_repo_here.com" http://main-repo-here.com 

Jetzt heißt es:

Cannot specify revision for versioned property 'svn:externals' 

Mache ich etwas falsch? Gibt es trotzdem eine Möglichkeit, dies über die Kommandozeile zu ändern?

Antwort

28

Ich hatte ein ähnliches Problem. Turtoise scheint zur Kasse zu gehen und dann wieder zu committen, also schrieb ich ein Skript, das das Gleiche tut.

svn checkout <URL> repocopy --depth 'empty' 
svn propget svn:externals repocopy > tmp2 
//whatever you want to do > tmp_new 
svn propset svn:externals repocopy -F tmp_new 
svn commit -m "commit comment" tmp 
rm -f -r repocopy 
rm tmp2 
rm tmp_new 
+2

Ok, das Hinzufügen von 'Tiefe' wird sicherstellen, dass der Checkout sofort erfolgt, unabhängig von deiner Repo-Größe ... richtig? Klingt perfekt. Habe es noch nicht ausprobiert - aber ich denke deine Antwort ist am annehmbarsten. –

+2

Ja, "--depth empty" macht das. "--depth sofort" existiert ebenfalls und würde auch Dateien und Ordner in diesem obersten Verzeichnis auschecken. – panschk

+3

Danke, aber in Zeile 5 würde ich lieber 'svn commit -m commit comment" repocopy "; Ansonsten großartig. –

4

von Hilfe von svn propset:

propset (pset, ps): Stellen Sie den Wert einer Eigenschaft auf Dateien, Verzeichnisse oder Revisionen. Nutzung: 1. propset PROPNAME PROPVAL setzen PATH ... 2. propset PROPNAME --revprop -r REV PROPVAL setzen [TARGET]

  1. Ändert eine versioniert Datei oder das Verzeichnis Eigenschaft in einer Arbeitskopie.
  2. Ändert eine nicht versionierte Eigenschaft in einer Repository-Revision. (TARGET bestimmt nur, auf welches Repository zugegriffen.)

svn: externals ist ein versioniert Eigenschaft, die in einer solchen Art und Weise nicht verändert werden können.

+0

Ich bin mir nicht sicher, wie TortoiseSVN es direkt aus "Repo Browser" dann tut, wie Si vorgeschlagen. –

1

Es ist möglich, svn:externals remote über TortoiseSVN zu ändern:

TortoiseSVN>Repo-Browser> (wählen svn: externals dir)> Eigenschaften anzeigen> Bearbeiten

Das funktioniert für mich.

Es wäre interessant zu wissen, warum TortoiseSVN noch svn nicht kann.

+0

Das sind gute Infos .. Ich bin mir dessen bewusst. Aber kann es nicht von der Kommandozeile aus getan werden? –

+0

Die von Adrian zur Verfügung gestellte Dokumentation zeigt an, dass dies nicht möglich ist. Daher ist es am besten, E-Mails an Subversion- oder TortoiseSVN-Mailinglisten zu senden, um zu begründen, warum ein Client (vermutlich mit derselben API/Bibliothek) dies tun kann. Du könntest Glück auf SO haben und jemanden mit tieferem Wissen finden, ich weiß, dass Stefan (TortoiseSVN Lead Dev) vor einer Weile auf SO war, aber Pot Popp wirklich! – si618

0

Propedit auf Revisionseigenschaften arbeiten, nicht sicher propset aber das sollte funktionieren.

Jedoch: der Repo muss geändert werden, um Änderungen der Revisionseigenschaft zu erlauben (im pre-revprop-change-Hook) oder sie werden zurückgewiesen. Danach können Sie andere Revisionseigenschaften wie Autor, Datum, Protokollkommentar usw. setzen (natürlich kann Ihr Hook clever sein, alle Änderungen außer extern ablehnen, aber Sie müssen sich bewusst sein, dass Sie diese Fähigkeit programmieren müssen)

Sie müssen einen Editor festlegen - ich glaube nicht, dass Sie den vorhandenen Wert direkt überschreiben können (es sei denn Propset tut dies), da er erwartet, Ihnen den vorhandenen Wert zu zeigen, den Sie bearbeiten können.

+0

'svn: externals' ist jedoch keine Revisionseigenschaft, sondern eine normale (wenn auch spezielle). – eichin

0

Wenn Sie Subversion installieren, wird neben dem Befehl 'svn' ein weiterer Befehl namens 'svnmucc' installiert. 'svnmucc' kann Eigenschaften URLs basierend auf der Kommandozeile einstellen. Dies beinhaltet versionierte Eigenschaften.

d:>svnmucc 
enter code Subversion multiple URL command client 
usage: svnmucc ACTION... 

    Perform one or more Subversion repository URL-based ACTIONs, committing 
    the result as a (single) new revision. 

Actions: 
    cp REV SRC-URL DST-URL : copy [email protected] to DST-URL 
    mkdir URL    : create new directory URL 
    mv SRC-URL DST-URL  : move SRC-URL to DST-URL 
    rm URL     : delete URL 
    put SRC-FILE URL  : add or modify file URL with contents copied from 
         SRC-FILE (use "-" to read from standard input) 
    propset NAME VALUE URL : set property NAME on URL to VALUE 
    propsetf NAME FILE URL : set property NAME on URL to value read from FILE 
    propdel NAME URL  : delete property NAME from URLhere 
+0

* Die "___" mit Subversion * ..? – Xlander

+0

Ok, ich gebe zu, Holländer zu sein, bin ich gut in Holländisch-Ismen. Ich habe meinen Text angepasst, um ihn lesbarer zu machen (hoffe ich). –

+0

Lol ok. Das ist kein Problem. Ein besserer Weg zu sagen wäre: * Wenn Sie Subversion installieren, wird neben dem Befehl 'svn' ein weiterer Befehl namens 'svnmucc' installiert. * – Xlander

Verwandte Themen