Есть ли способ подсчитать/вычислить общий размер каталога svn, если вы хотите проверить версию?
У меня ограниченная загрузка через Интернет, поэтому мне нужно знать, как много чего стоит, прежде чем я пойду и скачаю его.
Спасибо.
Есть ли способ подсчитать/вычислить общий размер каталога svn, если вы хотите проверить версию?
У меня ограниченная загрузка через Интернет, поэтому мне нужно знать, как много чего стоит, прежде чем я пойду и скачаю его.
Спасибо.
Используя ниже, вы можете определить размер отдельных файлов.
svn list --verbose --recursive http://svn/repo/path
Возможно, вы можете осмотреть эту команду, чтобы найти способ?
Это моя модификация ответа. Он сообщает, сколько файлов находится ниже определенного каталога в 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"}'
Я тестировал решение PowerShell, и ему просто нужна небольшая коррекция:
([xml](svn list --xml --recursive https://svn/repo/path)).lists.list.entry | measure-object -sum size
Это время, чтобы получить xml, но работает очень хорошо.
Принятие решений из приведенных выше решений может быть полезным
#------------------------- 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 -- }
Вы можете использовать режим 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), часто создают полное дерево документа в памяти, прежде чем начинать суммирование по элементам.