Подтвердить что ты не робот

Определение общего размера каталога/соединительной линии SVN

Есть ли способ подсчитать/вычислить общий размер каталога svn, если вы хотите проверить версию?

У меня ограниченная загрузка через Интернет, поэтому мне нужно знать, как много чего стоит, прежде чем я пойду и скачаю его.

Спасибо.

4b9b3361

Ответ 1

Используя ниже, вы можете определить размер отдельных файлов.

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

Возможно, вы можете осмотреть эту команду, чтобы найти способ?

Ответ 2

Это моя модификация ответа. Он сообщает, сколько файлов находится ниже определенного каталога в svn и общем размере.

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"}'

Ответ 3

Я тестировал решение PowerShell, и ему просто нужна небольшая коррекция:

([xml](svn list --xml --recursive https://svn/repo/path)).lists.list.entry | measure-object -sum size

Это время, чтобы получить xml, но работает очень хорошо.

Ответ 4

Принятие решений из приведенных выше решений может быть полезным

#------------------------- 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 -- }

или

#------------------------- 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 -- }


Ответ 5

Вы можете использовать режим XML команды списка Subversion и суммировать размер файла.

В 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)}'

Обратите внимание, что использование диска для фактической проверки svn в основном в два раза больше, чем указано выше, потому что в контроле у ​​вас есть файлы в рабочем каталоге и в кеше ревизии в специальном каталоге/каталогах .svn.

В качестве альтернативы, если вы не слишком озабочены использованием ОЗУ, вы используете выражение XPath для вычисления суммы, например:

$ 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')

Или:

$ 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' -)

Использование такого процессора XPath в репозитории со многими файлами может привести к большому использованию памяти, поскольку такие инструменты, как xmllint (который использует libxml2), часто создают полное дерево документа в памяти, прежде чем начинать суммирование по элементам.