Cygwin: Instalacja GitFlow i problem „błędu składni”

GIT

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

wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

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 39: $'\r': nie znaleziono polecenia
/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… ;)

Komentarze do "Cygwin: Instalacja GitFlow i problem „błędu składni”": (4)

  1. a nie prościej użyć dos2unix? jestem pewny że cygwin posiada to narzędzie

  2. 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.

  3. 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 :)

  4. 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

Skomentuj "Cygwin: Instalacja GitFlow i problem „błędu składni”":

Musisz się zalogować, aby móc dodać komentarz.