2010-02-02 15 views
79

Vorrei riscrivere un numero elevato di messaggi di commit SVN in una struttura diversa, ad es. prefisso una categoria. Da:Modificare il messaggio di commit SVN in modo retroattivo?

"foo" now accepts "bar" format for connection string.

voglio

core - database - "foo" now accepts "bar" format for connection string.

C'è un modo semplice per fare questo che fa non includono il dumping tutta la repository utilizzando svndumpfilter?

Sto lavorando con TortoiseSVN sul lato client e VisualSVN sul lato server. (VisualSVN è un wrapper attorno al classico svn, con cui posso parlare tramite la riga di comando.)

risposta

91

Sì, i messaggi di commit possono essere modificati. Sono implementati come proprietà sulle revisioni, in modo simile alle normali proprietà dei file.

Nella finestra Registro TortoiseSVN è possibile fare clic con il pulsante destro del mouse su un impegno e selezionare "Modifica messaggio registro".

+0

+1 Grazie per questo. Ho fatto un po 'di lavoro coinvolgendo alcune modifiche API che volevo impegnare separatamente per il resto, e ho scritto il messaggio di registro per riflettere che ... prima di accidentalmente impegnare l'intero lotto. L'ho "corretto" commettendo un cambio di spazio bianco con un messaggio di log che spiegava il resto! la prossima volta, saprò cosa fare. –

+1

Ho dato questo anche un +1, ma poi non ha funzionato con un messaggio "Il repository non è stato abilitato ad accettare i permchange di revisione, chiedere all'amministratore di creare un hook pre-rev-change-change". L'amministratore saprà automaticamente cosa deve essere fatto? –

+19

Stai chiedendo * me * se hai un amministratore di Subversion competente? :) – JesperE

57

È possibile modificare i messaggi di registro in modo retroattivo, è coperto in the FAQ. Io non sono sicuro di come l'interfaccia della riga di comando per VisualSVN funziona, ma per la vaniglia svn il comando sarà

svn propset -r N --revprop svn:log "new log message" URL 

Se si vuole fare questo per tutte le revisioni senza dumping il repository e ri-caricamento, si potrebbe sceneggiatura questo comando per lavorare su un elenco di tutte le revisioni. Ci vorrebbe un po 'di tempo per farlo in questo modo, a seconda delle dimensioni del tuo repository, ma in linea di principio non c'è motivo per cui tu non possa farlo, e non implica un dump e una ricarica.

Inoltre, vaniglia SVN ha un comando svnlook che è una sorta di strumento amministrativo che funziona direttamente con i file del repository. Questo strumento non comprende gli URL (è necessario avere accesso a livello di file system al repository), ma è molto più veloce. La sintassi è leggermente diversa, ma è possibile modificare le proprietà nello stesso modo con quello strumento.

+2

Se si desidera utilizzare il proprio editor: 'svn propedit -r N svn: log'. –

+3

Grazie a @kazark, ho dovuto fare '' 'svn propedit -r N --revprop svn: log''' per poter modificare il messaggio nel mio editor. – tutuDajuju

+2

Solo per aggiungere una nota: per impostazione predefinita, tale comando non funzionerà, perché ** le modifiche alle proprietà di revisione ** non sono consentite per impostazione predefinita. Per permetterlo, l'amministratore di svn deve creare un hook chiamato ** "pre-revprop-change" **. Queste informazioni sono [nelle FAQ] (http://subversion.apache.org/faq.html#change-log-msg) come menzionato sopra. –

24

Sì, è possibile, ma è necessario prima abilitarlo sul repository.

Nel repository, nella directory hooks, è un file denominato pre-revprop-change.tmpl. Ha un paio di pagine di commenti su ciò che fa e viene impostato per consentire solo modifiche alle proprietà del registro. Per abilitarlo, rinominare il file in pre-rev-change-change e renderlo eseguibile (sto assumendo una subversione ospitata da POSIX, se stai usando Windows per l'hosting, potresti trovare utile this message).

Una volta che il repository lo consente, è possibile utilizzare Tortoise per modificare il messaggio di registro per un commit dal menu del tasto destro del mouse su un commit, oppure è possibile utilizzare la riga di comando.

+0

+1 Informazioni eccellenti signore. Non mi lascerà fare senza un hook pre-rev-change-change. Dovrò portare lo script bash del template a Windows, ma questo non dovrebbe essere un problema. –

+0

Ho aggiunto un collegamento a uno script di comando di esempio: http://svn.haxx.se/users/archive-2006-03/0107.shtml –

1

Appena arrivato attraverso questo post con il problema esatto, usando Tortoise SVN per client e VisualSVN su un server Windows.

Se vi capita di avere un "una richiesta DAV fallito" messaggio di errore, dare uno sguardo al Andrew Aylett's answer e andare modifica "pre-revprop-change.tmpl" nel vostro ganci repository sottodirectory.

Una volta eseguita questa operazione, il messaggio "modifica messaggio di registro" nel menu contestuale dovrebbe finalmente funzionare!

2

svn propedit -r N --revprop svn:log URL

URL sopra è facoltativo se siete già in una directory di lavoro. Apparirà quindi un editor in modo che il messaggio possa essere cambiato.

Problemi correlati