subir - svn tortoise import




Determine el tamaño total del directorio/tronco SVN (4)

Adoptando de las soluciones anteriores, lo siguiente podría ser útil

#------------------------- Show Repositories, Revisions and Individual Sizes -------------------- SuN ---  2011-11-14 -- {

CSVN_DIR=/opt/csvn

cd ${CSVN_DIR}

REPO_PREFIX="${CSVN_DIR}/data/repositories"
REPO_SUFFIX="db/current"


for i in `ls ${REPO_PREFIX}/*/${REPO_SUFFIX} `
do
  if [ -f $i ]
  then
    FILENAME=`ls -l $i`
    REV_NO=`cat $i`
    REPONAME=`echo  $i | awk '{ srch="'${REPO_PREFIX}'/";  idx = index($0,srch); xstr=substr($0,idx + length(srch)); idx = index(xstr, "/'${REPO_SUFFIX}'"); print substr(xstr,1,idx-1)}'`

    #REPONAME=sn_library

    ${CSVN_DIR}/bin/svn list --verbose --recursive https://vctl.ds.xxxxxx.in:9501/svn/${REPONAME} | awk 'BEGIN {repo="'${REPONAME}'"; rev="'${REV_NO}'";} {print "Repository: " repo " Revision: " rev $0 } '
  fi
done
#------------------------- Show Repositories, Revisions and Individual Sizes -------------------- SuN ---  2011-11-14 -- }

o

#------------------------- Show Versions of Repositories and Total Size -------------------- SuN ---  2011-11-14 -- {

CSVN_DIR=/opt/csvn
cd ${CSVN_DIR}

REPO_PREFIX="${CSVN_DIR}/data/repositories"
REPO_SUFFIX="db/current"


for i in `ls ${REPO_PREFIX}/*/${REPO_SUFFIX} `
do
  if [ -f $i ]
  then
    FILENAME=`ls -l $i`
    REV_NO=`awk '{print $1; exit}' $i`
    REPONAME=`echo  $i | awk '{ srch="'${REPO_PREFIX}'/";  idx = index($0,srch); xstr=substr($0,idx + length(srch)); idx = index(xstr, "/'${REPO_SUFFIX}'"); print substr(xstr,1,idx-1)}'`

    #REPONAME=sn_library
    COL_PREFIX="Repository:\t${REPONAME}\tRevision No:\t${REV_NO}\t${FILENAME}"

    COL_PREFIX=`echo "${COL_PREFIX}" | awk '{xstr = $0; gsub(" ","_",xstr); gsub(":","_",xstr); print xstr;}'`


    ${CSVN_DIR}/bin/svn list -vR https://vctl.ds.xxxxxx.in:9501/svn/${REPONAME} | awk 'BEGIN{xstr="'${COL_PREFIX}'"} {if ($3 !="") sum+=$3; i++} END {print xstr "\tTotal size= \t" sum/1024/1024 "\tMB" "\t spread across \t" i "\tfiles/folders "}'

  fi
done

#------------------------- Show Versions of Repositories and Total Size -------------------- SuN ---  2011-11-14 -- }


¿Hay alguna manera de contar / calcular el tamaño total de un directorio svn si fuera a finalizar una revisión?

Tengo descargas de internet limitadas, así que necesito saber qué tan grande es algo antes de ir y descargarlo.

Gracias.


Esta es mi modificación a la respuesta. Informa cuántos archivos están debajo de cierto directorio en svn y el tamaño total.

svn list -vR svn://svn/repo/subdir|awk '{if ($3 !="") sum+=$3; i++} END {print "\ntotal size= " sum/1024000" MB" "\nnumber of files= " i/1000 " K"}'

Puede usar el modo XML del comando de lista Subversion y sumar el tamaño del archivo.

En Linux / UNIX:

$ svn list --xml --recursive http://svn.example.org/module/trunk | awk -F'[><]' \
      '/^ *<size>/ {s+=$3} END {printf("%.1f GiB\n", s/1024/1024/1024)}'

Tenga en cuenta que el uso del disco de una descarga de svn real es básicamente el doble de lo calculado anteriormente, porque en la salida tiene los archivos en el directorio de trabajo y en la memoria caché de revisión bajo el directorio / directorios especiales .svn .

Alternativamente, si no está demasiado preocupado por el uso de RAM, utiliza una expresión XPath para calcular la suma, por ejemplo:

$ printf '%.1f GiB\n' $(svn list --xml --recursive \
     http://svn.example.org/module/trunk | xmlstarlet sel -t -v \
       'sum(/lists/list/entry/size) div 1024 div 1024 div 1024')

O:

$ printf '%.1f GiB\n' $(svn list --xml --recursive \
     http://svn.example.org/module/trunk | xmllint --xpath \
       'sum(/lists/list/entry/size) div 1024 div 1024 div 1024' -)

El uso de dicho procesador XPath en un repositorio con muchos archivos puede producir un alto uso de memoria porque las herramientas como xmllint (que usa libxml2) a menudo construyen el árbol de documentos completo en la memoria antes de comenzar a sumar sobre los elementos.


Usando el siguiente, puede determinar el tamaño de los archivos individuales.

svn list --verbose --recursive http://svn/repo/path

Tal vez puedas mirar alrededor de este comando para encontrar una manera?





size