Rebase una twig de Subversion de larga vida

Tengo un repository SVN grande (~ 40k de revisiones), en el que se creó una twig de características particular hace mucho time (aproximadamente 15k) para la versión actual del producto. Sin embargo, otras cosas tuvieron prioridad y se retrasaron algunas versiones, hasta ahora.

Con el time, la sucursal se mantuvo actualizada con fusiones de troncales y otras subdivisiones, y aún se desarrolla y funciona bien en su estado actual.

Sin embargo, intentar switch entre esta twig y el tronco da como resultado muchas acciones de borrado de lectura (presumiblemente porque desde el punto de bifurcación común, los files se agregaron a la troncal y luego se fusionaron a la twig de características, por lo que ahora se ven como reemploops en lugar de modificaciones). Si bien esto no es directamente dañino en sí mismo en un tree limpio, sí se pierde el time y el tráfico de la networking y causa conflictos importantes en lugar de fusiones silenciosas si se cambia con un tree sucio.

En consecuencia, me gustaría volver a establecer una base de esta sucursal borrándola, creando una nueva bifurcación nueva desde el tronco actual, y luego fusionando todos los cambios "reales" de la twig anterior. (La idea es que esto simplificará los conmutadores futuros y hará que sea más fácil ver cuáles son los cambios reales).

La mayoría de los consejos que puedo encontrar sobre el tema dicen simplemente merge old-feature-branch y dejar que el seguimiento de fusión se encargue del rest. Sin embargo, lo he intentado (hasta ahora solo con el button Prueba de combinación de TSVN) algunas veces y con algunos subsets más pequeños de revisiones, pero inevitablemente tengo conflictos masivos en todo tipo de files que nunca deberían haber sido tocados por los viejos. feature-branch en primer lugar.

Cuando lo bash con una combinación real (a partir de una copy de trabajo en new-feature-branch, svn merge svn://url/branches/old-feature-branch ), svn merge svn://url/branches/old-feature-branch este error:

 svn: E160013: File not found: revision 38143, path '/branches/new-feature-branch' 

Lo cual, está bien, claro, la nueva twig de características no se creó hasta 38509, entonces no existe. Pero no sé por qué parece pensar que podría ser así. Esa revisión en particular no era nada sofisticada, solo un pequeño cambio al trunk que ya debería estar en la historia de la nueva function de la twig y por lo tanto no se fusionó de todos modos.

¿Hay alguna herramienta o procedimiento que pueda seguir que simplifique esto o solo tengo que abrirme paso a través de todas las revisiones y conflictos manualmente? Estoy de acuerdo con "aplastar" el historial en una única confirmación o una serie más pequeña de confirmaciones que las que se hicieron originalmente en la sucursal.

  1. "Merge Hell" para fusionar old-feature-branch en trunk y old-feature-branch en new-feature-branch no será muy diferente: ambas fusiones comenzarán desde el mismo (muy antiguo) branchpoint, new-feature-branch path ser incluso 1 revisión más time
  2. Para SVN 1.6+ (pero sugiero 1.8+ con realmente más fácil y más inteligente / que 1.6 / merge) puedes intentar (pero no esperes el milagro en cualquier caso) fusionar usando tanto la revisión operativa como la de peg en la fuente de fusión (usando JEFE de old-feature-branch )
  3. Para cualquiera de las fusiones gigantes, puede get una list de revisiones no svn mergeinfo --show-revs eligible ... entre treees svn mergeinfo --show-revs eligible ... y fusionarse paso a paso ( svn merge -c – less desastres en cada combinación)
  4. Si branch-history (para old-feature-branch ) no es importante y no es necesario en new-feature-branch , puede replace el contenido en una nueva twig
    • Exportar HEAD de old-feature-branch en $ ALGO
    • Crea una new-feature-branch de new-feature-branch desde HEAD del trunk y tráelo
    • Reemplace completamente el contenido del WC de new-feature-branch con $ ALGO
    • Confirme este historial "aplastado" de cambios como una nueva revisión de new-feature-branch
    • Olvídese de las tareas diarias sobre old-feature-branch