Frage

Ist es möglich, eine Subversionseigenschaft zu manipulieren, z. B. svn:externals Nur über eine URL? (dh ohne eine funktionierende Kopie.)

Ich hätte gerne ein Skript, das Stifte svn:externals zu einer bestimmten Überarbeitung bei einer Subversion -URL, aber dies scheint unmöglich zu sein:

$ svn propset foo bar https://example.com/svn/myproject/trunk
svn: Setting property on non-local target 'https://example.com/svn/myproject/trunk' needs a base revision

$ svn propset foo bar -r HEAD https://example.com/svn/myproject/trunk
svn: Try 'svn help' for more info
svn: Cannot specify revision for setting versioned property 'foo'

$ svn propset foo bar --revprop -r HEAD https://example.com/svn/myproject/trunk
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'foo': 
could not remove a property

(Ich erhalte die gleichen Ergebnisse, wenn ich eine tatsächliche Revisionsnummer anstelle von verwende HEAD auch.)

War es hilfreich?

Lösung

Nein. Ändern einer Eigenschaft in einer Datei ist wie das Ändern der Datei selbst - Sie benötigen ein Arbeitsverzeichnis. Es gibt einige Subversionsbefehle, die das Komitee ändern, ohne eine funktionierende Kopie zu verlangen: svn cp, svn mkdir, und svn delete. Alles andere braucht ein Arbeitsverzeichnis, um Änderungen vorzunehmen.

Übrigens können Sie Änderungen vornehmen Revision Eigenschaften ohne Arbeitskopie. Revisionseigenschaften sind Dinge wie der Commit -Kommentar (SVN: Log), die ID des Kommandos (SVN: Autor) und die Zeit des Commits (SVN: Datum).

Andere Tipps

Ja, obwohl es ein bisschen ein Hack ist; SVN -Voraussetzung kann URL -Ziele ändern:

svn propedit foo --editor-cmd "echo bar>" http://example.com/svn/myproject/trunk -m "Property changed"

Du kannst den ... benutzen svnmucc Befehl zum nichtinteraktiven Setzen von Eigenschaften einer URL wie z. svn:externals.

Beispiel:

$ svnmucc --root-url https://example.com/svn -m 'reference other/yap' \
   propset svn:externals "^/otherproject/tag/xyz other
^/yetanother/tag/123 yap" myproject/trunk

Beachten Sie, dass svnmucc unterstützt auch andere Befehle außerdem propset und es ist möglich, mehrere Befehle in einem Anruf zu ketten (daher der Name). Das Ergebnis ist nur ein Veränderungssatz.

Das svnmucc Der Befehl ist Teil des Subversion -Quellpakets und in der Regel über den Paketmanager der Distribution erhältlich. Zum Beispiel enthält Fedora 25 es in die subversion-tools Paket. OpenCSW enthält es sogar in das Hauptsubversionspaket.

Auf Willems aufbauen Ausgezeichnete Antwort, Hier ist ein Beispiel, das zeigt, wie SVN festgelegt wird auto-props zum needs-lock für alle Dateien und mime-type Für bestimmte Erweiterungen unter Verwendung einer URL:

svn propedit svn:auto-props --editor-cmd "echo \"* = svn:needs-lock=*
*.os = svn:mime-type=application/octet-stream
*.osproj = svn:mime-type=application/octet-stream\" >" http://example.com/svn/myproject/trunk -m "Setting auto-props."
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top