Add bash_scripts/azure/count_repo_files.sh
This commit is contained in:
parent
22529fd6cc
commit
d34da2599e
63
bash_scripts/azure/count_repo_files.sh
Normal file
63
bash_scripts/azure/count_repo_files.sh
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# === Настройки ===
|
||||||
|
SERVER="http://mytfs.mycompany.com:8080/tfs" # URL сервера
|
||||||
|
COLLECTION="DefaultCollection" # Имя коллекции
|
||||||
|
PROJECT="MyProject" # Имя проекта
|
||||||
|
PAT="abc123xyzabcdef1234567890" # Personal Access Token
|
||||||
|
REPO_DIR="./repos" # Локальная папка для репозиториев
|
||||||
|
|
||||||
|
# === Формирование URL ===
|
||||||
|
REPOS_URL="${SERVER}/${COLLECTION}/${PROJECT}/_apis/git/repositories?api-version=5.0"
|
||||||
|
|
||||||
|
# === Создание директории для репозиториев ===
|
||||||
|
mkdir -p "$REPO_DIR"
|
||||||
|
|
||||||
|
# === Получение списка репозиториев через REST API ===
|
||||||
|
echo "Получение списка репозиториев из проекта '$PROJECT'..."
|
||||||
|
AUTH_HEADER=$(echo -n ":$PAT" | base64)
|
||||||
|
|
||||||
|
response=$(curl -s -H "Authorization: Basic $AUTH_HEADER" "$REPOS_URL")
|
||||||
|
repo_names=$(echo "$response" | jq -r '.value[].name')
|
||||||
|
|
||||||
|
if [ -z "$repo_names" ]; then
|
||||||
|
echo "Не удалось получить список репозиториев. Проверь URL, PAT и имя проекта."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# === Вывод заголовков таблицы ===
|
||||||
|
printf "| %-30s | %-12s | %-12s |\n" "Репозиторий" "Файлов" "Размер"
|
||||||
|
printf "|--------------------------------|--------------|--------------|\n"
|
||||||
|
|
||||||
|
# === Обход каждого репозитория ===
|
||||||
|
for repo in $repo_names; do
|
||||||
|
echo "Обработка репозитория: $repo"
|
||||||
|
|
||||||
|
# URL репозитория
|
||||||
|
GIT_URL="${SERVER}/${COLLECTION}/_git/${repo}"
|
||||||
|
|
||||||
|
# Путь к локальному репозиторию
|
||||||
|
local_path="${REPO_DIR}/${repo}"
|
||||||
|
|
||||||
|
# Клонируем, если ещё не существует
|
||||||
|
if [ ! -d "$local_path" ]; then
|
||||||
|
echo "Клонирование репозитория $repo..."
|
||||||
|
git clone "$GIT_URL" "$local_path" --quiet
|
||||||
|
else
|
||||||
|
echo "Репозиторий уже существует: $repo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Переход в директорию
|
||||||
|
cd "$local_path" || continue
|
||||||
|
|
||||||
|
# Подсчёт файлов
|
||||||
|
file_count=$(find . -type f | wc -l)
|
||||||
|
|
||||||
|
# Подсчёт размера
|
||||||
|
size=$(du -sh . | awk '{print $1}')
|
||||||
|
|
||||||
|
# Вывод информации
|
||||||
|
printf "| %-30s | %-12s | %-12s |\n" "$repo" "$file_count" "$size"
|
||||||
|
|
||||||
|
cd - > /dev/null
|
||||||
|
done
|
||||||
Loading…
x
Reference in New Issue
Block a user