git - MySQLDump fra eksekverbar på Windows 7

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøgte at dumpe en mysql database med at kalde en wsh jscript fil, men det virker ikke.


Jeg har denne kode, kaldet med git shell, og det virker perfekt:


# If something fails, exit with status other than 0
set -e

# select dump directory
cd "$(git rev-parse --show-toplevel)"

# first, remove our original schema
rm -f "WebShopDataBaseackup.sql"

# generate a new schema
exec "C:Program FilesMySQLMySQL Server 5.5inmysqldump.exe" --skip-comments -u root --password=root webshopdb |sed 's$),($),
($g' > "WebShopDataBaseackup.sql"


Jeg forsøgte næsten den samme kode i WSH, men den returnerer kun med overskriften til dumpfilen og skaber ikke filen. Jeg har ikke en anelse om, hvad der virker forkert, eller hvordan man debugger koden ...: S


var shellObj = WScript.CreateObject('WScript.Shell');
var exec = shellObj.Exec(
    '"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe"'+
    " --skip-comments -u root --password=root webshopdb |sed 's$),($),\n($g' > " + 
    '"D:\creation\software developer\projects\webshop-refactoring-project\document root\WebShop\DataBase\backup.sql"'
);
WScript.Echo(exec.StdOut.ReadAll());


Jeg prøvede også med flagermusfiler og cmd-filer, men de kan ikke håndtere rummet i stierne.


Kan nogen hjælpe?


(For mig ville det være nok at gøre en eksekverbar fra git-koden eller gøre wsh-arbejdet ... Den perfekte løsning ville være, hvis jeg kunne kalde dumpet fra netbeans, men i livet er intet så ideelt ...: D)

Bedste reference


Jeg lavede det med filforening.


Jeg oprettede en git.bat-fil:


if not exist \%1 exit
set bash=C:Program Files (x86)Gitinash.exe
"\%bash\%" --login -i -c "exec "\%1""


Og tilknyttet det til .hook filer.


Derefter oprettede jeg en test dump.hook-fil:


#!/bin/sh
cd "D:/creation/software developer/projects/webshop-refactoring-project/document root/WebShop";
cd "$(git rev-parse --show-toplevel)"
rm -f "WebShop/DataBase/backup.sql"
exec "C:/Program Files/MySQL/MySQL Server 5.5/bin/mysqldump.exe" --skip-comments -u root --password=root webshopdb |sed 's$),($),
($g' > "WebShop/DataBase/backup.sql"
exit


Og det virker perfekt.


Efter 3 dage fik jeg det! Woohoo! : D


Bemærk: * Windows kommandoprompt har normalt problemer med whitespace og specialtegn i stienavnet, så det er meget nemmere at bruge den emulerede Linux af git, end forsøge at rette den. Det er muligt at kilde .hook filen til en forudindstillet git kroge også, så det kan automatisk dumpe databaseskemaet ved hver commit ... (måske git tilføj ikke fungerer af disse filer, jeg har ikke fundet en auto dump og commit løsning endnu: git pre-commit + mysqldump: kan ikke finde sti, ikke eksisterende kommando) *