Witajcie
Dziś postanowiłem opublikować mały acz niezwykle przydatny skrypt Bash dzięki któremu tworzenie patchy do kopiowania jest niezwykle proste i przyjemne.
Skrypt
#!/bin/bash
current_branch=$(git br --no-color | grep '\*' | sed 's/* //')
echo -e "$(tput setaf 2)[II] == Aktualna gałąź: $(tput setaf 3)$current_branch$(tput sgr 0)";
if [ ! -n "$3" ];
then
echo -e "$(tput setaf 2)[II] == Przełączam na gałąź: $(tput setaf 3)master$(tput sgr 0)";
echo -e "$(tput setaf 4)"
git co master
echo -e "$(tput sgr 0)"
fi;
# Get 2 last tags if no $1 or $2 parameter
OLD_IFS=$IFS
IFS=$'\n'
last_tags=( $(git tag | sort -V | tail -2) )
IFS=$OLD_IFS
tag_from=${last_tags[0]}
if [ -n "$1" ];
then
tag_from="$1"
fi;
tag_to=${last_tags[1]}
if [ -n "$2" ];
then
tag_to="$2"
fi;
echo -e "$(tput setaf 2)[II] == Wybrany przedział: $(tput setaf 3)$tag_from - $tag_to$(tput sgr 0)";
echo -e "$(tput setaf 4)"
git diff --name-only "$tag_from..$tag_to" | xargs -I {} rsync -R {} "path-$tag_to/"
echo -e "$(tput sgr 0)"
echo -e "$(tput setaf 2)[II] == Utowżono folder: $(tput setaf 3)path-$tag_to/$(tput sgr 0)";
echo -e "$(tput setaf 2)[II] == Powrót do gałęzi: $(tput setaf 3)$current_branch$(tput sgr 0)";
echo -e "$(tput setaf 4)"
git co "$current_branch"
echo -e "$(tput sgr 0)"
Opis
Skrypt wywołujemy z maksymalnie 3 parametrami:
make_path.sh 1.0 1.2 1
gdzie:
– 1.0
– Tag lub hash źródłowy
– 1.2
– Tag lub hash docelowy
– 1
– generowanie patch w obecnym branchu (domyślnie w master
)
Skrypt wywołany bez parametrów tworzy patch z 2 ostatnich tagów na gałęzi master
.
Jako wyjście skryptu generowany jest katalog o nazwie patch-tag
z plikami zmodyfikowanymi pomiędzy wybranymi wersjami.
Można pomijać parametry od końca (nie można pominąć np. tylko pierwszego)
Przykładowe wywołanie
$ u_path.sh 1.0.25 1.0.30
[II] == Aktualna gałąź: dev
[II] == Przełączam na gałąź: master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
[II] == Wybrany przedział: 1.0.25 - 1.0.30
[II] == Utowżono folder: path-1.0.30/
[II] == Powrót do gałęzi: dev
Switched to branch 'dev'
Your branch is up-to-date with 'origin/dev'.
$ u_path.sh
[II] == Aktualna gałąź: dev
[II] == Przełączam na gałąź: master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
[II] == Wybrany przedział: 1.0.29 - 1.0.30
[II] == Utowżono folder: path-1.0.30/
[II] == Powrót do gałęzi: dev
Switched to branch 'dev'
Your branch is up-to-date with 'origin/dev'.