Come utilizzare la sovversione propset contro un URL?
-
27-10-2019 - |
Domanda
E 'possibile manipolare una proprietà sovvertimento come svn:externals
solo tramite un URL? (Cioè senza avere una copia di lavoro.)
Mi piacerebbe uno script che i perni svn:externals
ad una particolare revisione dato un URL eversione, ma questo sembra essere impossibile:
$ 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
(ottengo gli stessi risultati se uso un numero di revisione attuale, invece di HEAD
pure.)
Soluzione
No. La modifica di una proprietà su un file è come cambiare il file stesso - hai bisogno di una directory di lavoro. Ci sono alcuni comandi di Subversion che cambiano il commit senza richiedere una copia di lavoro: svn cp
, svn mkdir
e svn delete
. Tutto il resto ha bisogno di una directory di lavoro al fine di apportare le modifiche.
Tra l'altro, è possibile apportare modifiche su di revisione le proprietà senza una copia di lavoro. proprietà di revisione sono cose come il messaggio di commit (svn: log), l'ID del committer (svn: autore), e il tempo della impegnano (svn: data).
Altri suggerimenti
Sì, anche se è un po 'di hack; propedit svn può cambiare target URL:
svn propedit foo --editor-cmd "echo bar>" http://example.com/svn/myproject/trunk -m "Property changed"
È possibile utilizzare la svnmucc
comando per le proprietà in modo non interattivo insieme di un URL, come svn:externals
.
Esempio:
$ svnmucc --root-url https://example.com/svn -m 'reference other/yap' \
propset svn:externals "^/otherproject/tag/xyz other
^/yetanother/tag/123 yap" myproject/trunk
Si noti che svnmucc
supporta anche altri comandi oltre propset
ed è possibile comandi multipli catena in una chiamata (da qui il nome). Il risultato è solo un insieme di modifiche.
Il comando svnmucc
fa parte del pacchetto sorgente sovversione e di solito disponibile tramite il gestore di pacchetti della distribuzione. Ad esempio, Fedora 25 include nel pacchetto subversion-tools
. OpenCSW comprende anche nel pacchetto subversion principale.
risposta eccellente , ecco un esempio che mostra come impostare SVN auto-props
per needs-lock
per tutti i file e le mime-type
per estensioni particolari utilizzando un 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."