windows - Git post-update hook kan ikke trække

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er i øjeblikket ved at oprette et git-skema som beskrevet her. [6]


Den pågældende server kører Windows Server 2008 R2, ved hjælp af copSSH og msysGit.


Jisten af ​​det er et par git repos: en ren repo, der er skubbet til og derefter en anden non-bare repo, der indeholder en live applikation.


Det repo, der skubbes til, indeholder en efter opdateringskrog, der ser ud som følger:


echo
echo "**** Pushing data to Live Server."
echo

cd /cygdrive/c/Repositories/Live || exit
unset GIT\_DIR
git pull hub master

exec git-update-server-info


Bemærk: Live er det ikke-bare repo, som, som navnet antyder, lever. Live.git er den bare repo, der indeholder ovennævnte krog og skubbes til. Jeg kunne ikke cd til repo uden/cygdrive/, som blev afdækket ved at ekko $ pwd i et diagnostisk push.


Træk er vellykket kaldet i Live repo, problemet kommer i at finde frem til Live.git repo i den opdatering. Jeg får 'ulige bold' fejl, der læser som:


remote: Pushing data to Live Server.ommand not foundnd not foundle or directory
remote: : not foundpdate-server-infoand not foundand not founddommand not found


hub er defineret som et fjernbibliotek via den lokale git shell som både/c/Repositories/Live.git og/cygdrive/c/Repositories/Live.git.


Jeg har erstattet 'hub' med direkte mappestier, endda forsøger ting som '../Live.git'
Alt, hvad jeg har forsøgt, er afsluttet i en git-opdateringsfejl. Alle forsøgsporene til Live.git i opdateringskommandoen blev forsøgt via en git bash med arbejdskataloget sat til Live repo og fungerede.


Tak for ledninger eller hjælp!





En opdatering:
Mit skema kræver, at jeg trækker fra navbiblioteket, det ville tage en unødvendig plads til at forklare hvorfor, men sådan er tilfældet.


Jeg har gjort mere test og fundet mere ud af mit problem:
Når jeg skubber via SSH til mit lager, er den primære nav monteret korrekt, og pull kommandoen udføres. Når den nævnte pull-kommando forsøger at løse navbiblioteket, fejler den (som jeg har beskrevet ovenfor), men det viser sig med en række ls kommandoer i krogen, at ingen mapper kan ses. Jeg løb endda en ls på/cygdrive/c/og kan kun se en mappe kaldet usr. Jeg har sikret, at copSSH-brugeren har fulde administrative rettigheder på hele filsystemet (kun til test og fejlsøgning).


Jeg ved ikke, hvorfor mine stier skal bruge/cygdrive/stien, jeg har ikke cygwin installeret udover cygwin pakket i copSSH. Er det tegn på et problem i min konfiguration? eller er det normalt for copSSH + msysGit opsætninger? Hvordan er det muligt, at jeg kan montere primærarkivet fra krogen, selvom ls ikke vil oplyse arkiveringsmappen?

Bedste reference


Du behøver ikke /cygdrive i stier med msysgit, medmindre du også har cygwin installeret (i så fald kan kombinationen af ​​msysgit mingw og cygwin være kilden til dit problem)

Andre referencer 1


Du bør ikke forsøge at køre git pull fra en repokrog. Mens nogle mennesker vil sige, at det fungerer fint, gør det ikke, og adfærden kan være uforudsigelig på grund af forskellige faktorer.


I stedet skal du bruge en metode som denne. http://toroid.org/ams/git-website-howto[7]


Denne metode bruger en post-modtagerkrog i et bare repo, der kalder git checkout for at opdatere en mappe.