Le varianti di questa domanda sono state poste prima, ma sembra che il problema di disturbare gli altri membri del team non sia stato menzionato. Nei post esistenti (vedere How to "unversion" a file in either svn and/or git) la risposta accettata è generalmente quella di eseguire svn rm FILE
o svn rm --keep-local FILE
e quindi impostare la proprietà svn:ignore
se lo si desidera. Ho passato gli ultimi 20 minuti a giocare con questo (controllando un repository in due punti, eliminando un file da uno, quindi aggiornando l'altro, ecc.). Ecco cosa ho trovato (sto usando SVN 1.6.16):Come annullare la versione di un file in SVN con garbo (senza disturbare i membri del team)?
Prima di tutto, da quello che posso dire la flag --keep-local non influenza ciò che accade a tutti gli altri che stanno per aggiornare da il repository in seguito. A loro sembra la stessa come se si fosse appena fatto un regolare svn delete
(nessuno della documentazione sovvertimento ho visto menziona esplicitamente - forse dovrebbe essere ovvio che si sta ancora facendo un'operazione svn delete
e che "mantenere il locale" solo la volontà influenzare le cose sul lato locale, ma non era necessariamente ovvio per me).
Quindi ci sono due casi - 1. membro del team Un elimina un file che membro del team B non ha avuto modifiche locali o 2. Un membro del team elimina un file che membro del team B fatto hanno modifiche locali non impegnati in
.In 1, dopo l'eliminazione, il file di B è stato cancellato. Ora deve recuperarlo da solo (ovvero svn merge -rHEAD:XXX FILE; svn revert FILE
per riportare la versione XXX di FILE nella directory di lavoro e non essere reimpegnata al prossimo commit)
In 2, B vede un conflitto di alberi in fase di aggiornamento, e FILE ora ha lo stato A + C
con il messaggio "modifica locale, eliminazione in arrivo su aggiornamento" sotto di esso. A questo punto, non sono esattamente sicuro di quale sia la soluzione consigliata. Quello che ho fatto è copiare FILE da qualche altra parte, giusto per essere sicuro, e quindi eseguire svn revert FILE
. Non è più necessario perché FILE esiste ancora non controllato nella directory di lavoro con tutte le modifiche locali intatte. Ma non so quanto mi fido di questo, dato che ho avuto le mie modifiche senza commit cancellate da svn revert
in altri scenari.
tl; dr: E 'davvero il caso che unico modo per non-versione di un file in SVN è quello di eliminarlo dalla directory di lavoro di tutti gli altri sulla squadra e farli recuperare se stessi? Sto usando --keep-local sbagliato, o manca un'altra opzione simile?
Penso che il tuo flusso di lavoro potrebbe essere il problema, perché vuoi "unversion" un file? Per definizione, il tuo 'versione controllo sistema 'può solo tenere traccia delle versioni dei file che conosce. quando si rimuovono questi file dal repository, è solo logico ricorrere a rimuoverli anche dalle copie funzionanti. Hai un esempio di un altro VCS che ti permette di fare questo? – richo
Che dire di un file di configurazione? (cioè il file .project di Eclipse). Tutto ciò di cui hanno bisogno tutti i membri del team, ma è leggermente diverso da una macchina all'altra. Quindi non dovrebbe essere nel controllo della versione, ma è arrivato lì accidentalmente. – danny
Sarei 'svn mv'ing e passando un memo round in quel caso. – richo