Subversion: Cómo mantener una versión separada de un proyecto como subdirectory de otro proyecto

Quiero copyr un proyecto de subversión (/ signature_paper) en un subdirectory de otro proyecto de subversión (/ tesis). Haré cambios en / tesis / firma_papel que no volverán al documento de firma original. Al mismo time, deseo que / thesis / signature_paper recoja todos o la mayoría de los cambios realizados en / signature_paper.

Idealmente me gustaría que esto fuera como un único proyecto de subversión, es decir, svn co http: // blah / tesis de tesis me da todo, incluyendo / tesis / signature_paper.

No estoy seguro de si la bifurcación y la fusión periódica de / signature_paper pueden hacer esto por mí o no, ni cómo hacerlo si es así. He usado sucursales en Clearcase hace años, pero nunca configuré las mías. Configuré nuestro repository svn sin utilizar un layout / trunk originalmente. Usualmente uso el cliente de command-line pero puedo usar Tortoise si me sirve.

¿Hay alguna manera fácil de lograr esto? Periódicamente rehice un proyecto análogo la última vez que tuve esta necesidad (extrayendo un documento en evolución en un documento más grande), y fue un verdadero dolor.

Editar: Hmm, ¿entonces funciona solo para hacer algo como lo siguiente?
% tesis de cd
% svn co bla / signature_paper
% encontrar . -name .svn -exec rm -rf {} \;
% svn agregar signature_paper

¿Luego usar svn merge desde / signature_paper a / thesis / signature_paper?

Asegúrese de tener confirmaciones 'únicas' para los cambios que se fusionarán. Cómo fusionar solo revisiones específicas explica cómo 'sincronizar' sus documentos. Dividir el text en varios subdocumentos podría ayudar. Subversion no obliga a la disposition del directory, usted es libre de crear un layout de directory que se adapte mejor a usted.

El enfoque más fácil es aislar las secciones de text comunes en files separados, poner en la carpeta común. Estos párrafos se incluyen con \ input {name} en su tesis o trabajo.

En los casos en que no puede o no quiere mantener un file común, la tesis y el documento deben fusionarse para intercambiar contenido. Tengo dos enormes documentos en mente. Como es posible que no sincronice todo el contenido, los cambios que se fusionarán entrarán en una 'revisión'. En otras palabras, su copy de trabajo está actualizada. Aplica sus cambios y realiza una confirmación. Luego fusiona esta revisión exacta con el otro documento.

-el maletero
–tesis
–paper1
–paper2
–común

Podrías simplemente configurarlo con svn:externals , que (si no anotas los numbers de revisión) se actualizará con el rest del pago. Solo asegúrate de no comprometer desde tu directory externo (contrario a las update , commit 's no cometes svn:externals , creo, pero es posible que quieras probar eso

Un ejemplo, para get más información, consulte la documentation sobre svn:externals :

 $ svn co http://blah/thesis $ cd thesis $ svn ps svn:externals 'signatur_paper http://blah/signature_paper' . $ svn up Fetching external item into 'signature_paper' A signature_paper/ .... Updated external to revision N. Updated to revision N. $ svn info . .... URL: http://blah/thesis .... $ svn info signature_paper .... URL: http://blah/signature_paper .... 

La actualización también se realiza de forma externa:

 $ svn up Fetching external item into 'signature_paper' External at revision N. At revision N. 

El compromiso no se compromete desde puntos externos, a less que lo haga explícitamente en el directory:

 $ touch signature_paper/test $ svn add signature_paper/test A signature_paper/test $ svn ci -m'test' //nothing happens....... $ svn ci -m'test' signature_paper/ Adding test Transmitting file data . Committed revision N.