Git sen SSH

Kiu ne spertis tion: Vi bezonas rapide elŝuti ion per malmultekosta komuna gastiga pakaĵo (ekz., de IONOS). git pull Eble vi volas ruligi programon aŭ uzi datumbazon, sed via retprovizanto ne donas SSH-aliron - aŭ nur en pli multekostaj planoj. Ofte, la sola restanta eblo estas la teda procezo de mane alŝuti dosierojn per FTP, kio igas deplojojn nenecese komplikaj kaj emaj al eraroj.


Unu ebla solvo estas munti la dosiersistemon per sshfs. Teorie, tio sonas bone: Vi muntas la malproksiman dosierujon loke kaj laboras kvazaŭ la dosieroj estus sur via propra maŝino. Por fari tion, vi simple kreas lokan dosierujon kaj konektas ĝin al la servilo per la FTP/SSH-uzanto. La necesaj komandoj por establi la konekton kaj prepari Git por ĉi tiu dosierujo aspektas jene sub Linukso::

sudo apt-get install sshfs
mkdir /var/www/remote
cd /var/www/remote
sshfs username@your.host:/ -p 22 /var/www/remote
git config --global --add safe.directory /var/www/remote
git status
...
umount /var/www/remote

La problemo: La rendimento estas terura. Ĉar Git luktas kun komandoj kiel git status Kiam oni plenumas milojn da malgrandaj dosieroperacioj, ĉiu el kiuj postulas retaliron, oni ofte atendas minutojn eĉ por la plej simplaj respondoj. Produktiva laboro estas preskaŭ neebla sub tiaj cirkonstancoj. Precipe en projektoj kun multaj dependecoj, la terminalo ofte tute frostiĝas, devigante frustritajn uzantojn forlasi la procezon.

Bibliotekoj kiel ftpsh ekzistas ĝuste por ĉi tiu scenaro. Ĉi tiu biblioteko permesas al vi plenumi ŝelajn komandojn sur fora servilo, kiu nur ofertas (S)FTP kaj HTTP-aliron. La ruzo estas, ke PHP-skripto estas provizore alŝutita, kiu plenumas la donitajn komandojn kaj redonas la rezulton. Ĉio ĉi okazas en la fono, sed ŝajnas kiel vera ŝelo.

La instalado estas rapida kaj facila.:

mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh

Poste, ni kreas .env-dosieron kun la (S)FTP-alirdatumoj.:

HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"

Nun ni povas plenumi iujn ajn komandojn sur la servilo, kondiĉe ke la iloj estas haveblaj malproksime.:

ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql

La skripto alŝutas laboriston en la fono, plenumas la komandon loke sur la servilo (kie ĝi estas rapida), kaj redonas la rezulton. Ĉi tio ebligas efikan aŭtomatigon de deplojoj, datumbazaj elŝutoj, aŭ Git-operacioj, eĉ en limigitaj gastigaj medioj. Ĝi ankaŭ perfekte integriĝas kun syncdb por datumbaza sinkronigado.

Reen