jueves, 6 de noviembre de 2014

SVN: PROPDEL SVN:MERGEINFO

svn propdel svn:mergeinfo


Subversion controla los "merges" haciendo seguimiento mediante la propiedad "svn:mergeinfo".
A veces es necesario borrar esa propiedad de algún archivo para solucionar algún problema. Para ello usamos:
              svn propdel svn:mergeinfo


Caso de ejemplo


Problema al querer hacer un reintegrate despues de haber hecho el revert de un reintegrate:

Cuando se hace un reintegrate de una rama al tronco no conviene seguir haciendo reintegrates subsiguientes. Pero en ocaciones es necesario revertir el reintegrate para hacerlo nuevamente y ello puede traer problemas, como es el siguiente ejemplo:

Se hizo un reintegrate y commit al trunk (Committed revision 531227).
Luego se hizo un revert del commite (svn merge -c -531227 ^/trunk) dando revision 531235 (Revert Committed revision 531235).
Luego, al intentar hacer un reintegrate nuevamente del trunk para commitear surgió un problema.
Esto se puede solucionar con "svn propdel svn:mergeinfo".

...
At revision 531236.
[USER@HOME trunk]$ svn merge ^/branches/MY_BRANCH  --reintegrate
svn: E195016: Reintegrate can only be used if revisions 527399 through 531236 were previously merged from https://repositorio/trunk to the reintegrate source, but this is not the case:
  branches/MY_BRANCH/
DIR/FILE_WITH_PROBLEM.TXT
    Missing ranges: /trunk/DIR/FILE_WITH_PROBLEM.TXT:530809
  branches/MY_BRANCH/MY_DIR/FILE_WITH_PROBLEM_2.TXT.t
    Missing ranges: /trunk/MY_DIR/FILE_WITH_PROBLEM_2.TXT.t:530809

Solución en el Branch:


...
[USER@HOME trunk]$ cd $HOME/svn_workingcopy/BranchWorkingCopy
[USER@HOME BranchWorkingCopy]$ svn st
[USER@HOME BranchWorkingCopy]$ svn propdel svn:mergeinfo MY_DIR/FILE_WITH_PROBLEM_2.TXT.t
property 'svn:mergeinfo' deleted from 'MY_DIR/FILE_WITH_PROBLEM_2.TXT.t'.
[USER@HOME BranchWorkingCopy]$ svn propdel svn:mergeinfo DIR/FILE_WITH_PROBLEM.TXT
property 'svn:mergeinfo' deleted from 'DIR/FILE_WITH_PROBLEM.TXT'.
[USER@HOME BranchWorkingCopy]$ svn st
 M      DIR/FILE_WITH_PROBLEM.TXT
 M      MY_DIR/FILE_WITH_PROBLEM_2.TXT.t

[USER@HOME BranchWorkingCopy]$ svn diff -N > $HOME/merge_propdel.txt
[USER@HOME BranchWorkingCopy]$ svn commit -F $HOME/merge_propdel.txt
Sending        DIR/FILE_WITH_PROBLEM.TXT
Sending        MY_DIR/FILE_WITH_PROBLEM_2.TXT.t

Committed revision 531254.
[USER@HOME BranchWorkingCopy]$ svn up --ignore-externals
Updating '.':
At revision 531254.
[USER@HOME BranchWorkingCopy]$ svn merge --record-only -c 531227 ^/trunk
--- Merging r531227 into '.':
 G   .
--- Recording mergeinfo for merge of r531227 into '.':
 U   .
[USER@HOME BranchWorkingCopy]$ svn commit -F $HOME/merge_propdel_post.txt
svn: E000002: Can't open file '/home/USER/merge_propdel_post.txt': No such file or directory
[USER@HOME BranchWorkingCopy]$ svn diff -N > $HOME/merge_propdel_post.txt
[USER@HOME BranchWorkingCopy]$ svn commit -F $HOME/merge_propdel_post.txt


Solución en el trunk:


...
cd $HOME/svn_workingcopy/trunk
[USER@HOME trunk]$ svn st
[USER@HOME trunk]$ svn up --ignore-externals
Updating '.':
 U   .
Updated to revision 531254.
[USER@HOME trunk]$ svn merge ^/branches/MY_BRANCH  --reintegrate
--- Merging differences between repository URLs into '.':
R    MY_DIR/FILE_WITH_PROBLEM_2.TXT.t
R    DIR/FILE_WITH_PROBLEM.TXT
 G   .
--- Recording mergeinfo for merge between repository URLs into '.':
 U   .
[USER@HOME trunk]$

Despues de esto se puede hacer el commit apropiadamente.



Referencias:
http://stackoverflow.com/questions/4737605/reintegrate-can-only-be-used-if-revisions-x-through-y-were-previously-merged-fro
http://svnbook.red-bean.com/en/1.7/index.html


No hay comentarios:

Publicar un comentario