Migración PVCS a SVN – Cómo escribir tags PVCS en SVN Log Msj

Estamos en el process de migrar de PVCS a Subversion. He hecho una demostración de una import PVCS export => SVN que hace el trabajo bastante bien para nosotros, pero tenemos un problema.

Hemos hecho un uso extenso de las tags de PVCS y estas nos dan un enlace claro y consistente a nuestros numbers de Solicitud de Trabajo (WR). Cuando migramos a SVN, estas tags se convierten en tags (lo que en sí mismo es bueno) PERO también estamos implementando JIRA, por lo que necesitamos vincular la versión de SVN apropiada con un número de problema de JIRA. Esto se hace escribiendo el número de problema de JIRA en el post de logging de SVN.

Hasta aquí; en SVN Importar hora Estoy leyendo cada post de logging SVN y cuando encuentro un número de request de trabajo, anexo el número de emisión JIRA apropiado al post de logging SVN (usando un script post-commit en SVN). Sin embargo, la práctica de escribir el WR en la descripción de commit de PVCS ha sido opcional, mientras que el uso de tags de PVCS ha sido obligatorio. Por lo tanto, muchas de las versiones no tienen un número WR en el logging, solo en la label PVCS (o como se convierte en label SVN).

¿Hay alguna forma de que pueda encontrar la label de la versión PVCS durante la import de SVN? Puedo verlos en el file de volcado creado por la export de PVCS donde se vuelven parte de la ruta de nodo.

¿O alternativamente hay un informe o consulta que puedo ejecutar que me dará una list de revisiones para cada label?

Saludos Karl

Terminé orderando esto yo mismo. Si alguien más tiene el mismo problema, descubrí que era posible get una list de todas las tags usando

svn ls <repo URL including tags location> 

y luego get las versiones en esas tags usando

 svn info ... 

Y AWK la salida SVN INFO usando lo siguiente. Tenga en count que tuve que disminuir el número de versión en 1 para get la versión real que me interesaba. Creo que esto se debe a que durante la import, SVN copy la versión correspondiente a la carpeta de tags después de crear la versión, que se considera una versión.

 BEGIN { RS=""; FS = "\n"; } /^Path:/ { n1 = split($1,path,":"); n3 = split($6,nodeKind, ":"); n2 = split($9,lastRev,":"); theRev = lastRev[2] -1; printf("%8s %10s, %-75s\n", theRev, nodeKind[2], path[2]); } 

WRKEYFILE y PTKEYFILE son solo files de búsqueda .csv para hacer coincidir con un formatting de

 PT_TICKET,PKEY,Issue Title 

Luego escribí un guión de la siguiente manera …

 REPO=svn://vuwunicocsagfg1/Banner/tags REPOPATH=/var/subversion/Banner WRKEYFILE=workReq_pKey.unix PTKEYFILE=ptTicket_pKey.unix # working variables TEMPFILE=$$.tmp TAGLIST=$$.tags REVISIONS=$$.revisions SVNINFO=$$.info SVNLOOK=/usr/bin/svnlook # look up details in Subversion svn info -R $REPO | awk -f new_svn_report.awk > $SVNINFO svn ls $REPO > $TAGLIST cat $TAGLIST | awk '{ print $1}' | while read LINE do JIRAISSUE="" WRNUM="" PTNUM="" UWRNUM="" UPTNUM="" # Find Work Request or Perfect Tracker number WRNUM=$(echo "$LINE" | sed -n -e "s:.*\([wW][rR][0-9# -][0-9]\+\).*:\1:p") PTNUM=$(echo "$LINE" | sed -n -e "s:.*\([pP][tT][0-9# -][0-9]\+\).*:\1:p") # upper case the strings found and remove unwanted chars UWRNUM=`echo $WRNUM| tr 'az' 'AZ' | tr --delete '# -'` UPTNUM=`echo $PTNUM| tr 'az' 'AZ' | tr --delete '# -'` # Debug # echo "==============================" # echo "Line is: $LINE, WRNUM is: $WRNUM, PTNUM is: $PTNUM" if [[ -n "$UWRNUM" ]] then # Find the JIRA issue number awk -F',' '/'"$UWRNUM"'/ {print $2}' $WRKEYFILE | awk '{if (NR==1) {print $0}}' > $TEMPFILE JIRAISSUE=`cat $TEMPFILE` awk -F',' '/'"$UWRNUM"'/ {print $2,"; " $3}' $WRKEYFILE | tr '"' '_' | awk '{if (NR==1) {print $0}}' > $TEMPFILE NEWLOG=`cat $TEMPFILE` # all revisions in this Tag which are not directories grep $UWRNUM $SVNINFO | grep -v "directory" > $REVISIONS fi if [[ -n "$UPTNUM" ]] then # Find the JIRA issue number awk -F',' '/'"$UPTNUM"'/ {print $2}' $PTKEYFILE | awk '{if (NR==1) {print $0}}' > $TEMPFILE JIRAISSUE=`cat $TEMPFILE` awk -F',' '/'"$UPTNUM"'/ {print $2,"; " $3}' $PTKEYFILE | tr '"' '_' | awk '{if (NR==1) {print $0}}' > $TEMPFILE NEWLOG=`cat $TEMPFILE` # all revisions in this Tag which are not directories grep $UPTNUM $SVNINFO | grep -v "directory" > $REVISIONS fi if [[ -n "$JIRAISSUE" ]] then cat $REVISIONS | awk '{ print $1}' | while read REVLINE do $SVNLOOK log -r "$REVLINE" "$REPOPATH" | tr '"' '_' > $TEMPFILE OLDLOG=`cat $TEMPFILE ` if `echo $OLDLOG | grep "$JIRAISSUE" 1>/dev/null 2>&1` then LOGMSG=$OLDLOG else LOGMSG="$OLDLOG $NEWLOG" fi # Debug # echo "Jira issue is: $JIRAISSUE" # echo "update the log message for Revision $REVLINE" # echo "New log message is: $LOGMSG" # echo "***********************************" echo "svn propset --revprop -r "$REVLINE" svn:log \""$LOGMSG"\" $REPO" svn propset --revprop -r "$REVLINE" svn:log \""$LOGMSG"\" $REPO echo "" done fi done