Skip to content

Commit

Permalink
ci: Add line endings check for CRLF in repository
Browse files Browse the repository at this point in the history
  • Loading branch information
projectgus authored and igrr committed Jul 12, 2018
1 parent dc09236 commit 74245d2
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 0 deletions.
14 changes: 14 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,20 @@ check_doc_links:
- cd docs
- make linkcheck

check_line_endings:
stage: deploy
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
tags:
- build
except:
- master
- /^release\/v/
- /^v\d+\.\d+(\.\d+)?($|-)/
dependencies: []
before_script: *do_nothing_before
script:
- tools/ci/check-line-endings.sh ${IDF_PATH}

check_commit_msg:
stage: deploy
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
Expand Down
15 changes: 15 additions & 0 deletions docs/en/contribute/style-guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,21 @@ Although not directly related to formatting, here are a few notes about using co
}


Line Endings
^^^^^^^^^^^^

Commits should only contain files with LF (Unix style) endings.

Windows users can configure git to check out CRLF (Windows style) endings locally and commit LF endings by setting the ``core.autocrlf`` setting. `Github has a document about setting this option <github-line-endings>`. However because MSYS2 uses Unix-style line endings, it is often easier to configure your text editor to use LF (Unix style) endings when editing ESP-IDF source files.

If you accidentally have some commits in your branch that add LF endings, you can convert them to Unix by running this command in an MSYS2 or Unix terminal (change directory to the IDF working directory and check the correct branch is currently checked out, beforehand)::

git rebase --exec 'git diff-tree --no-commit-id --name-only -r HEAD | xargs dos2unix && git commit -a --amend --no-edit --allow-empty' master

(Note that this line rebases on master, change the branch name at the end to rebase on another branch.)

For updating a single commit, it's possible to run ``dos2unix FILENAME`` and then run ``git commit --amend``

Formatting your code
^^^^^^^^^^^^^^^^^^^^

Expand Down
14 changes: 14 additions & 0 deletions tools/ci/check-line-endings.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/sh

if ! [ -z "$1" ]; then
cd "$1"
fi

echo "Checking for Windows line endings in `pwd`"

if git ls-tree --name-only -r HEAD | xargs file -N | grep CRLF; then
echo "Some files have CRLF (Windows-style) line endings. Please convert to LF (Unix-style). git can be configured to do this automatically."
exit 1
fi

exit 0
1 change: 1 addition & 0 deletions tools/ci/executable-list.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ docs/gen-kconfig-doc.py
tools/ci/apply_bot_filter.py
tools/ci/build_examples.sh
tools/ci/check-executable.sh
tools/ci/check-line-endings.sh
tools/ci/checkout_project_ref.py
tools/ci/get-full-sources.sh
tools/ci/mirror-submodule-update.sh
Expand Down

0 comments on commit 74245d2

Please sign in to comment.