Mentre in qualche modo esperto in VCS (regolare svn, git e git-svn utente) non riesco a capirmi di questo strano comportamento SVN.Un modo corretto per rinominare una directory in copia di lavoro di subversion
Ogni volta che ho bisogno di rinominare una cartella nella mia copia di lavoro SVN da uno stato altrimenti 'pulito' - vale a dire svn status
restituisce nulla e sono stati commesso tutte le altre modifiche - in questo modo (che è ciò che suggerisce il doc svn):
svn mv foo bar
svn commit
SVN si lamenta ad alta voce:
Adding bar
Adding bar/toto
Deleting foo
svn: Commit failed (details follow):
svn: Item '/test/foo' is out of date
Come desideri:
svn update
che dà:
C foo
At revision 46.
Summary of conflicts:
Tree conflicts: 1
C'è un conflitto albero, mentre nessun cambiamento di terze parti è accaduto. Ovviamente, l'unico modo per uscire da questo pasticcio albero conflitto è generico (dal libro rosso svn):
svn resolve --accept working -R .
svn commit
Rinominare in remoto sul repo quindi aggiornare la mia copia di lavoro sembra abbastanza braindead:
url=$(svn info | grep -e '^URL:' | sed 's/^URL: //') svn mv $url/foo $url/bar
svn update
Esiste un modo sanzionato e semplificato per rinominare una cartella che mi manca? Qual è la causa alla base di questo stato di conflitto dell'albero particolarmente sorprendente?
Puoi pubblicare il messaggio esatto di conflitto dell'albero? –
Ho visto questo comportamento anche prima, ma non sono sicuro di quale sia la causa. È quando si aggiunge una dir e la si rinomina prima di impegnarsi forse? –
Ho riscontrato questo comportamento e non sono stato in grado di capire un motivo. L'ho sempre attribuito a "come funziona SVN". Mi fa impazzire. –