Suponga que tiene un directorio bajo el control de la subversión, que contiene algunos archivos y subdirectorios de toneladas, al igual que:SVN: ¿Puede eliminar directorios de un proceso de pago local solamente (no desde el repositorio)?
file1.txt
file2.txt
file3.txt
dir1/
dir2/
dir3/
dir4/
:
dirXX/
Ahora necesita los archivos y algunos de los directorios, pero no todos ellos. Esto se puede hacer con SVN. Acaba de hacer el pago y envío no recursivo:
svn checkout -N <URL>
Este obtiene sólo el primer directorio y los archivos dentro. No hay subdirectorios incluidos. Incluso si entra en el directorio de pago y ejecuta un "svn up
", solo actualizará los archivos prestados anteriormente, no agregará los directorios. Ahora puede agregar selectivamente los directorios que necesita al actualizarlos explícitamente. P.ej. si necesita directorio2 y sólo dir4, se puede entrar en el directorio de la caja y ejecutar
svn up dir2
svn up dir4
Si ejecuta un genérico "svn up
" en el futuro, un viaje de solo actualizar los archivos y los dos directorios, no lo hará agregue cualquiera de los otros directorios.
Ahora el problema: ¿y si decido en algún momento posterior que ya no necesito el directorio2? ¿Como me deshago de esto? Parece que no hay forma de hacerlo, aparte de eliminar todo el proceso de pago y comenzar de cero.
Cuando simplemente borra el dir2, el próximo "svn up
" lo traerá de regreso, ya que "svn status
" por supuesto lo muestra como ausente ahora ("!" Delante de su nombre). Ejecutar un "svn remove
" lo eliminará, por supuesto, pero en la siguiente confirmación también lo eliminará del repositorio, lo que no debe suceder.
Incluso el nuevo directorio escasa ("la caja poco profunda") característica de la SVN 1.5 es de ninguna utilidad aquí:
subversión de 1,5 implementación de cajas de poca profundidad es bueno, pero no lo hace ayuda de un par de comportamientos interesantes . En primer lugar, no puede des-telescopiar un elemento de copia de trabajo. Ejecutando svn update --set-depth vacío en una copia de trabajo de profundidad infinita no tendrá el efecto de descartar todo excepto el más alto directorio-simplemente se producirá un error de salida.
- http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html
¿Es esta completa imposible con SVN? ¿Alguien alguna vez se le ocurrió un trabajo inteligente para eso?
Simplemente creando el directorio de finalización (sin SVN) y luego verificando los subdirectorios individuales del repositorio directamente como subdirectorios de este directorio funcionarán para los directorios: ahora cada directorio es propio, se puede actualizar y una vez ya no es necesario, simplemente puede eliminarlo. Sin embargo, ¿cómo obtengo los archivos (por ejemplo, archivo1.txt)? SVN no permite consultar los archivos individuales, solo puede verificar directorios completos.
Creo que esta es la misma pregunta que estos dos: http://stackoverflow.com/questions/ 862950/subversion-prevention-local-modifications-to-one-file-from-being-committed, http: // stackoverflow.com/questions/635446/svn-is-there-a-way-to-mark-a-file-as-do-not-commit –
@ire_and_curses: Primero, ¿por qué no escribes esto como respuesta? Segundo: estas dos preguntas tratan de evitar que algo se comprometa. Esto no tiene nada que ver con mi problema en absoluto. Incluso si hago svn delete en el directorio y evito que esto se confirme, el directorio no desaparecerá. ¿Has leído mi pregunta o solo el titular? – Mecki
@Mecki: Leí tu pregunta, aunque admito que tienes prisa. Creí * que estabas preguntando cómo eliminar un directorio controlado por versión en la copia local sin afectar la versión del repositorio, y sin recuperar el directorio en la próxima actualización. Aunque no lo he probado, parece que hacer que todo lo demás sea miembro de una lista de cambios hará exactamente eso. No escribí esto como una respuesta porque ya existe en las otras dos preguntas (que pensé que eran las mismas). Si tuviera razón, me gustaría obtener un representante para el trabajo de otra persona. Lo siento si esto no te sirve. –