We all have been there… For the beginner it’s easy to mess things up. What are your horror stories with Git?

Link to xkcd

  • JackbyDev
    link
    fedilink
    English
    arrow-up
    5
    ·
    1 year ago

    Alright, currently dealing with a CRLF issue from hell. The .gitattributes file says bat files should have CRLF endings but some template we use with backstage and cookiecutter makes the gradlew.bat file end up with CRLF line endings in the repository. Quick aside, whenever git is handling line ending conversions it sotres LF line endings inside the blobs then makes them CRLF on checkout. In the template repository everything is correct. But for some reason when you run the template the batch file has CRLF line endings in the repository.

    Why does this matter? Because you’ll have a totally fresh untouched repo and git will report a change in a file. You’llook at the doff and not see what is going on. Because you made no change. But git is trying to fix the problem of CRLF being in the repo when the attributes file says it needs to control the line endings.

    You have to use the git cat-file command to see what is in the blob.

    Yesterday I thought I narrowed it down to the Node project isomorphic-git but it actually seems to handle it correctly but I’m still suspicious.

    Any advice is appreciated lol

    • whats_all_this_then
      link
      fedilink
      English
      arrow-up
      3
      ·
      edit-2
      1 year ago

      I’ve had a similar issue before and the problem was that I had made the repo on linux, worked on it a bunch, copied it over to a different PC running windows, then copied it back. Found this on stackoverflow and it fixed it for me, but I’ve only tested it on linux (probably won’t work on windows because grep). Hopefully it helps:

      git diff -p -R --no-ext-diff --no-color | grep -E \"^(diff|(old|new) mode)\" --color=never | git apply

      • JackbyDev
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        That’s the weird thing, everyone here uses Mac and the server running the template is Linux so this isn’t a case of a Windows user forgetting to set autocrlf and even then it is in the git attributes file.