Cómo hacer que SVN ignore un directorio dentro de una definición externa

3 minutos de lectura

avatar de usuario
NerdStarGamer

Estoy usando subversion para alojar mi propio repositorio para una instalación de WordPress. Lo configuré para que todos los archivos principales de WordPress estén en su propio directorio (llamado wordpress) y configurado para usar svn: externals para vincular al repositorio de WordPress. Luego tengo mi propia copia del directorio wp-content (ubicado fuera del directorio de wordpress) que no usa svn: externals. Esta todo trabajando bien.

Cuando actualizo mi repositorio, el núcleo de WordPress se actualiza. Dado que el repositorio de WordPress contiene su propio directorio wp-content, también actualiza ese directorio. Así que mi estructura de archivos termina luciendo algo como esto:

/
--/wordpress/   (wordpress repo)
-----/wp-admin/
-----/wp-content/
--/wp-content/  (my local repo)

Termino teniendo dos versiones separadas de la carpeta wp-content (una de mi repositorio y otra del repositorio de WordPress). No quiero el del repositorio de WordPress (o al menos no en esa ubicación). ¿Hay alguna manera de configurar svn para que ignore el directorio wordpress/wp-content mientras sigo usando la definición externa?

  • No lo sé, pero supongo que podría intentar establecer un svn:ignore propiedad en el directorio raíz y ver qué sucede. Sin embargo, es probable que no funcione.

    – Peka

    21 de enero de 2010 a las 21:02

  • Eso no parece funcionar. Tan pronto como actualizo mi copia de trabajo, vuelve a descargar los archivos wp-content.

    – NerdStarGamer

    21 de enero de 2010 a las 21:41

  • Llegué un poco tarde a esto, pero no creo que sea un problema tener el contenido de wp duplicado. Suponiendo que ha definido el WP_CONTENT_DIR a algo como define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' ); entonces WordPress ignorará su propio directorio wp-content.

    – icc97

    9 de abril de 2014 a las 12:56

Lo que realmente estás preguntando es, “¿Puedes especificar --depth por svn:externals” y la respuesta es no. Los elementos externos actualmente son completamente recursivos en el directorio especificado.

Edición 3216 solicita esta funcionalidad, pero no parece que vaya a llegar pronto.

  • Mmm, ok. Supuse que no podías hacer lo que yo quería, pero esperaba haberme perdido algo. Gracias.

    – NerdStarGamer

    22 de enero de 2010 a las 17:40

Puede crear elementos externos separados para cada subcarpeta dentro del repositorio al que se hace referencia. Entonces, si su externo es a un repositorio con proyectos A, B y C y solo quiere A y B, entonces puede hacer dos referencias externas separadas a las subcarpetas para A y B individualmente.

Actualmente estoy haciendo esto con un proyecto, pero puede tener problemas si realmente está editando los elementos externos y comprometiéndolos, ya que los cambios en dos elementos externos separados no se pueden confirmar de forma atómica. Este problema existe incluso si los dos elementos externos en realidad apuntan al mismo repositorio, lo cual tiene sentido pero es importante tenerlo en cuenta al usar esta técnica.

Además, si usted es responsable del segundo repositorio, una opción es colocar pruebas, documentación y otras carpetas relacionadas en otro repositorio separado con elementos externos al código fuente para separarlos del repositorio de código principal. De esta forma, estas carpetas no se extraerán al hacer una referencia externa debido a las dependencias del código.

Puedes hacer esto con directorios dispersos (también conocido como cajas poco profundas). No estoy 100% seguro de que funcione cuando se usan elementos externos, pero no veo por qué no lo haría.

  • No creo que directorios dispersos sea lo que quiero. Quiero poder configurar mi repositorio svn para ignorar siempre este archivo en particular (dentro de la definición externa) y luego olvidarlo. No quiero tener que escribir cosas adicionales cada vez que hago cambios.

    – NerdStarGamer

    21 de enero de 2010 a las 21:43

¿Qué sucede si intenta eliminar el directorio wp-content local, pero lo hace a través de SVN? es decir.

svn rm /wordpress/wp-content

De esta manera, SVN debería recordar sus cambios, y asumo que no está enviando cosas al repositorio de WordPress, por lo que no necesita preocuparse por confirmarlo accidentalmente.

¿Ha sido útil esta solución?