git bzr szerű használata lehetséges?

Fórumok

Üdv

Több kisebb-nagyobb projectnél használtam már bazaar-t, főleg mert nem találtam mást. Itt olyan esetekre kell gondolni, hogy kisebb weboldal, ahová csak egy szem ftp/sft hozzáférést kaptam, semmi egyebet, de nem akartam lemondani a verziókezelésről. Ugyanis bzr tud olyat, hogy szerverre telepítés nélkül tud remote repositoryt létrehozni-használni (upload pluginnel), mintha csak scp-znék.Vagyis ilyen esetekben ez úgy néz ki hogy

bzr init
bzr add
bzr commit
<eddig local, most jön a push>
bzr push sftp://iksz@ipszilon.ize
<branch.conf-ba megadom ezt az útvonalat>
bzr upload
<itt feltolja az egészet>

Ezek után csak bzr update és bzr commit kell, és fel-le mennek a fájlok, változások, add, uncommit, diff, minden, teljesen jól használható.

Illetve... ezért írok most ide, mert néha eszméletlen lassú, meg egyéb bajai is szoktak lenni. Lehet megnéznék másokat is, hátha.

Rögtön jött a kézenfekvő git, hiszen ez folyik mindenhonnan, meg hogy decentralizált meg minden. De akárhány leírást néztem, mindenhol volt egy olyan rész a remote repo beállításnál, hogy "a szerveren adjuk ki a git init", ... na ez innen már nem is jó, nincs szerverhozzáférés, vagyis git-telepítés semmiképp (teoretikusan). Valahol írtak olyat, hogy localban csinálok egy git init --bare -t majd ezt felmásolom akár sima scp-vel a szerverre, és ha git remote add -al hozzáadom akkor milyen jól megy, de nem megy, 'bash: git-receive-pack command not found', nyilván, a távoli gépen nincs git.

Vagy valamit félreértek? Nyilván, különben menne, én meg nem írnék ide. :)

Tehát a kérdésem az, hogy megoldható-e a git bazaar-szerű használata? A git-bash és társait egyelőre hagynám, akárcsak a github, heroku, és más ilyen jellegű megoldásokat. A célom mindössze annyi, hogy egy git telepítése után tudom-e használni a megszokott módon, vagy mindenképpen egyéb programok/scriptek/külső szolgáltató, akármi kell hozzá?

Köszönöm előre is, remélem érthető voltam. :)

(még a mercurial jöhet szóba, azt hiszem az is tud ilyet, de most a git-nek adnék egy esélyt, ha tudok)

Hozzászólások

Ez engem is erdekel, mercurial-ra.

A git is tud már olyan szerverre pusholni, ahova nincs telepítve. „git help push” segít, „GIT URLS” rész.

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
rand() a lelke mindennek! :)

Sajnos nem megy, a git init, majd git add, git commit után ha próbálkozom egy git push ftp:/.... - vel, ezt kapom:


~$ git push --set-upstream ftp://*******/GITREPO/gitteszt.git master
fatal: unable to access 'ftp://*********gitteszt.git/': RETR response: 550

Ha ssh-n keresztül próbálom, megkapom a "bash: git-upload-pack: command not found"-ot, ami a nagy G szerint attól van, mert nincs benne az ssh által látott path-ban a /usr/bin, pl. Persze, benne van, csak nincs git-upload-pack, hiszen _nincs_ git a szerveren. :) Innen indult az egész.

Igen, úgy emlékeztem, hogy ez megy, de akkor mégsem. Viszont a „git ftp push” kulcsszóra keresve jönnek érdekes dolgok, pl. ez: https://github.com/git-ftp/git-ftp

Azt viszont neked kell tudnod, hogy ez az FTP mennyire fontos. Én inkább fognék egy Dropboxot vagy más hasonlót, csinálnék bele egy bare repót és abba pusholnék. Akivel pedig meg akarom osztani, azzal a könyvtárat osztanám meg.

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
rand() a lelke mindennek! :)

