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