Cygwin: Instalacja GitFlow i problem „błędu składni”
O tym, czym tak naprawdę jest Git-Flow postaram się napisać kiedy indziej. Dzisiaj przejdę do konkretów – jak go zainstalować na Cygwinie i rozwiązać ewentualny problem z „błędem składni” pliku wykonywalnego.
Instalacja pakietu Git-Flow opisana jest bardzo telegraficznie na githubowym wiki projektu. Wprawdzie podkreślone jest, że wymagane są pakiety git, util-linux i wget, ale jedno nie jest sprecyzowane – że komenda
która instaluje Git-Flow jednocześnie klonuje repozytorium do miejsca, w którym została wywołana. Warto więc odpalić ją tam, gdzie chcemy, by takie repo się zadomowiło.
Jeśli wykonamy git flow
i ukaże się usage: git flow <subcommand>
z całą resztą opisu pakietu, to znaczy, że wszystko poszło dobrze i możemy korzystać z dobrodziejstw git-flow. Jednak nie zawsze jest tak kolorowo…
Jeśli będziemy mieć pecha (a w przypadku instalacji wyżej opisanym sposobem, jest to bardzo prawdopodobne), to przy próbie użycia git-flow ujrzymy nieprzyjemny komunikat:
/usr/local/bin/git-flow: line 52: błąd składni przy nieoczekiwanym znaczniku `$'{\r''
'usr/local/bin/git-flow: line 52: `usage() {
Co ciekawe, nie jest to żaden błąd składni, a jedynie… nieprawidłowe znaki końca linii! Nie sądzę by w oryginalnych plikach stosowane były windowsowe zakończenia \r\n
(autor Git-Flow, Vincent Driessen, z tego co kojarzę nie dotyka się produktów Microsoftu), więc być może pojawiają się one w momencie klonowania repozytorium. Fakt faktem, że chcąc wyeliminować pokazany powyżej błąd musimy w każdym pliku pakietu git-flow (zainstalowane w C:\cygwin\usr\local\bin
) zamienić znaki końca linii na unixowe \n
. Można to zrobić na różne sposoby, w tym przypadku polecam dos2unix.
I nagle okazuje się, że żadnych błędów składni nie ma… 😉
Kategoria:Programowanie, Użyteczne
Przekaż dalej:
a nie prościej użyć dos2unix? jestem pewny że cygwin posiada to narzędzie
Metoda zamiany znaków końca linii to raczej sprawa drugorzędna – zapewne można to zrobić na tysiące sposobów 😉 Istotne jest to, że w ogóle problem „składni” nie jest tym, na co wygląda. Napotkałem go już drugi raz i tym razem rozwiązałem – na dniach wrócę więc do poprzedniego tematu i będzie materiał na kolejną notkę 😉 A tu po prostu upiekłem dwie pieczenie na jednym ogniu i przy okazji pokazałem jak Eclipse i NetBeans można manipulować separatorami wierszy.
Ale może wydzielę to do osobnej notki w wolnej chwili, to będzie do wykorzystania w innych notkach, w których przewinie się ten problem 🙂
Problem jest trochę inny, clonują repo git skorzystał z opcji core.autocrlf=true, ustaw na false (najbezpieczniejsze ustawienie) reclone repo i powinno rozwiązać problem generalnie.
Pzdr