Для моей рабочей среды в настоящее время я создаю сценарий, чтобы легко переключаться между ветками разработки и выпуска. К сожалению, репо не всегда имеют одинаковое имя ветви, поэтому я проверяю, существует ли ветка и была ли ветка уже объединена с мастером. Если ветвь не была объединена с master, я знаю, что у меня последняя ветвь релиза.
set repo_has_changes (git status --porcelain --untracked-files=no)
if test -n $repo_has_changes
echo 'Repo has changes...'
else
git checkout master
for b in $releaseVersions
set branch_on_origin (git branch -r --list origin/$b)
set branch_not_merged_to_master (git branch -r --list --no-merged master origin/$b)
if test -n $branch_on_origin
if test -z $branch_not_merged_to_master
git checkout $b
git pull
break
end
end
end
end
Из-за своего невежества я думал, что я сохраню результат моей команды git и сохраню его в переменной. Я интерпретировал это как строку. Согласно документации рыбы, я могу проверить, не является ли строка ненулевой.
-n STRING возвращает true, если длина STRING не равна нулю.
Этоскрипт всегда будет отображать «Репо имеет изменения ...», в то время как я уверен на 100%, что изменений нет. Если я отображаю $ repo_has_changes, я вижу пустую строку. Также, если я проверяю длину строки (на случай, если строка возвращает пробелы? XD), она также возвращает пустую строку. Поэтому моё предположение, что $ repo_has_changes - это строка, может быть неверным. Также я не уверен, что смогу сохранить результат git таким способом. К сожалению, я не смог найти хороший источник для этого.