Bash скрипт для закрытия нескольких удаленных веток из текстового файла - PullRequest
1 голос
/ 19 сентября 2019

Фон

Мне нужно закрыть несколько веток Git (сотни), которые были оставлены открытыми в удаленном хранилище.

Я хотел отсортировать их по последнимзафиксировать и поместить их в текстовый файл, чтобы другие могли подтвердить, что они больше не нужны.

Я нашел метод, который позволил мне создавать дампы таким образом, чтобы я мог их распространять (и открывать в Excel для сортировки по дате)

git for-each-ref --format='%(committerdate:short) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n >> branches.txt

А затем мне нужно прочитать обновленныйверните текстовый файл и удалите удаленные ветви:

#!/bin/bash

#prefix of the branches if they are all remote
prefix="refs/remotes/origin/"
prefix1="refs/remotes/"

# path to branches, compiled with:
# git for-each-ref --format='%(committerdate:short) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n >> branches.txt

# read through entire input
input="branches.txt"
while IFS= read -r line
do
  # echo "$line"]
  IFS=' ' read -r -a array <<< "$line"
  # search the array for the prefix of the branch
  for index in "${!array[@]}"
  do

    if [[ ${array[$index]} == *"refs/remotes/origin"* ]]; then
      #echo -e " \e[34m ${array[$index]} \e[39m Last commit: \e[34m" ${array[0]} ${array[1]} ${array[2]} ${array[3]} ${array[4]} 
      # echo ${array[$index]#"$prefix"}

      #remove the prefix if they are not pulled locally
      branch=${array[$index]#"$prefix"}

      echo $(git push origin --delete $branch)
    fi
  done
done < "$input"

Issue

Однако, продолжайте получать ошибку, что refspec не существует:

fatal: invalid refspec ': PracticeBranch?'

У меня нет ' или ? в имени переменной branch - так что этоВозможно, мое невежество относительно использования echo с `bash, но я не знаю, откуда оно.

Команда типа:

git push origin --delete PracticeBranch

При вызове непосредственно из оболочки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...