Colocación de carpetas seleccionadas bajo control de versiones

Tengo un repository SVN en mi server alojado (Linux), y necesito hacer un trabajo local en ellos en mi máquina Windows (tortuga svn instalado). Para simplificar mi pregunta, la estructura dir se ve así:

 raíz
 | -------- sub1
 | -------- sub2
 | -------- sub3
 ...
 | -------- subN

con subcarpetas adicionales debajo de cada subX. Supongamos que solo quiero ciertas subcarpetas de "sub1" y "sub3" bajo control de versión. Pero en Windows, cuando confirmo un cambio con tortoisesvn, aún quiero poder hacer clic con el button derecho en la carpeta raíz, presionar "commit" y tener confirmados los cambios que existan en cualquier lugar en la raíz de las carpetas seleccionadas. El problema es que creo que usar ignorar sería muy engorroso, ya que habría tantas carpetas que ignorar, en diferentes niveles de estructura.

Así que, básicamente, quiero poner todo bajo control de versión, y luego decirle a svn "ok, ahora ignora todo excepto X e Y". ¿Cuál es la forma más fácil de lograr esto?

Gracias, Jonás

Busque la información en Sparse Directories en el Manual de Subversion .

Esto requerirá un poco de trabajo, y no sé si TortoiseSVN lo admite, pero hará lo que usted desee.

Cuando haga su pago inicial, debe usar la opción --depth=empty . Esto revisará su repository, pero sin ninguna carpeta en el directory de trabajo. Luego, para cada carpeta que desee, debe hacer una svn update --set-depth infinity . Eso actualizará esa única carpeta y la mantendrá actualizada.

 $ svn co --depth=empty http://svn/repos/project/trunk myproj checked out revision 123133 $ cd myproj $ svn update --set-depth=infinity sub1 [yadda, yadda, yadda] $ svn update --set-depth=infinity sub2 [yadda, yadda, yadda] 

Si no te importa un montón de carpetas vacías en tu directory de trabajo, podrías utilizar immediates lugar de empty . Eso revisará todo en ese nivel, pero no en subdirectorys. Verá carpetas, pero no contendrán nada. Luego, puede hacer svn update en las carpetas que desee. Pero, si no usa --set-depth sus subcarpetas tendrán problemas para actualizar más adelante.

Con CVS (el pnetworkingecesor de SVN) había un file .cvsIgnore. Me imagino que no hay un file .svnIgnore con SVN, pero sé que hay una funcionalidad svn: ignore. Prueba una búsqueda en Google del "file .svnIgnore" para ver si alguno de ellos se ajusta a tus necesidades.

Con Svn, no puede agregar cosas en una carpeta que no está bajo control de versión, sin agregar el directory raíz.

svn: ignorar ignorará los files (desde un svn status ) de acuerdo con su patrón. es decir. svn propset svn:ignore "*.xml" folder/ ignoraría cualquier file xml (NO bajo el control de la versión) en el directory de la carpeta. Por lo tanto, no lo ayudaría porque, una vez que agrega un file y trata de ignorarlo, cualquier modificación posterior se tomaría en consideración para una confirmación.

Debido a que torty svn agrega automáticamente cualquier file creado (usando la interfaz gráfica de usuario), debería revertir las modificaciones de las carpetas que desea excluir.

Espero que esto ayude

No creo que haya una manera de ignorar todo y luego no ignorar los específicos. Tendrás que ignorar los que quieres ignorar. El command que uso para esto es:

 svn propset svn:ignore "sub1 sub2 sub3 ... subN" ./rootDir 

Tendrá que importar los directorys que desee en svn, luego ejecutar el propset y luego confirmar. A continuación, agregue los directorys ignorados reales al directory raíz.

EDIT: error en lo de arriba. Debería ser:

  svn propset svn:ignore -F file.txt ./rootDir 

La razón es que para múltiples properties dadas a propset necesita que sean separadas por línea nueva. Mira aquí .

Entonces, para su problema anterior, yo haría:

 ls > file.txt 

A continuación, borre los directorys que desea que controlen la versión, luego llame a svn propset desde arriba con ese file.