ugrás a tartalomhoz

Git - config remote uploadpack nem működik

inf · 2012. Ápr. 29. (V), 07.56
Üdv.

Van egy kis gondom gittel. Feltettem ssh-n egy szerverre ezt a tutorialt követve, minden megy rajta, kivéve a push meg a pull. Az a kínja, hogy nem találja a receive és upload pack-eket.

Ha megadom neki az upload pack helyét, akkor megy:

git clone -u /path/of/remote/git-upload-pack <remote-repo> <local-dir>
Viszont ha a szerveren konfigolom be, akkor nem találja:

git config --global remote.origin.receivepack libexec/git-core/git-receive-pack
git config --global remote.origin.uploadpack libexec/git-core/git-upload-pack
Próbáltam abszolút útvonallal is, de ugyanaz az eredmény. Sajnos nem írja ki, hogy hol keresné, így debuggolni sem tudom. Van bármi ötletetek ezzel kapcsolatban, hogy miért hagyja figyelmen kívül a config-ot, vagy hogy esetleg hogyan tudnám debuggolni?
 
1

strace

janoszen · 2012. Ápr. 29. (V), 09.19
A strace parancs lesz a barátod. Strace-ld meg az SSH processt follow forkkal és akkor látod, hogy mit keres. Tutorial az én billentyűzetemből itt.
2

Köszi, amint lehet megnézem.

inf · 2012. Május. 1. (K), 19.39
Köszi, amint lehet megnézem.
3

Nem teljesen áll össze a kép

inf · 2012. Május. 12. (Szo), 18.12
Nem teljesen áll össze a kép ezzel az strace-el kapcsolatban.

Így próbálom lerántani a repot:

git clone user##kukac##domain.com:myrepo.git "c:/absolute/path/myrepo"
Na most nem tudom, hogy ebbe hogyan tudnám beilleszteni az strace-t, hiszen ez a saját git-emet hívja, és utána a saját git-em kommunikál a szerver git-jével. Szóval valahogyan a szerver git-jén kéne valahogyan elindítani a loggolást mielőtt meghívom itthonról. Na most ez több dolog miatt is zűrös, egyrészt azt sem tudom, hogy van e jogom hozzá, másrészt ha van is, akkor meg azt nem tudom, hogy melyik process-t vagy exe-t kéne megadnom figyelésre az strace-nek. Még jobban utánajárok a témának, aztán próbálkozom... Elsőnek mondjuk megnézem, hogy a szerver egyáltalán ismeri e az strace-t...

szerk:
strace - command not found
Szóval ez is egy szép menet lesz.

Nem igazán értem ezt az egészet, mert ha "-u" -val megadom az upload pack helyét, akkor a libexec/... -ot elfogadja, viszont ha abszolút útvonalat adok meg "-u"-val, akkor nem találja meg. Tehát azt gyanítom, hogy az abszolút útvonallal van valami, azért nem fekszik neki.

Közben megpróbáltam egy másik tutorial alapján is. Ugyanebbe a problémába ütköztem.

Na közben összeállt a kép, nagyjából az történhet, hogy az itthoni git-em felmegy ssh-val a szerverre, és elsüti a "git-upload-pack" parancsot valamilyen paraméterekkel. Azt kéne elérnem, hogy ez a parancs a jó helyre mutasson. Na most ha simán bash-al csinálom mindezt, akkor teljesen jól működik. Megnézem mindjárt mivan, ha kiszedem a .bash_profile-ból a dolgokat. (Gondolom akkor már nem ennyire rózsás a helyzet.)

Yepp, szóval azt kéne megoldani, hogy amikor a git felkapcsolódik a szerverre, akkor is betöltsön egy config fájlt, amiben beállítja a git cuccok helyét. Az strace sajnos ezen nem segít...

Egyik lehetőség, hogy beállítom az itthoni gépen git config-ban ezeket. Ezt néztem be előtte, mert azt hittem, hogy a szerveren kellene beállítani, ami talán részben igaz is, mert egy clone-nál gondolom a másolat is átveszi ezeket a beállításokat. Ez működik is, csak elég körülményes minden másolatot beállítani, meg egyelőre más gondjaim is vannak a repokkal.

A másik lehetőség, hogy valahogyan rávesszük a szerver-t, hogy amikor a git ssh-val felkapcsolódik betöltsön egy config fájlt, amivel beállítja a git parancsok helyét. Na ez az, aminek jobban utána kellene néznem, hogy mi történik a git kapcsolódáskor. A sima ssh-nál a .bash_profile töltődik be, viszont git kapcsolódáskor ez úgy néz ki valamiért kimarad. Ja csekkoltam, tényleg kimarad, és a .bashrc is... Gondolom mert a bash-t sem indítja el, vagy mi a szösz. Megpróbálom az authorized_keys-es tákolással megoldani, hogy betöltse a .bashrc-t, kíváncsi vagyok.
4

A elvettem azt a megoldást,

inf · 2012. Május. 16. (Sze), 23.03
A elvettem azt a megoldást, hogy a saját gépemen a repo beállításaiba tegyem bele a szerveren lévő upload pack helyét... Ez egyébként is elég abszurd volt, nagyon nem tetszett... A szerveren próbálkoztam elég sok fájllal, legtöbbje nem működött, egyedül a .ssh/rc volt, amit minden kérésnél beszúrt, de valami külön héjba, mert nem maradtak meg az ott beállított változók. Végül úgy döntöttem, hogy jobb, ha maradok a .ssh/authorized_key-nél, mert igaz, hogy oda be kell másolnom minden rsa regisztrációnál a kódot, de legalább az működik...

A megoldásom tehát:
~/.ssh/authorized_keys

command="~/connect.sh" ssh-rsa AAAAB3NzaC...
~/connect.sh

#!/bin/bash
if [ -f "${HOME}/.env_profile" ]; then
        source ~/.env_profile
fi;

if [ "x${SSH_ORIGINAL_COMMAND}x" == "xx" ]; then
        $SHELL --login
else
        eval "${SSH_ORIGINAL_COMMAND}"
fi;
~/.env_profile

export PATH=$PATH:$HOME/bin:$HOME/git/libexec/git-core
export LD_LIBRARY_PATH=$HOME/git/lib
export GIT_EXEC_PATH=~/git/libexec/git-core
export GIT_TEMPLATE_DIR=~/git/share/git-core/templates