2010-09-14 18 views
53

Sé que debería estar trabajando en una sucursal pero algunos de nosotros estamos en la misma rama de un proyecto. Uno de los Dev hizo una confirmación y solo quería actualizar mi copia local con la última versión de SVN. Running 'svn update' consigo esta salida:¿Es posible sobrescribir (forzar) siempre los cambios locales al actualizar desde SVN? Ignorar conflictos?

Restored 'index.html' 
U somescript.php 
Conflict discovered in file.xml'. 
Select: (p) postpone, (df) diff-full, (e) edit, 
     (mc) mine-conflict, (tc) theirs-conflict, 
     (s) show all options: 

¿Hay una opción/manera de sobrescribir mis cambios locales y obtener el archivo más reciente (s) de la subversión e ignorar todos los conflictos?

He consultado algunas de las otras publicaciones en Stack y no todas responden la pregunta. Dicen que se elimine el proyecto y se finalice el proceso de compra, lo que supongo que si es la mejor manera, que así sea ... Pero quiero más detalles sobre por qué no puedo forzar una actualización. Gracias

EDIT:

así que elegimos s 'muestran todas las opciones':

(s) mostrar todas las opciones: s

(e) edit    - change merged file in an editor 
    (df) diff-full  - show all changes made to merged file 
    (r) resolved   - accept merged version of file 

    (dc) display-conflict - show all conflicts (ignoring merged version) 
    (mc) mine-conflict - accept my version for all conflicts (same) 
    (tc) theirs-conflict - accept their version for all conflicts (same) 

    (mf) mine-full  - accept my version of entire file (even non-conflicts) 
    (tf) theirs-full  - accept their version of entire file (same) 

    (p) postpone   - mark the conflict to be resolved later 
    (l) launch   - launch external tool to resolve conflict 
    (s) show all   - show this list 

supongo que debería ir con la opción 'tc ¿?

+0

¿Por qué quieres ¿para hacer esto? Haz una fusión y no perderás tus cambios. De lo contrario, haga un 'svn revert' y luego' svn up'. – halfdan

+0

el punto es que no necesito mis cambios y quería obtener la última versión de ese archivo y sobrescribir mis cambios –

+0

¿Por qué no se elimina el archivo y obtener la versión reciente simplemente mediante la actualización? :) – Select0r

Respuesta

65

Si realmente desea una copia de la cabeza (la última revisión en repos), entonces debería

svn revert -R <path> // discard all your changes inside path (recursive) 
svn update   // get latest revision of all files (recursive) 

eso es todo.

Ten en cuenta que perderás TODOS tus cambios desde tu último 'commit'.

EDIT: añadió el -R <path> de Isu_guy answer en aras de la exhaustividad y ayudar a los lectores a encontrar una sola respuesta completa respuesta

+0

Los archivos no versionados no se eliminan. Consulte también aquí: [¿Hay algún comando de Subversion para restablecer la copia de trabajo?] (Http://stackoverflow.com/a/6204618/1996150) –

27

de tato es absolutamente correcta y Por favor guarda su cautela. Perderá TODOS sus cambios. Solo una aclaración sobre la sintaxis y algunos matices

svn revert no es recursivo por defecto y necesita una ruta para trabajar. Hacer es recursivo agregar "-R". Si estás en la actual utilización de directorio "./" para el 'ruta' a continuación o utiliza una ruta absoluta como '/ path_to_your_folder'

svn revert -R <path> 

actualización de SVN es recursivo. Si se encuentra en el directorio que no es necesario un camino en absoluto

svn update 
22

Lo siento, me di cuenta que es un puesto bastante antiguo, pero en vez de dos operaciones, lo haría esto:

svn up --accept tf 

Dicho esto, "svn revertir -R" y luego "svn up" en la raíz de su copia de trabajo también servirían. En mi caso, tengo varios WC para varios proyectos, así que ejecuto un script de shell que los actualiza cuando inicio mi computadora. No uso accept, más bien uso "--accept p" para posponer la resolución ya que es un proceso automatizado, luego fusiono cualquier conflicto que SVN no pueda fusionar automáticamente (usualmente, esto implica revertir, pero depende)

+0

este comando no funciona, indica malos parámetros. – arvindwill

+0

extraño - podría ser cliente/versión SVN específico. Estoy ejecutando la versión actual de TortoiseSVN en Win7; sin embargo, este comando también funciona en el servidor SVN que tenemos en nuestros servidores CentOS. – Carnix

+0

Como Andrei mencionó a continuación, svn up --accept theirs-full – Raghav

14

Usando svn 1.6.11 (como enviado por CentOS 6.4) la orden de Carnix debe ser similar

svn up --accept theirs-full 

(no puede agregar un comentario, ya que no tengo la reputación suficiente)

2

Respondiendo a la primera pregunta. No. Pero se puede reemplazar los archivos locales ejecutando los siguientes comandos desde la raíz de su proyecto:

svn revert -R . 
svn update 

Esto funcionó en mi mac con SVN 1.7.19 y Ubuntu con SVN 1.8.8

Cuestiones relacionadas