Git-ftp
Straipsnis skirtas git-ftp irankio panaudojimui production aplinkose. Irankis skirtas deti naujausias ar tam tikras git revizijas i nurodyta ftp
Idiegiam[keisti]
apt-get install python-setuptools git clone https://github.com/ezyang/git-ftp.git cd git-ftp make&&make install
Paruosiam repozitoriu[keisti]
git clone https://repozitoriaus.url.lt/repozitorius.git cd repozitorius mkdir .git nano .git/ftpdata
Sudedam ftp prisijungimo informacija
[master] username=ftpuser password=ftppass hostname=hostname.lt remotepath=/public_html ssl=no
Dabar galima daryti upload i serveri
git-ftp[keisti]
git-ftp # pirma karta suuploadina visus failus, antra karta tik failu pakeitimus git-ftp -f # bet kokiu atveju paleidziamas totalus failu uploadas git-ftp -r revision_nr # sudedamas tiktai nurodytas revision numeris
Pagalbinis scriptukas[keisti]
Jeigu scriptui nepateiktas revisionas tuomet jis deda paskutiniojo pakeitimus.
#!/bin/sh
export GIT_SSL_NO_VERIFY=1
data=`date`
# visada buna pirmas kartas
#git clone https://repozitoriaushostas.lt/repozitorius.git
# vaziaujam toliau
echo "Atnaujinimo da: $data"
git pull https://repozitoriaushostas.lt/repozitorius.git
# pries tai pasiredaguojam .git/ftpdata current repozitoriaus directorijoje
if [ "$1" != "" ]; then
echo "Nustatom pagal revisiona: $1"
git-ftp -r "$1"
else
echo "Nustatom naujausia revisiona"
git-ftp -f
fi
Pagalbininkas scriptas v2[keisti]
Tai scriptas kuris leis pasirinkti ftp serveri, toliau paruos config faila ftp-git'ui, kad galetume daryti git-ftp commitus. Pries tai tiesiog reiktu pasiruosti ftp sarasa ~/.git-ftpadr. Sarasas atrodytu mazdaug taip:
hostas1::username::pass::/dir hostas2::username2::pass2::/dir2 hostas3::username3::pass3::/dir3
Tuomet sudeti pati scripta i /usr/local/bin/git-up ir padaryti ji paleidziamuoju chmod +x /usr/local/bin/git-up. Scripta reiktu leisti is repozitoriaus direktorijos kur norime sukurti .git/ftpdata faila. Pats /usr/local/bin/git-up scriptas:
#!/usr/bin/perl
# git-up uploadas pagal jau paruostus sablonus is failo ~/.git-ftpadr paruosia git-ftp prisijungimo duomenis
# scripta reiktu leisti is repozitoriaus direktorijos, kur turetu egzistuoti .git/ftpdata failas
# v1.2 - su spalvomis :-)
use strict;
use warnings;
my $filename = glob('~/.git-ftpadr');
my $eilute = 1;
if (open(my $fh, '<:encoding(UTF-8)', $filename)) {
printf "\e[31mGalimi serveriu pasirinkimai: \e[0m\n";
while (my $row = <$fh>) {
chomp $row;
my ($host, $user, $pass) = split("::",$row);
printf "\e[34m[$eilute] \e[35m- \e[1;33mHost: $host, User: $user\e[0m\n";
$eilute++;
}
printf "\e[37mKuri eilute: \e[0m";
my $input = <STDIN>;
open my $fh, '<', $filename or die "\e[31mNegalima atidaryti failo '$filename' $!\e[0m";
my $line;
while( <$fh> ) {
if( $. == $input ) {
$line = $_;
last;
}
}
my ($host, $user, $pass, $dir) = split("::",$line);
printf "\e[30mJusu pasirinkimas: $host, $user\e[0m\n";
open (my $fa, ">", ".git/ftpdata");
my $exclaim = $!;
if (tell $fa ){
die "\e[31mNeimanoma atidaryti failo - $exclaim\e[0m";
}
chomp($dir);
print $fa "[master]\nusername=$user\npassword=$pass\nhostname=$host\nremotepath=$dir\nssl=no\n";
close($fa);
printf "\e[34mDabar drasiai galite leisti git-ftp\e[0m\n";
} else {
warn "\e[31mNegalima atidaryti failo '$filename' $!\e[0m";
}
Patobulintas fetch scriptukas dirbti su siuo nauju navarotu. Jeigu paduosime parametra 1 duos uzklausa su ftp sarasu
#!/bin/sh
export GIT_SSL_NO_VERIFY=1
data=`date`
# visada buna pirmas kartas
#git clone https://git_repozitorius.lt/repozitorius.git
# vaziaujam toliau
echo "Atnaujinimo da: $data"
git pull https://git_repozitorius.lt/repozitorius.git
# pries tai pasiredaguojam .git/ftpdata current repozitoriaus directorijoje
if [ "$2" != "" ] || [ "$1" -eq "1" ]; then
git-up
fi
if [ "$1" != "" ] && [ "$1" -ne "1" ]; then
echo "Nustatom pagal revisiona: $1"
git-ftp -r "$1"
else
echo "Nustatom naujausia revisiona"
git-ftp -f
fi