2010-08-23 5 views
9

Sto provando a copiare un repository utilizzato utilizzando svnsync (lo sto facendo in questo modo per garantire un utilizzo ottimale del mio repository purché il suo la macchina funziona) ma sembra non funzionare.svnsync non funziona: modifica Revprop bloccata da pre-revprop-change hook

ho due macchine (ho cambiato i nomi, ma non le altre informazioni)

  • INIZIALE: custom di Linux con Subversion 1.4.5 (r25188) (come riportato da svnadmin). Da questa macchina, sto provando a sincronizzarmi su un repository chiamato SOURCE. È possibile accedere a questo repository utilizzando il protocollo http e è stato creato un utente svnsync. In SOURCE/hooks esiste un solo file eseguibile: pre-revprops-change.
  • FINALE: Ubuntu con Subversion 1.6.6 (r40053) (come riportato da svnadmin). Su questa macchina, eseguirò la sincronizzazione su un repository chiamato svn16. È possibile accedere a questo repository utilizzando il protocollo http e è stato creato un utente svnsync. In svn16/hooks, i file eseguibili sono pre-revprop-change e start-commit. Su questa macchina, dav_svn.conf contiene direttiva SVNParentPath /var/svn, rendendo tutti i repository accessibili ai sensi http://FINAL/svn

ho assicurato URL e login/pwd siano corretti con l'apertura di ciascun URL del repository nel mio browser e l'emissione di finestre di dialogo di autenticazione, che sembravano sempre al lavoro .

sto cercando di eseguire il seguente comando

svnsync initialize http://FINAL/svn/svn16 http://INITIAL/SOURCE 

Ma è sempre finiscono per mostrare

Authentication realm: <http://FINAL:80> All Subversion Repositories hosted on FINAL 
Password for 'ubunut-user': 
Authentication realm: <http://FINAL.fr:80> All Subversion Repositories hosted on FINAL 
Username: svnsync 
Password for 'svnsync': 
svnsync: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent 
svnsync: At least one property change failed; repository is unchanged 
svnsync: Error setting property 'sync-lock': 
Revprop change blocked by pre-revprop-change hook (exit code 255) with no output. 

Credo che ci sia un qualche tipo di problema di configurazione somewhere§. Ma cosa ? E dove ? Ho raggiunto i miei limiti e il web sembra non essere di aiuto qui, poiché i vari documenti che ho visto suggeriscono di rendere i hook eseguibili dall'intero universo è una soluzione efficiente (cosa non è nel mio caso).

risposta

13

Risulta che ero più stupido che stupido.

In questo caso di errore, il modo più semplice per garantire che tutto funzioni correttamente è richiamare vari ganci a mano.

ha rivelato il mio gancio pre-revprop-change è stato erroneamente scritto con

"#!/bin/sh" 
exit 0 

Ovviamente, la rimozione del " risolto il problema.

+0

Per Windows basta creare un file bat vuoto per il gancio 'eco rem fittizio>% specchio% \ ganci \ pre-revprop-change.bat' –

12

Solo una piccola nota, per evitare molto spesso l'errore.

In caso di tale errore, innanzitutto assicurarsi che il file pre-rev-change - sia eseguibile. In caso contrario, eseguire:

chmod +x $DEST_SVN_REPO/hooks/pre-revprops-change,

dove $ DEST_SVN_REPO - percorso di repository di destinazione.

+0

tramite Samba, il file non era eseguibile. Renderlo eseguibile modificando le opzioni sul mio comando 'mount' ha risolto il mio problema. Grazie. –

+0

che dovrebbe leggere pre-revprop-change, non che qualcuno diverso da me usi ancora svn –

1

vedere qui: https://svn.apache.org/repos/asf/subversion/trunk/notes/svnsync.txt

si config destinazione è fallito.La fase INIT (copia degli attributi) deve essere eseguita. All'interno dello script pre-rev-change-change dovresti inserire il nome utente consentito per l'aggiornamento. altrimenti la destinazione sarà danneggiata dagli utenti. svn non può funzionare come nodi active-active. in genere si configura lo script hook per impedire qualsiasi modifica da parte degli utenti. dovrebbero avere solo accesso reaad ottenuto.

generalmente andare al servizio web superutente. questo è fuori discussione.