Igen, ezt megtaláltam, valamint van ennek python-os megfelelője, találtam leírást apache+webdav megoldásra, van pár script transmithez, meg talán netbeanshez, ssh-t sshfs-el vagy bármi mást bármifuse-al felcsatolhatok egy könyvtárba ...rendben, értem én hogy meg lehet valahogy patkolni.

A kérdésem az továbbra is, hogy lehet-e úgy használni, ahogy szeretném, egyszerűen, szerveroldal nélkül feltolja a kódot és a metaadatait valahová, és használja mintha localban lenne.
Az ftp (vagy ssh) push bizonyos esetekben egy baromi kényelmes megoldás volt, ezért akartam ezt a feature-t legjobban, de kezdem úgy látni hogy nem lesz jó. Ettől függetlenül nem hagyom abba a megismerését, csak kár hogy pont ezt nem megy. Tudom, az ftp felett eljárt az idő, de volt, (és még most is simán van), amikor nincs más, és nem is kifejezetten indokolt bonyolultabb megoldás. (Mármint az ügyfél szerint.. ;) )

Valahol írták, hogy a legnagyobb különbség a bzr/hg és a git között, hogy az előbbik "csak" alkalmazások, de a git egy verziókezelésre képes fájlrendszer. Talán a filozófia miatt van az egész.

szerintem egyszerűbb, ha használsz egy git bare repót lokálisan, azt pedig rsync-eled a szervereddel

Egyszerűbb, ha csinálsz egy ftp.conf fájlt (ebben vannak hozzáférési adatok, lehet .gitignore -ba rakni) és egy pár soros push.sh bash fájlt amibe szinkronizálsz.

Valami ilyesmi:

ftp.conf:

HOST=ftp.szolgaltato.hu
USER=user
PASSWORD=password

push.sh:

#!/bin/bash
source ./ftp.conf
lftp -e "mirror -x ftp.conf -R ./; exit" -u $USER,$PASSWORD $HOST

A gitnek eleg egy webdav tamogatas szerveroldalra, es akkor siman tudsz http-re pusholni. Ellentetben peldaul az SVN-nel, a gitnek nem kell specialis DAV plugin a mukodeshez, barmely olyan szerver/szolgaltato megteszi, ahol van DAV eleres.

A git workflow nyilvan egy picit mas:


git init
git add . 
git commit -m "initial commit"
git remote add origin http://x:y@hostja.com/ez/itten/az/url/pathje
git push -u origin master

Es innentol mar csak a git commit / git push parancsokkal kell operalni. Amiben nem vagyok biztos, hogy a userneves login megadas mukodik-e, amennyiben nem, akkor a netrc-be kell beletolni a megfelelo sorokat, es akkor siman eleg csak a hostnevtol megadni az url-t.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

Ne teveszd ossze a gitet az svn-nel vagy a mercuriallal. Hg eseteben valoban erosen ajanlott az altaluk szallitott HTTP szervert hasznalni, viszont Git eseteben tenyleg csak egy sima DAV tamogatas kell.

Amennyire tudom, az utobbi idokben mar a git update-server-info futtatasa sem kotelezo.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

én nem tévesztem össze, csak amíg ilyeneket látok a webszerver logjában, hogy

"GET /dav/info/refs?service=git-receive-pack HTTP/1.1"

addig azt kell gondolnom, hogy ha a git-receive-pack nincs ott a szerveren, akkor nem fog menni.
Ugyanúgy, ahogy ssh-val is szükséges a szerveren a git.

Szóval, elolvastam ezt: http://git-scm.com/book/en/Git-on-the-Server-The-Protocols
Ott azt írják, hogy olvassam el ezt: https://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server…
Ott pedig azt írják, hogy: "either have git installed on the server or have a webdav client on the client."

Tehát csak úgy fog működni szerver oldalon nem létező git-tel, hogy van valami webdav client.

Továbbá pedig teljesítménye http-n elég gyenge. Ugyanúgy, mintha egy network share-en lenne a remote git repo.