BaseTools/Scripts/PatchCheck.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-)
https://bugzilla.tianocore.org/show_bug.cgi?id=2484
https://bugzilla.tianocore.org/show_bug.cgi?id=2485
Update PatchCheck to not enforce no tabs and not enforce CR/LF
line endings for .gitmodules files. These files are updated by
git when a git submodule command is used and the updates by git
use tab characters and LF line endings.
Also update patch check to not enforce CR/LF line endings for
patch lines that create a submodule directory. These patch
lines use LF line endings. The git submodule directory is
added as a new file with attributes 160000 that can be detected
by looking for the pattern "new file mode 160000".
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
BaseTools/Scripts/PatchCheck.py | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/BaseTools/Scripts/PatchCheck.py b/BaseTools/Scripts/PatchCheck.py
index 173d4517e0..6823cc69bb 100755
--- a/BaseTools/Scripts/PatchCheck.py
+++ b/BaseTools/Scripts/PatchCheck.py
@@ -341,7 +341,21 @@ class GitDiffCheck:
self.state = PRE_PATCH
self.filename = line[13:].split(' ', 1)[0]
self.is_newfile = False
- self.force_crlf = not self.filename.endswith('.sh')
+ self.force_crlf = True
+ self.force_notabs = True
+ if self.filename.endswith('.sh'):
+ #
+ # Do not enforce CR/LF line endings for linux shell scripts.
+ #
+ self.force_crlf = False
+ if self.filename == '.gitmodules':
+ #
+ # .gitmodules is updated by git and uses tabs and LF line
+ # endings. Do not enforce no tabs and do not enforce
+ # CR/LF line endings.
+ #
+ self.force_crlf = False
+ self.force_notabs = False
elif len(line.rstrip()) != 0:
self.format_error("didn't find diff command")
self.line_num += 1
@@ -355,6 +369,11 @@ class GitDiffCheck:
self.binary = True
if self.is_newfile:
self.new_bin.append(self.filename)
+ elif line.startswith('new file mode 160000'):
+ #
+ # New submodule. Do not enforce CR/LF line endings
+ #
+ self.force_crlf = False
else:
ok = False
self.is_newfile = self.newfile_prefix_re.match(line)
@@ -429,7 +448,7 @@ class GitDiffCheck:
if self.force_crlf and eol != '\r\n':
self.added_line_error('Line ending (%s) is not CRLF' % repr(eol),
line)
- if '\t' in line:
+ if self.force_notabs and '\t' in line:
self.added_line_error('Tab character used', line)
if len(stripped) < len(line):
self.added_line_error('Trailing whitespace found', line)
--
2.21.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#53457): https://edk2.groups.io/g/devel/message/53457
Mute This Topic: https://groups.io/mt/70058310/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
On 01/24/20 00:10, Michael D Kinney wrote:
> https://bugzilla.tianocore.org/show_bug.cgi?id=2484
> https://bugzilla.tianocore.org/show_bug.cgi?id=2485
>
> Update PatchCheck to not enforce no tabs and not enforce CR/LF
> line endings for .gitmodules files. These files are updated by
> git when a git submodule command is used and the updates by git
> use tab characters and LF line endings.
>
> Also update patch check to not enforce CR/LF line endings for
> patch lines that create a submodule directory. These patch
> lines use LF line endings. The git submodule directory is
> added as a new file with attributes 160000 that can be detected
> by looking for the pattern "new file mode 160000".
>
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
> ---
> BaseTools/Scripts/PatchCheck.py | 23 +++++++++++++++++++++--
> 1 file changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/BaseTools/Scripts/PatchCheck.py b/BaseTools/Scripts/PatchCheck.py
> index 173d4517e0..6823cc69bb 100755
> --- a/BaseTools/Scripts/PatchCheck.py
> +++ b/BaseTools/Scripts/PatchCheck.py
> @@ -341,7 +341,21 @@ class GitDiffCheck:
> self.state = PRE_PATCH
> self.filename = line[13:].split(' ', 1)[0]
> self.is_newfile = False
> - self.force_crlf = not self.filename.endswith('.sh')
> + self.force_crlf = True
> + self.force_notabs = True
> + if self.filename.endswith('.sh'):
> + #
> + # Do not enforce CR/LF line endings for linux shell scripts.
> + #
> + self.force_crlf = False
> + if self.filename == '.gitmodules':
> + #
> + # .gitmodules is updated by git and uses tabs and LF line
> + # endings. Do not enforce no tabs and do not enforce
> + # CR/LF line endings.
> + #
> + self.force_crlf = False
> + self.force_notabs = False
> elif len(line.rstrip()) != 0:
> self.format_error("didn't find diff command")
> self.line_num += 1
> @@ -355,6 +369,11 @@ class GitDiffCheck:
> self.binary = True
> if self.is_newfile:
> self.new_bin.append(self.filename)
> + elif line.startswith('new file mode 160000'):
> + #
> + # New submodule. Do not enforce CR/LF line endings
> + #
> + self.force_crlf = False
> else:
> ok = False
> self.is_newfile = self.newfile_prefix_re.match(line)
> @@ -429,7 +448,7 @@ class GitDiffCheck:
> if self.force_crlf and eol != '\r\n':
> self.added_line_error('Line ending (%s) is not CRLF' % repr(eol),
> line)
> - if '\t' in line:
> + if self.force_notabs and '\t' in line:
> self.added_line_error('Tab character used', line)
> if len(stripped) < len(line):
> self.added_line_error('Trailing whitespace found', line)
>
https://github.com/git/git/blob/master/Documentation/technical/index-format.txt
32-bit mode, split into (high to low bits)
4-bit object type
valid values in binary are 1000 (regular file), 1010 (symbolic link)
and 1110 (gitlink)
3-bit unused
9-bit unix permission. Only 0755 and 0644 are valid for regular files.
Symbolic links and gitlinks have value 0 in this field.
Octal 160000 is E000 hexadecimal. That makes the unused bits and the unix permission bits (12 bits in total) zero, and 0xE is 1110 binary, so the object type is "gitlink".
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Thanks
Laszlo
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#53472): https://edk2.groups.io/g/devel/message/53472
Mute This Topic: https://groups.io/mt/70058310/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.